This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
navody:server:firewall [2015/10/14 12:40] – krcmar | navody:server:firewall [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Firewall ====== | ||
- | Firewall slouží pro filtraci provozu na VPS a z něj. Pomocí něj je možné nastavovat pravidla pro konkrétní pakety, které jsou propouštěny na základe různých parametrů jako jsou zdrojová a cílová IP adresa, zdrojový či cílový port a podobně. | ||
- | |||
- | Linuxové jádro obsahuje firewall zvaný Netfilter, který je obsluhován pomocí utility '' | ||
- | |||
- | Na našem VPS je v každém případě nejprve potřeba povolit podporu iptables. V detailu VPS je potřeba zapnout podporu iptables a potvrdit. Dojde k restartu VPS a podpora je zapnutá. | ||
- | |||
- | {{: | ||
- | |||
- | ===== IPtables ===== | ||
- | |||
- | Současný stav je možné zjistit pomocí | ||
- | |||
- | iptables -L | ||
- | | ||
- | Výstup bude vypadat pravděpodobně nějak takto | ||
- | |||
- | < | ||
- | target | ||
- | |||
- | Chain FORWARD (policy ACCEPT) | ||
- | target | ||
- | |||
- | Chain OUTPUT (policy ACCEPT) | ||
- | target | ||
- | | ||
- | Ve výpisu jsou zobrazeny tři řetězce (chain): vstup, průchod a výstup. V nich v současné době nejsou žádná pravidla, která by regulovala průchod paketů. V takovém případě se uplatňuje výchozí politika (policy), která je ve všech třech případech nastavena na „povol“ (ACCEPT). Všechny pakety tedy nyní projdou bez filtrace. | ||
- | |||
- | < | ||
- | |||
- | Je čas naučit náš firewall nějaká pravidla. Jejich syntaxe je následující: | ||
- | |||
- | řetězec pravidlo akce | ||
- | |||
- | Každé pravidlo musí patřit do nějakého řetězce, na procházející paket se pak aplikuje pravidlo a v případě vyhovění se provede akce. Tedy například: | ||
- | |||
- | iptables -A INPUT -p tcp --dport 80 -j ACCEPT | ||
- | |||
- | Takto můžete ručně zapsat různá pravidla a sledovat chování. Takto zapsaná pravidla ale **nejsou perzistentní** a po restartu vašeho VPS zmizí. Pokud je potřebujete zachovat, zapište je například do souboru ''/ | ||
- | |||
- | <note important> | ||
- | |||
- | < | ||
- | |||
- | # Pusť veškerý loopback (lo0) provoz a zahoď provoz z 127/8, který nepochází z rozhraní lo0 | ||
- | -A INPUT -i lo -j ACCEPT | ||
- | -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT | ||
- | |||
- | # Propusť všechen provoz už navázaných spojení | ||
- | -A INPUT -m state --state ESTABLISHED, | ||
- | |||
- | # Povol veškerý odchozí provoz | ||
- | -A OUTPUT -j ACCEPT | ||
- | |||
- | # Otevři příchozí porty pro HTTP a HTTPS | ||
- | -A INPUT -p tcp --dport 80 -j ACCEPT | ||
- | -A INPUT -p tcp --dport 443 -j ACCEPT | ||
- | |||
- | # Povol veškerá spojení na SSH | ||
- | -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT | ||
- | # Povol spojení jen z mé IP adresy | ||
- | # -I INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT | ||
- | |||
- | # Zakaž všechno ostatní, co prošlo až sem. | ||
- | -A INPUT -j REJECT | ||
- | -A FORWARD -j REJECT | ||
- | |||
- | COMMIT | ||
- | </ | ||
- | |||
- | Takový konfigurační soubor je možné získat i tak, že uložíte aktuální pravidla zapsaná právě ve firewallu. Pokud jste tedy pravidla zadali ručně z řádky, můžete si je všechna uložit: | ||
- | |||
- | iptables-save > / | ||
- | |||
- | Stejně tak je možné obsah souboru znovu načíst do jádra: | ||
- | |||
- | iptables-restore < / | ||
- | |||
- | Pokud chcete, aby se tento příkaz spouštěl při startu systému a tedy aby se při startu VPS načetla všechna zadaná pravidla, zapište do souboru ''/ | ||
- | |||
- | < | ||
- | / | ||
- | |||
- | Soubor pak učiňte spustitelným: | ||
- | |||
- | chmod +x / | ||
- | |||
- | Od této chvíle se při startu serveru aplikují firewallová pravidla podle vašich přání. | ||
- | |||
- | ===== Shorewall ===== | ||
- | |||
- | Nastavení firewallu se dělá pomocí balíku // | ||
- | |||
- | apt-get install shorewall | ||
- | cd / | ||
- | |||
- | |||
- | **/ | ||
- | |||
- | Nastavení zón ($FW v ostatních souborech se automaticky nahrazuje " | ||
- | |||
- | #ZONE | ||
- | # | ||
- | fw firewall | ||
- | net ipv4 | ||
- | vpn ipv4 | ||
- | |||
- | |||
- | **/ | ||
- | |||
- | Tohle je nastaveni implicitních akcí (vyhodnocuje se v zadaném pořadí!). | ||
- | |||
- | # | ||
- | # | ||
- | | ||
- | # povol spojeni "ze serveru na internet" | ||
- | $FW | ||
- | | ||
- | # zahod vsechno "z internetu na server" | ||
- | net | ||
- | | ||
- | # odmitni vsechno "z vpn na internet" | ||
- | vpn | ||
- | | ||
- | # povol vsechno ostatni "z vpn" | ||
- | vpn | ||
- | | ||
- | # The FOLLOWING POLICY MUST BE LAST | ||
- | all | ||
- | |||
- | |||
- | **/ | ||
- | |||
- | FORMAT 2 | ||
- | ############################################################################### | ||
- | #ZONE | ||
- | net | ||
- | vpn tun0 | ||
- | |||
- | **/ | ||
- | |||
- | Tady se nastavují jednotlivá pravidla, kterými se pak firewall řídí. V následujícím souboru jsou v komentářích vysvětleny jendotlivé příklady. | ||
- | |||
- | # | ||
- | # | ||
- | #SECTION ALL | ||
- | #SECTION ESTABLISHED | ||
- | #SECTION RELATED | ||
- | SECTION NEW | ||
- | | ||
- | # povoleni SSH sluzby pro klienty z internetu | ||
- | | ||
- | ACCEPT | ||
- | # - pro urcitou IP adresu | ||
- | # | ||
- | # - pro skupinu IP adres (subnet) | ||
- | # | ||
- | | ||
- | # OpenVPN | ||
- | ACCEPT | ||
- | ACCEPT | ||
- | | ||
- | # WEB | ||
- | ACCEPT | ||
- | ACCEPT | ||
- | |||
- | **/ | ||
- | |||
- | V tomto souboru je potřeba Shorewallu říci, že má začít pracovat a načítat konfigurační soubory. | ||
- | |||
- | startup=1 | ||
- | |||
- | |||
- | Poté můžeme nechat Shorewall zkontrolovat konfiguraci: | ||
- | |||
- | / | ||
- | | ||
- | Pokud potvrdí '' | ||
- | |||
- | / | ||
- | |||
- | Další užitečné příkazy: | ||
- | | ||
- | shorewall status | ||
- | shorewall show | ||
- | shorevall safe-start | ||
- | shorewall safe-restart | ||
- | |||
- | Odkazy: [[http:// |