Hlavní navigace

Firewall na dial-upu

Miroslav Petříček

Tento článek volně navazuje na sérii "Stavíme firewall", který vyšel na ROOTu před časem. Dozvíme se v něm, jak a jestli vůbec konfigurovat pakety na osobním počítači, který je k Intenetu připojen příležitostně skrze vytáčenou telefonní linku. Podíváme se také na způsoby, jakými lze filrovací pravidla zavádět.

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/ip­tables:

./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.

Našli jste v článku chybu?