Iptables

Z HelpDesk

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/. Pro IPv6 použijte balíček ip6tables.

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