Průvodce pro začínající uživatele iptables, Linux Firewall
Iptables je extrémně flexibilní nástroj firewallu postavený na operačních systémech Linux. Ať už jste nováček Linuxový geek nebo systémový administrátor, existuje pravděpodobně nějaký způsob, jakým by vám iptables mohl být velice užitečný. Přečtěte si, jak vám ukážeme, jak nakonfigurovat nejrozmanitější firewall systému Linux.
fotka od ezioman.
O serveru iptables
iptables je nástroj firewall příkazového řádku, který používá řetězce zásad umožňující nebo blokující provoz. Když se spojení pokusí se ve svém systému nastavit, iptables vyhledá pravidlo ve svém seznamu, které odpovídá. Pokud ji nenajde, použije výchozí akci.
iptables téměř vždy přichází na libovolnou distribuci Linux. Chcete-li jej aktualizovat / nainstalovat, stačí načíst balíček iptables:
sudo apt-get nainstalovat iptables
Existují alternativy GUI k iptables jako Firestarter, ale iptables není opravdu tak těžké, jakmile budete mít několik příkazů dolů. Při konfiguraci pravidel iptables si přejete být velmi opatrní, zvláště pokud jste SSH'd na server, protože jeden nesprávný příkaz vás může trvale zablokovat, dokud není ručně pevný na fyzickém stroji.
Typy řetězců
iptables používá tři různé řetězce: vstup, dopředu a výstup.
Vstup - Tento řetězec se používá k řízení chování příchozích připojení. Pokud se například uživatel pokusí SSH do počítače / serveru, iptables se pokusí přizpůsobit adresu IP a port pravidlu ve vstupním řetězci.
Vpřed - Tento řetězec se používá pro příchozí připojení, která se ve skutečnosti neposkytuje místně. Přemýšlejte o směrovači - data jsou vždy odesílána, ale zřídka jsou skutečně určena pro samotný router; data jsou právě předána k cíli. Pokud neuděláte nějaký způsob směrování, NATing nebo něco jiného ve vašem systému, který vyžaduje přesměrování, nebudete ani používat tento řetězec.
Existuje jedna jistá cesta, jak zkontrolovat, zda váš systém používá / potřebuje řetězec dopředu.
iptables -L -v
Výše uvedený snímek obrazovky je server, který běží po dobu několika týdnů a nemá žádné omezení na příchozí nebo odchozí spojení. Jak můžete vidět, vstupní řetězec zpracoval 11 GB paketů a výstupní řetězec zpracoval 17 GB. Dopředný řetězec naopak nepotřeboval zpracovat jediný paket. Důvodem je to, že server neprovádí žádné přesměrování ani nepoužívá jako průchozí zařízení.
Výstup - Tento řetězec se používá pro odchozí spojení. Pokud se například pokusíte ping howtogeek.com, iptables zkontroluje jeho výstupní řetězec, aby zjistil, jaké jsou pravidla týkající se pingu a howtogeek.com, než se rozhodne povolit nebo zamítnout pokus o připojení.
Upozornění
Přestože ping externího hostitele vypadá jako něco, co by muselo pouze projít výstupním řetězcem, mějte na paměti, že pro vrácení dat se bude používat také vstupní řetězec. Pokud používáte systém iptables k zablokování systému, nezapomeňte, že mnoho protokolů bude vyžadovat obousměrnou komunikaci, takže je nutné správně nakonfigurovat vstupní i výstupní řetězce. SSH je běžný protokol, který lidé zapomínají povolit na obou řetězcích.
Chování výchozího chování
Předtím, než vstoupíte a konfigurujete konkrétní pravidla, budete se chtít rozhodnout, co chcete mít výchozí chování tří řetězců. Jinými slovy, co chcete provést, pokud připojení neodpovídá stávajícím pravidlům?
Chcete-li zjistit, jak jsou vaše řetězce zásad aktuálně nakonfigurovány tak, aby odpovídaly nesrovnatelné návštěvnosti, spusťte iptables -L
příkaz.
Jak vidíte, také jsme použili příkaz grep, abychom nám poskytli čistší výstup. Na této obrazovce jsou naše řetězce v současné době považovány za přijatelné.
Vícekrát než ne, budete chtít, aby váš systém přijímal připojení ve výchozím nastavení. Pokud jste dříve nezměnili pravidla řetězce zásad, mělo by být toto nastavení již nakonfigurováno. V každém případě je zde příkaz pro přijetí připojení ve výchozím nastavení:
iptables - policy INPUT ACCEPT
iptables - policy ACCEPT OUTPUT
iptables - policy FORWARD ACCEPT
Výchozím nastavením pravidla přijetí můžete použít iptables k odmítnutí určitých adres IP nebo čísel portů a přitom i nadále přijímat všechna ostatní připojení. Tyto příkazy se dostaneme za minutu.
Pokud byste raději popřeli všechna připojení a ručně specifikovali, které z nich chcete povolit, měli byste změnit výchozí zásadu vašich řetězců. To by pravděpodobně bylo užitečné pouze pro servery, které obsahují citlivé informace a kdyby se k nim připojily pouze stejné adresy IP.
iptables - policy INPUT DROP
iptables - politika OUTPUT DROP
iptables - politika FORWARD DROP
Odpovědi specifické pro připojení
Se standardními zásadami řetězce nakonfigurovanými můžete začít přidávat pravidla do iptables, takže ví, co dělat, když se setká s připojením z konkrétní IP adresy nebo portu. V této příručce projdeme třemi nejzákladnějšími a běžně používanými "odpověďmi".
Akceptovat - Povolit připojení.
Pokles - Zrušte spojení a konaňte se, jako by se nikdy nestalo. To je nejlepší, pokud nechcete, aby zdroj uvedl, že váš systém existuje.
Odmítnout - Nepovolit připojení, ale odeslat zpět chybu. To je nejlepší, pokud nechcete, aby se k vašemu systému připojil určitý zdroj, ale chcete, aby věděli, že je brána firewall zablokovala.
Nejlepší způsob, jak ukázat rozdíl mezi těmito třemi pravidly, je ukázat, jak vypadá, když se počítač pokusí ping na stroj s operačním systémem Linux s iptables nakonfigurovaným pro každé z těchto nastavení.
Povolení připojení:
Odpojení:
Odmítnutí připojení:
Povolení nebo blokování konkrétních připojení
S konfigurovanými řetězci zásad můžete nyní nakonfigurovat protokoly iptables, které umožňují nebo blokují specifické adresy, rozsahy adres a porty. V těchto příkladech nastavíme připojení POKLES
, ale můžete je přepnout AKCEPTOVAT
nebo ODMÍTNOUT
, v závislosti na vašich potřebách a způsobu konfigurace řetězců zásad.
Poznámka: V těchto příkladech budeme používat iptables -A
přidat pravidla k existujícímu řetězci. iptables začíná v horní části seznamu a prochází každým pravidlem, dokud nenajde ten, který odpovídá. Pokud potřebujete vložit pravidlo nad jinou, můžete použít iptables -I [řetězec] [číslo]
zadat číslo, které by mělo být v seznamu.
Připojení z jedné adresy IP
Tento příklad ukazuje, jak zablokovat všechna připojení z adresy IP 10.10.10.10.
iptables -A INPUT -s 10.10.10.10 -j DROP
Připojení z celé řady adres IP
Tento příklad ukazuje, jak zablokovat všechny adresy IP v rozsahu 10.10.10.0/24. Pro určení rozsahu adres IP můžete použít síťovou masku nebo standardní lomítko.
iptables -A INPUT -s 10.10.10.0/24 -j DROP
nebo
iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP
Připojení k určitému portu
Tento příklad ukazuje, jak blokovat připojení SSH od 10.10.10.10.
iptables -A VSTUP -p tcp --dport ssh -s 10.10.10.10 -j DROP
Můžete nahradit "ssh" libovolným protokolem nebo číslem portu. The -p tcp
část kódu říká iptables, jaký typ připojení používá protokol. Pokud jste zablokovali protokol, který používá spíše UDP než TCP, pak -p udp
by bylo místo toho nezbytné.
Tento příklad ukazuje, jak blokovat připojení SSH z libovolné adresy IP.
iptables -A INPUT -p tcp -dport ssh -j DROP
Připojovací státy
Jak jsme již zmínili, mnoho protokolů bude vyžadovat obousměrnou komunikaci. Například pokud chcete povolit připojení SSH do vašeho systému, vstupní a výstupní řetězce budou potřebovat pravidlo přidané k nim. Ale co když jen chcete, aby SSH do vašeho systému byl povolen? Nepřidá pravidlo na výstupní řetězec také umožňují odchozí pokusy SSH?
To je místo, kde se připojují stavy připojení, které vám dávají schopnost, kterou byste měli umožnit dvoucestnou komunikaci, ale pouze umožnit vytvoření jednoho způsobu připojení. Podívejte se na tento příklad, kde jsou povolena spojení SSH OD 10.10.10.10, ale připojení SSH TO 10.10.10.10 nejsou. Systém však může zasílat informace zpět přes SSH, pokud je relace již vytvořena, což umožňuje komunikaci SSH mezi těmito dvěma hostiteli.
iptables -A INPUT -p tcp -dport ssh -s 10.10.10.10 -m stav -state NOVÉ, ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -port 22 -d 10.10.10.10 -m state -state URČENO -j ACCEPT
Uložení změn
Změny provedené v pravidlech služby iptables budou zrušeny při příštím restartování služby iptables, pokud nespustíte příkaz k uložení změn. Tento příkaz se může lišit v závislosti na distribuci:
Ubuntu:
sudo / sbin / iptables-save
Red Hat / CentOS:
/ sbin / service iptables uložte
Nebo
/etc/init.d/iptables uložte
Další příkazy
Seznam aktuálně nakonfigurovaných pravidel iptables:
iptables -L
Přidání -proti
volba vám poskytne informace o paketu a bajtu a přidání -n
všechno bude číselně zobrazeno. Jinými slovy - názvy hostitelů, protokoly a sítě jsou uvedeny jako čísla.
Chcete-li vymazat všechna aktuálně nakonfigurovaná pravidla, můžete spustit příkaz flush.
iptables -F