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.
