This is an old revision of the document!
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 iptables
. Tento přístup je nízkoúrovňový a umožňuje nastavit velké množství různých parametrů a variant. Pohodlnější variantou je například nadstavba Shorewall, což je sada skriptů, které dovolují pravidla pro Netfilter z jednodušších konfiguračních souborů.
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á.
Současný stav je možné zjistit pomocí
iptables -L
Výstup bude vypadat pravděpodobně nějak takto
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
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.
Nastavení firewallu se dělá pomocí balíku shorewall.
apt-get install shorewall cd /etc/shorewall
/etc/shorewall/zones
Nastavení zón ($FW v ostatních souborech se automaticky nahrazuje “fw”).
#ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4 vpn ipv4
/etc/shorewall/policy
Tohle je nastaveni implicitních akcí (vyhodnocuje se v zadaném pořadí!).
#SOURCE DEST POLICY LOG LIMIT: CONNLIMIT: # LEVEL BURST MASK # povol spojeni "ze serveru na internet" $FW net ACCEPT # zahod vsechno "z internetu na server" net all DROP info # odmitni vsechno "z vpn na internet" (aby si vpn klienti nebrouzdali pres server) vpn net REJECT info # povol vsechno ostatni "z vpn" vpn all ACCEPT # The FOLLOWING POLICY MUST BE LAST all all REJECT info
/etc/shorewall/interfaces
FORMAT 2 ############################################################################### #ZONE INTERFACE OPTIONS net venet0 tcpflags,logmartians,nosmurfs vpn tun0
/ets/shorewall/rules
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.
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH # PORT PORT(S) DEST LIMIT GROUP #SECTION ALL #SECTION ESTABLISHED #SECTION RELATED SECTION NEW # povoleni SSH sluzby pro klienty z internetu ACCEPT net $FW tcp ssh # - pro urcitou IP adresu #ACCEPT net:78.80.8.27 $FW tcp ssh # - pro skupinu IP adres (subnet) #ACCEPT net:81.25.21.0/24 $FW tcp ssh # OpenVPN ACCEPT net $FW udp 1194 ACCEPT $FW net udp - 1194 # WEB ACCEPT all all tcp 80 ACCEPT all all tcp 443
/etc/default/shorewall
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:
/etc/init.d/shorewall check
Pokud potvrdí Configuration Validated
, můžeme ho spustit
/etc/init.d/shorewall start|stop|restart|...
Další užitečné příkazy:
shorewall status shorewall show shorevall safe-start shorewall safe-restart