Konfigurace Linux iptables je obslužný program firewallu 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.
Obsah
Konfigurace linux iptables
Předvolba (krátká) | Předvolba (dlouhá) | Popis |
-L | –list | Zobrazení aktuálních pravidel |
-I | –insert | Vložení nového pravidla do řetězce |
-R | –replace | Nahrazení pravidla |
-A | –append | Přidání nového pravidla do řetězce |
-D 3 | –delete 3 | Odstraní pravidlo č. 3 z řetězce |
-F | –flush | Odstraní celý řetěz |
-N | –newchain | Přidání nového řetězce INPUT DROP GEOIP atp.. |
-X | –deletechain | Odstranění řetězce |
-E | –rename-chain | Přejmenuje řetězec |
-i | –ininterface | Síťové rozhraní, které přijímá příchozí paket |
-0 | –outinterface | Síťové rozhraní, které odesílá pakety |
-d | –destination –dport | Adresa místa určení Cílový port |
-s | –source –sport | Zdrojová adresa Zdrojový port |
-j | –jump | Akce, která má být provedena, pokud paket odpovídá zadaným kritériím. |
-m | –match | odpovídající název |
-p | –protocol | párovací protokol |
-t | –table | Zadejte tabulku (filtr, nat, mangle) Filtr je výchozí. |
-v | –verbose | Tichý výpis |
Praxe
Nastavíme a popíšeme si krátkou konfiguraci
1. Povolíme připojení MySQL pouze z IP adresy 1.2.3.10/24 . Z libovolného dalšího hostitele bude HTTPS připojení ukončeno. 2. Povolíme připojení SSH pouze z IP adresy 2.3.4.11/24 . Odmítnutí připojení SSH ze zbývajících systémů s oznámením. 3. Povolit připojení FTP pouze z IP adresy 3.4.5.12/24. Odmítnout připojení FTP ze zbývajících systémů s upozorněním. 4. Povolit připojení HTTP ze všech hostitelů na portu 80. 5. Odmítnout požadavky na ping ze všech hostitelů s chybovým hlášením.
Příklad povolení služby SQL kde je komunikace na portu 3306 povolena pro IP adresu 1.2.3.10 ale zakázána pro 2.3.4.10
iptables -A INPUT -s 1.2.3.10/24 -p tcp --dport 3306 -j ACCEPT iptables -A INPUT -s 2.3.4.10/24 -p tcp --dport 3306 -j DROP
Pro první požadavek musíme vytvořit dvě pravidla. V prvním pravidle musíme povolit hostitele 1.2.3.10 a ve druhém pravidle musíme odmítnout všechny zbývající hostitele. Takže v podstatě první příkaz říká „Nechte paket projít, pokud přichází pro službu SQL z hostitele 2.3.4.10/24“. Druhý příkaz říká „Zahoď všechny pakety bez jakéhokoli upozornění, pokud přicházejí pro službu SQL ze sítě 1.2.3.0/24“. Všimli jste si konfliktu mezi pravidly?
První pravidlo říká povolit hostitele 1.2.3.10/24, zatímco druhé pravidlo říká zakázat všechny hostitele ze sítě 2.3.4.10/24. Hostitel 1.2.3.10 také patří do sítě 1.2.3.0/24. Na hostitele 1.2.3.10/24 se tedy vztahují obě podmínky. Které pravidlo se v této situaci použije na paket přicházející z hostitele 1.2.3.10/24 pro službu SQL? Abychom zjistili odpověď, musíme pochopit základní tok zpracování paketů.
Tok zpracování paketů brány firewall
- Po příchodu paketu firewall zkontroluje všechna pravidla.
- Pravidla jsou vždy zpracovávána shora dolů.
- Každé pravidlo má určitá kritéria shody.
- Pokud paket odpovídá kritériím v některém pravidle, provede se akce spojená s tímto pravidlem.
- Jakmile je nalezena shoda, nemělo by být pro daný paket provedeno žádné další zpracování. Z technického hlediska to dává smysl, protože jakmile je nalezena shoda, bude pro daný paket provedena související akce (povolit/odmítnout/zahodit) a paket nebude k dispozici pro další zpracování.
- Pořadí pravidel tedy hraje ve firewallu důležitou roli.
Ve výše uvedeném případě nebude paket z hostitele 1.2.3.10/24 nikdy porovnán s druhým pravidlem.
Druhý a třetí požadavek také vypadají jako první požadavek. V prvním požadavku jsme filtrovali službu SQL, zatímco ve druhém a třetím požadavku budeme filtrovat služby SSH (port 22) a SQL (Port 3306).
Příkaz | Popis |
iptables | aplikace, hlavní příkaz |
-A INPUT | připojuje řetězec INPUT |
-s 1.2.3.10/32 | použít pravidlo, pokud paket přichází ze zdroje 1.2.3.10/24. Nezaměňujte s /32. Nejedná se o masku podsítě, je to maska se zástupným znakem. V pravidlech používáme zástupnou masku místo masky podsítě. Pro zadání konkrétního hostitele používáme masku /32 se zástupnými znaky. |
-s 2.4.6.0/24 | použít toto pravidlo, pokud paket přichází ze sítě 1.2.3.0 Maska /24 se zástupným znakem představuje celou síť. |
-p tcp | filtruje provoz TCP |
–dport 22 | použít pravidlo, pokud paket přichází pro službu SQL |
-j | jakou akci má iptables provede, pokud paket odpovídá kritériím shody |
ACCEPT | povolit paket |
DROP | zahoďte paket bez jakéhokoli zpětného oznámení. |
Vizualizace

Užitečné
Debian nastavení firewallu pomocí nástavby UFW.
Webová stránka UFW repo GitHub