Konfigurace Linux iptables firewall. Předvolby.

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.

Konfigurace linux iptables

Předvolba (krátká)Předvolba (dlouhá)Popis
-L–listZobrazení aktuálních pravidel
-I–insertVložení nového pravidla do řetězce
-R–replaceNahrazení pravidla
-A–appendPřidání nového pravidla do řetězce
-D 3–delete 3Odstraní pravidlo č. 3 z řetězce
-F–flushOdstraní celý řetěz
-N–newchainPřidání nového řetězce INPUT DROP GEOIP atp..
-X–deletechainOdstranění řetězce
-E–rename-chainPřejmenuje řetězec
-i–ininterfaceSíťové rozhraní, které přijímá příchozí paket
-0–outinterfaceSíť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–jumpAkce, která má být provedena, pokud paket odpovídá zadaným kritériím.
-m–matchodpovídající název
-p–protocolpárovací protokol
-t–tableZadejte tabulku (filtr, nat, mangle) Filtr je výchozí.
-v–verboseTichý výpis
Tabulka předvoleb linux iptables

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

  1. Po příchodu paketu firewall zkontroluje všechna pravidla.
  2. Pravidla jsou vždy zpracovávána shora dolů.
  3. Každé pravidlo má určitá kritéria shody.
  4. Pokud paket odpovídá kritériím v některém pravidle, provede se akce spojená s tímto pravidlem.
  5. 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í.
  6. 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říkazPopis
iptablesaplikace, hlavní příkaz
-A INPUTpřipojuje řetězec INPUT
-s 1.2.3.10/32použí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/24použí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 tcpfiltruje provoz TCP
–dport 22použít pravidlo, pokud paket přichází pro službu SQL
-jjakou akci má iptables provede, pokud paket odpovídá kritériím shody
ACCEPTpovolit paket
DROPzahoďte paket bez jakéhokoli zpětného oznámení.
Popis nastavení firewallu

Vizualizace

IPtables firewall předvolby navod
IPtables firewall předvolby navod

Užitečné

Debian nastavení firewallu pomocí nástavby UFW.
Webová stránka UFW repo GitHub

ICTIS.CZ