Základní otázkou je, zda má vůbec smysl zabezpečovat počítač, který není k Internetu připojen stabilně a kde je tedy riziko napadení menší. Jakmile se ale nad tímto problémem zamyslíme hlouběji, zjistíme, že ono riziko je sice menší, ale jenom přesně o tolik, o kolik je připojení k síti kratší. V dnešní době, kdy se namísto cílených útoků na počítače stále více rozmáhají metody, kdy útočník testuje víceméně náhodné rozsahy IP adres na známé chyby, jistě má smysl zabývat se i zabezpečením vašeho osobního počítače.
Na místě je i otázka, nakolik je nezbytné k takovému zabezpečení použít paketový firewall. Přísně vzato, při použití dostatečně důsledných bezpečnostních zásad – tj. budeme sledovat a okamžitě zahlazovat známé bezpečnostní problémy, budeme mít aktivované pouze nezbytně nutné služby, které navíc budou poslouchat jen na potřebných rozhraních atd. – bychom mohli zajistit solidní míru bezpečnosti i bez firewallu. Protože však nikdo z nás, tím méně žádný z našich programů, není stoprocentní a může se stát, že nám něco unikne, je velmi vhodné tyto bezpečnostní zásady doplnit ještě vlastním firewallem. Už proto, že jeho konfigurace není díky iptables nijak zvlášť obtížná a ani nepředstavuje pro náš počítač žádnou zvláštní zátěž.
Co tedy filtrovat na dial-upu?
Odpověď je prostá – všechno. Na dial-upu obvykle neběží žádné služby, které by bylo třeba zpřístupňovat do Internetu. To nám velice usnadní práci, neboť náš firewall nemusí nijak bránit spoofování, syn-floofingu ani dalším technikám, neboť prostě blokujeme (skoro) všechno, co k nám z Internetu přichází:
iptables -A INPUT -P DENY iptables -A FORWARD -P DENY
Teď aktivujeme stavový firewall a propustíme příchozí pakety, které patří k námi navázaným spojením:
iptables -A INPUT -m --state ESTABLISHED,RELATED -j ACCEPT
Naopak nemá valného významu omezovat datagramy v řetězci OUTPUT (mají svůj původ v našem počítači a nejsou tedy potencionálně nebezpečné).
iptables -A OUTPUT -P ACCEPT
Naše omezení se netýkají lokálního loopbacku, který je pro fungování počítače důležitý, ani rozhraní eth0, jímž se příležitostně připojujeme do podnikové sítě:
iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i eth0 -j ACCEPT
Na místě je i otázka, zda filtrovat ICMP pakety. Maximálně paranoidní uživatelé budou v pokušení filtrovat i je, my ostatní budeme propouštět minimálně echo-request/reply, destination unreachable a time exceeded, čistě z úcty k RFC standardům:
iptables -A INPUT -p ICMP -i eth0 --icmp-type 0 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 3 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 11 -j ACCEPT
Kromě toho je pravděpodobné, že budeme chtít používat pasivní FTP přenosy, proto musíme zajistit, aby se zavedl modul ip_conntrack_ftp (více o problematice FTP se dočtete tady):
modprobe ip_conntrack_ftp
Kompletní skript, vhodný k instalaci, si můžete stáhnout odsud
Zavádění filtrovacích pravidel v distribucích Red Hat
Distribuce RH obsahují rc skript iptables, který dokáže uložit a ve vhodném okamžiku znovu zavést firewallovací pravidla. Používá se snadno. Nejprve zajistíme, aby došlo k vyprázdnění všech řetězců:
service iptables stop
Pak ručně zavedeme filrovací pravidla a uložíme je do souboru /etc/sysconfig/iptables:
./dialupfw.sh service iptables save
Poté zajistíme, aby se skript iptables vykonal při každém zapnutí počítače:
chkconfig iptables on
Pokud vám iptables zobrazí při spouštění nějaká chybová hlášení, ale samotný skript se zdá být v pořádku, je možné, že nemáte dostatečně aktuální verzi balíčku iptables, neboť v některých distribucích byla chyba, která se projevovala právě takto. Nezapomeňme také, že tímto způsobem zajistíme pouze nastavení filtrovacích pravidel, ale nikoliv již další kroky, které eventuálně ve firewallovém skriptu můžeme provádět. Mám tím na mysli zejména zavádění jaderných modulů nebo třeba modifikování parametrů přes /proc/sys.
Mně se osvědčilo zavádět ipt moduly přímo ve skriptu /etc/rc.d/init.d/iptables. Parametry jádra je vhodné nastavovat pomocí souboru /etc/sysctl.conf, kam stačí jen uvést klíč a hodnotu. Startovací skripty se samy při startu postarají o jejich nastavení.
Tolik tedy k filtrování paketů na dial-upu.