Iptables

Z HelpDesk
Verze z 4. 3. 2013, 15:45, kterou vytvořil Phanousk (diskuse | příspěvky) (doplnění)

Iptables je paketový filter. Stejně jako u většiny paketových filtrů je i zde filtrace paketů založena na

  • Typu protokolu - TCP, UDP, ICMP
  • Zdrojová adresa - počítač odesílající data
  • Cílová adresa - počítač přijímající data
  • Další členění protokolu - např. příznak "SYN" u TCP, nebo typ ICMP (echo-request, echo-reply, ...)

Kromě výše uvedených kritérií umožňuje firewall iptables filtraci založenou na stavu, tj. může fungovat také jako stavový firewall.

Podrobnosti o projektu jsou uvedeny na stránkách http://www.netfilter.org/.

Získání instalačního balíčku

Instalace

Firewall iptables je snadno dostupný (balíček iptables v APT) a snadno konfigurovatelný. Případně lze instalační balíček také získat na stránkách projektu http://www.netfilter.org/.

Konfigurace

Konfigurace pracovních stanic se může lišit podle potřeb uživatelů. Následující přehled příkazů umožní snadno vytvořit konfiguraci šitou na míru.

Před přidáváním pravidel zrušte stávající konfiguraci firewallu (např. v OS Debian GNU/Linux pomocí příkazu /etc/init.d/iptables clear).

Základní konfigurace umožňující pouze komunikaci na adrese 127.x.x.x (loopback), komunikaci iniciovanou pracovní stanicí, komunikaci příbuznou (tj. již navázané spojení se domluví na komunikaci na jiném portu) a odpověď na ICMP. Ostatní příchozí provoz bude blokován a příslušné pakety zahozeny (DROP).

$ iptables -P INPUT DROP
$ iptables -N BASE
$ iptables -A INPUT -j BASE
$ iptables -A BASE -i lo -s 127.0.0.0/255.0.0.0 -j ACCEPT
$ iptables -A BASE -m state --state RELATED,ESTABLISHED -j ACCEPT
$ iptables -A BASE -p tcp -m tcp --dport 113 -j REJECT --reject-with icmp-port-unreachable
$ iptables -A BASE -p icmp -j ACCEPT


Potřebujete-li používat ssh (port 22), k příkazům ještě přibudou následující příkazy. Pro přístup ze stroje, který je mimo doménu ZČU, je ssh blokováno a je potřeba využít veřejných serverů (eryx).

$ iptables -N SHELL
$ iptables -A INPUT -s 147.228.0.0/255.255.0.0 -j SHELL
$ iptables -A SHELL -p tcp -m tcp --dport 22 -j ACCEPT


Pro přístup k AFS je třeba přidat příkazy (k novým jádrům řady 2.6 to již není třeba díky vylepšenému Netfilteru):

$ iptables -N OPENAFS
$ iptables -A INPUT -j OPENAFS
$ iptables -A OPENAFS --proto udp --dport 7000:7010 -j ACCEPT
$ iptables -A OPENAFS --proto udp --sport 7000:7010 -j ACCEPT


Pro podporu protokolu ftp je třeba mít v jádře zajištěnou podporu modulem ip_conntrack_ftp (v OS Debian GNU/Linux pomocí příkazu modprobe ip_conntrack_ftp).

Nakonec je nutné výslednou konfiguraci uložit např. v OS Debian GNU/Linux pomocí příkazu /etc/init.d/iptables save active. Bohužel vývojáři Debianu od tohoto skriptu opouštějí proto je nutné jej do systému nainstalovat ručně:

$ gunzip /usr/share/doc/iptables/examples/oldinitdscript.gz
$ cp /usr/share/doc/iptables/examples/oldinitdscript /etc/init.d/iptables
$ mkdir /var/lib/iptables
$ chmod 755 /etc/init.d/iptables
$ update-rc.d iptables defaults 20

Pozn.: číslo 20, určující pořadí vykonávání skriptu je závislé na aktuálním nastavení distribuce Debian. Případné nejasnosti je vhodné konzultovat s dokumentací k balíčku iptables (/usr/share/doc/iptables/README.Debian.gz).

Odkazy