This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| navody:server:firewall [2015/11/26 11:54] – firewalld b42 | 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á. | ||
| - | |||
| - | {{: | ||
| - | |||
| - | Při prvotních hrátkách s firewallem je možné, že si neopatrným zásahem odříznete cestu k VPS. Nepanikařte a přejděte na návod k [[navody: | ||
| - | |||
| - | ===== 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 vysypat cíleně a zbavit se veškerého nastavení, použijte | ||
| - | |||
| - | | ||
| - | |||
| - | Pokud naopak potřebujete pravidla 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: | ||
| - | |||
| - | shorewall check | ||
| - | | ||
| - | Pokud potvrdí '' | ||
| - | |||
| - | shorewall start|stop|restart|... | ||
| - | |||
| - | Další užitečné příkazy: | ||
| - | | ||
| - | shorewall status | ||
| - | shorewall show | ||
| - | shorevall safe-start | ||
| - | shorewall safe-restart | ||
| - | |||
| - | Odkazy: [[http:// | ||
| - | |||
| - | ===== FirewallD ===== | ||
| - | |||
| - | FirewallD v defaultním nastavení na CentoOS7 na vpsFree nefunguje - pokud jej zapnete bez následujícího kroku, nejspíš se pak nebudete moct na svou VPS připojit přes SSH. Je potřeba v konfiguráku ''/ | ||
| - | |||
| - | IPv6_rpfilter=no | ||