Linux iptables firewall ISPconfig. Základní dovednosti a konfigurace.

iptables je obslužný program v linuxovém uživatelském prostoru, který umožňuje správci systému konfigurovat pravidla filtrování IP paketů brány firewall v jádře Linuxu, implementovaná jako různé moduly Netfilter. Filtry jsou uspořádány v různých tabulkách, které obsahují řetězce pravidel pro zacházení s pakety síťového provozu. V současné době se pro různé protokoly používají různé moduly a programy jádra; iptables se vztahuje na protokol IPv4, ip6tables na IPv6, arptables na ARP a ebtables na ethernetové rámce.

Program iptables vyžaduje ke své činnosti zvýšená práva a musí být spuštěn uživatelem root, jinak nefunguje. Ve většině linuxových systémů je iptables nainstalován jako /usr/sbin/iptables a zdokumentován v manuálových stránkách, které lze po instalaci otevřít pomocí příkazu man iptables. Lze jej také nalézt v /sbin/iptables, ale protože iptables je spíše služba než „základní binární soubor“, preferovaným umístěním zůstává /usr/sbin.

Termín iptables se také běžně používá pro souhrnné označení komponent na úrovni jádra. x_tables je název jaderného modulu nesoucího sdílenou část kódu používanou všemi čtyřmi moduly, který také poskytuje API používané pro rozšíření; následně se Xtables víceméně používá pro označení celé architektury firewallu (v4, v6, arp a eb).

iptables nahradil ipchains; a nástupcem iptables je nftables, který byl vydán 19. ledna 2014 a byl začleněn do hlavní řady linuxového jádra ve verzi 3.13 jádra.

Linux iptables firewall

Zobrazení pravidel řetězce INPUT

iptables -L INPUT --line-numbers -vn
Chain INPUT (policy ACCEPT 4165K packets, 1200M bytes)

num  pkts    bytes  target                         prot      opt in   out    source               destination
1         1091    83749   f2b-dovecot             tcp  --    *             *            0.0.0.0/0            0.0.0.0/0             multiport dports 110,995,143,993,587,465,4190
2         110K    9353K   f2b-postfix-sasl      tcp  --    *             *            0.0.0.0/0            0.0.0.0/0             multiport dports 25
3         104K    5773K   f2b-sshd                   tcp  --    *             *            0.0.0.0/0            0.0.0.0/0             multiport dports 2002
4        54363   2774K   DROP                        all  --      *             *            0.0.0.0/0            0.0.0.0/0             -m geoip --source-country HK,CN,RU

Prví tři pravidla jak je patrné jsou automaticky vytvořené pomocí fail2ban. Čtvrté, poslední pravidlo je DROP vytvořené pomocí rozšíření netfilter xtables popsané v předešlém textu GeoIP Netfilter blokování.

Zobrazení všech existujících pravidel firewallu.

Chain INPUT (policy ACCEPT 4175K packets, 1204M bytes)
..
Chain FORWARD (policy DROP 0 packets, 0 bytes)
..
Chain OUTPUT (policy ACCEPT 5244K packets, 1935M bytes)
..
Chain f2b-dovecot (1 references)
..
Chain f2b-postfix-sasl (1 references)
..
Chain f2b-sshd (1 references)
..
Chain ufw-after-forward (0 references)
..
Chain ufw-after-input (0 references)
..
Chain ufw-after-logging-forward (0 references)
..
Chain ufw-after-logging-input (0 references)
..
Chain ufw-after-logging-output (0 references)
..
Chain ufw-after-output (0 references)
..
Chain ufw-before-forward (0 references)
..
Chain ufw-before-input (0 references)
..
Chain ufw-before-logging-forward (0 references)
..
Chain ufw-before-logging-input (0 references)
..
Chain ufw-before-logging-output (0 references)
..
Chain ufw-before-output (0 references)
..
Chain ufw-logging-allow (0 references)
..
Chain ufw-logging-deny (2 references)
..
Chain ufw-not-local (1 references)
..
Chain ufw-reject-forward (0 references)
..
Chain ufw-reject-input (0 references)
..
Chain ufw-reject-output (0 references)
..
Chain ufw-skip-to-policy-forward (0 references)
..
Chain ufw-skip-to-policy-input (7 references)
..
Chain ufw-skip-to-policy-output (0 references)
..
Chain ufw-track-forward (0 references)
..
Chain ufw-track-input (0 references)
..
Chain ufw-track-output (0 references)
..
Chain ufw-user-forward (1 references)
..
Chain ufw-user-input (1 references)
..
Chain ufw-user-limit (0 references)
..
Chain ufw-user-limit-accept (0 references)
..
Chain ufw-user-logging-forward (0 references)
..
Chain ufw-user-logging-input (0 references)
..
Chain ufw-user-logging-output (0 references)
..
Chain ufw-user-output (1 references)
..

Jak přidat pravidlo firewalu?

Filtrovat TCP IP adresu 1.2.3.4 na vstupu portu 443 (webová stránka) lze pomocí zápisu pravidla:

iptables -A INPUT -p tcp -s 1.2.3.4 --dport 443 -j DROP

(Přepínač -A zapíše pravidlo na konec řetězce INPUT)

Blokace IP adresního rozsahu 1.2.3.4/30 na všech portech, všechny protokoly + identifikační komentář

iptables -A INPUT -s 1.2.3.4/30 -j DROP -m comment --comment "Můj komentář - "

To samé jako v předešlém pravidlu ale s definovaným pořadím na řádku 5 (sekce INPUT)

iptables -I INPUT 5 -s 1.2.3.4/30 -j DROP -m comment --comment "Můj komentář - "

Pravidlo je zapsáno pomocí přepínače -I to znamená bude zapsáno na číslem definované číslo řádku.
Výkřičník (is not). Opak předešlého pravidla. Pravidlo neříká „když je <podmínka> ale jeho opak. To znamená „když není“ <! podmínka>.

iptables -I INPUT 5 ! -s 1.2.3.4/30 -j DROP -m comment --comment "Můj komentář - "

Zobrazení číslovaného obsahu INPUT řetězce iptables, ve kterém jsme okrem jiného i v předešlém kroku zapsána IP adresu 1.2.3.4

iptables -L INPUT --line-numbers -vn

Odstranění pravidla blokujícího IP adresu 1.2.3.4 která je dle předešlého vyýpisu umístěna na v řetězci INPUT na pozici 5

iptables -D INPUT 5

Základní pravidlo

Přidáním pravidla pro akceptování pouze RELATED a ESTABLISHED paketů vytvoříme první a základní pravidlo firewallu

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

V případe, že používáte fail2ban je vhodné přidat uvedené pravidlo jako první

iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Jak uložit / obnovit pravidla

Pravidla po restratu serveru „zmizí“. Pokud chcete konfiguraci zachovat je důležité použít automatickou funkci iptables-persistent nebo vše uložit a po restartu znovu manuálne načíst.

mkdir /etc/iptables
iptables-save > /etc/iptables/pravidla.v4
iptables-restore < /etc/iptables/pravidla.v4

Uložit libovolný soubor s časovým razítkem lze přidáním

iptables-save > /etc/iptables/pravidla.v4_`date +\%d-\%m-\%Y_\%H\%M`

Odinstalace UFW

UFW (Uncomplicated firewall) lze odinstalovat příkazem

apt autoremove ufw

Příkaz ale neodstraní řetězce z konfigurace IPtables. Ty lze deaktivovat a umazat pomocí awk

for ufw in `iptables -L |grep ufw|awk '{ print $2 }'`; do iptables -F $ufw; done
for ufw in `iptables -L |grep ufw|awk '{ print $2 }'`; do iptables -X $ufw; done

Packet flow vizualizace

Linux firewall Netfilter iptables
Linux firewall Netfilter iptables

Užitečné

Domovská stránka netfilter iptables na GitHub.

ICTIS.CZ