Iptables je extrémně flexibilní nástroj brány firewall vytvořený pro operační systémy Linux. Ať už jste začínajícím Linuxovým geekem nebo správcem systému, pravděpodobně existuje způsob, jak vám iptables mohou skvěle posloužit. Přečtěte si, jak vám ukážeme, jak nakonfigurovat nejuniverzálnější linuxový firewall.
O iptables
iptables je obslužný program brány firewall příkazového řádku, který k povolení nebo blokování provozu používá řetězy zásad. Když se připojení pokusí ve vašem systému navázat, iptables hledá v seznamu pravidlo, které mu odpovídá. Pokud žádný nenajde, uchýlí se k výchozí akci.
iptables jsou téměř vždy předinstalovány v jakékoli distribuci Linuxu. Chcete-li jej aktualizovat / nainstalovat, stačí načíst balíček iptables:
sudo apt-get nainstalovat iptables
Existují alternativy GUI k iptables jako Podpalovač , ale iptables není opravdu tak těžké, jakmile máte několik příkazů dolů. Při konfiguraci pravidel iptables chcete být velmi opatrní, zvláště pokud používáte SSH na serveru, protože jeden nesprávný příkaz vás může trvale zablokovat, dokud nebude ručně opraven na fyzickém stroji.
Druhy řetězů
iptables používá tři různé řetězce: vstup, vpřed a výstup.
Vstup - Tento řetězec se používá k řízení chování příchozích připojení. Například pokud se uživatel pokusí o SSH na vašem PC / serveru, iptables se pokusí přiřadit IP adresu a port k pravidlu ve vstupním řetězci.
Vpřed - Tento řetězec se používá pro příchozí připojení, která nejsou ve skutečnosti doručována lokálně. Přemýšlejte o směrovači - data se do něj vždy odesílají, ale jen zřídka jsou skutečně určena pro samotný směrovač; data jsou právě předána svému cíli. Pokud ve svém systému neprovádíte nějaký směrování, NATing nebo něco jiného, co vyžaduje předávání, tento řetězec ani nepoužijete.
Existuje jeden jistý způsob, jak zkontrolovat, zda váš systém používá / nepotřebuje dopředný řetězec.
iptables -L -v
Výše uvedený snímek obrazovky je serverem, který běží několik týdnů a nemá žádná omezení pro příchozí nebo odchozí připojení. Jak vidíte, vstupní řetězec zpracoval 11 GB paketů a výstupní řetězec zpracoval 17 GB. Přední řetězec na druhou stranu nepotřeboval zpracovat jediný paket. Je to proto, že server neprovádí žádné předávání ani není používán jako předávací zařízení.
Výstup - Tento řetězec se používá pro odchozí připojení. Pokud se například pokusíte odeslat příkaz ping howtogeek.com, zkontroluje iptables svůj výstupní řetězec, aby zjistil, jaká jsou pravidla týkající se příkazu ping a howtogeek.com, než se rozhodne povolit nebo odmítnout pokus o připojení.
Upozornění
I když se pingování na externího hostitele jeví jako něco, co by potřebovalo pouze projít výstupním řetězcem, mějte na paměti, že pro vrácení dat bude použit také vstupní řetězec. Když používáte iptables k uzamčení systému, pamatujte, že mnoho protokolů bude vyžadovat obousměrnou komunikaci, takže vstupní i výstupní řetězce budou muset být správně nakonfigurovány. SSH je běžný protokol, který lidé zapomínají povolit v obou řetězcích.
Výchozí chování řetězce zásad
Před spuštěním a konfigurací konkrétních pravidel byste se měli rozhodnout, jaké má být výchozí chování těchto tří řetězců. Jinými slovy, co chcete dělat iptables, pokud připojení neodpovídá žádným stávajícím pravidlům?
Chcete-li zjistit, jaké jsou vaše řetězce zásad aktuálně nakonfigurované pro bezkonkurenční provoz, spusťte
iptables -L
příkaz.
Jak vidíte, použili jsme také příkaz grep, který nám poskytl čistší výstup. Na tomto snímku obrazovky jsou naše řetězce aktuálně přijaty, aby přijímaly provoz.
Mnohokrát budete chtít, aby váš systém ve výchozím nastavení přijímal připojení. Pokud jste dříve nezměnili pravidla řetězce zásad, toto nastavení by již mělo být nakonfigurováno. V obou případech je zde příkaz ve výchozím nastavení přijímat připojení:
iptables --policy INPUT ACCEPT
iptables --policy VÝSTUP PŘIJÍMÁ
iptables --policy PŘEDPOKLÁDAT
Ve výchozím nastavení pravidla přijetí pak můžete pomocí iptables odepřít konkrétní adresy IP nebo čísla portů, zatímco budete nadále přijímat všechna ostatní připojení. K těmto příkazům se dostaneme za minutu.
Pokud byste raději odmítli všechna připojení a ručně určili, kterým z nich chcete povolit připojení, měli byste změnit výchozí zásadu svých řetězců tak, aby byla zrušena. To by bylo pravděpodobně užitečné pouze pro servery, které obsahují citlivé informace a mají k nim připojeny pouze stejné adresy IP.
iptables --policy INPUT DROP
iptables --policy VÝSTUPNÍ VÝPAD
iptables --policy FORWARD DROP
Odpovědi specifické pro připojení
S nakonfigurovanými výchozími zásadami řetězu můžete začít přidávat pravidla do iptables, aby věděla, co dělat, když narazí na připojení z nebo na konkrétní adresu IP nebo port. V této příručce si projdeme tři nejzákladnější a nejčastěji používané „odpovědi“.
Akceptovat - Povolte připojení.
Pokles - Přerušte spojení, chovejte se, jako by se to nikdy nestalo. To je nejlepší, pokud nechcete, aby si zdroj uvědomil, že váš systém existuje.
Odmítnout - Nepovolte připojení, ale pošlete zpět chybu. To je nejlepší, pokud nechcete, aby se k vašemu systému připojoval konkrétní zdroj, ale chcete, aby věděli, že je brána firewall blokovala.
Nejlepším způsobem, jak ukázat rozdíl mezi těmito třemi pravidly, je ukázat, jak to vypadá, když se počítač pokusí provést ping na stroji Linux s konfigurací iptables pro každé z těchto nastavení.
Povolení připojení:
Ukončení připojení:
Odmítnutí připojení:
Povolení nebo blokování konkrétních připojení
S nakonfigurovanými řetězci zásad můžete nyní nakonfigurovat iptables tak, aby povolily nebo blokovaly konkrétní adresy, rozsahy adres a porty. V těchto příkladech nastavíme připojení na
POKLES
, ale můžete je přepnout na
AKCEPTOVAT
nebo
ODMÍTNOUT
, v závislosti na vašich potřebách a způsobu, jakým jste nakonfigurovali své řetězce zásad.
Poznámka: V těchto příkladech použijeme
iptables -A
připojit pravidla ke stávajícímu řetězci. iptables začíná v horní části seznamu a prochází každým pravidlem, dokud nenajde pravidlo, které odpovídá. Pokud potřebujete vložit pravidlo nad jiné, můžete použít
iptables -I [chain] [number]
určit číslo, které by mělo být v seznamu.
Připojení z jedné IP adresy
Tento příklad ukazuje, jak blokovat všechna připojení z adresy IP 10.10.10.10.
iptables -A VSTUP -s 10.10.10.10 -j DROP
Připojení z řady IP adres
Tento příklad ukazuje, jak blokovat všechny adresy IP v rozsahu sítě 10.10.10.0/24. K určení rozsahu adres IP můžete použít síťovou masku nebo standardní lomítko.
iptables -A VSTUP -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í ke konkrétnímu portu
Tento příklad ukazuje, jak blokovat připojení SSH od 10.10.10.10.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP
„Ssh“ můžete nahradit libovolným číslem protokolu nebo portu. The
-p tcp
část kódu říká iptables, jaký druh připojení protokol používá. Pokud jste blokovali protokol, který používá spíše UDP než TCP, pak
-p udp
místo toho by to bylo nutné.
Tento příklad ukazuje, jak blokovat připojení SSH z jakékoli adresy IP.
iptables -A INPUT -p tcp --dport ssh -j DROP
Stavy připojení
Jak jsme již zmínili dříve, mnoho protokolů bude vyžadovat obousměrnou komunikaci. Například pokud chcete povolit připojení SSH k vašemu systému, vstupní a výstupní řetězce budou k nim potřebovat přidat pravidlo. Ale co když chcete, aby bylo povoleno pouze SSH přicházející do vašeho systému? Nepovolíte přidání pravidla do výstupního řetězce také odchozí pokusy SSH?
Zde přicházejí stavy připojení, které vám dávají možnosti, které potřebujete k umožnění obousměrné komunikace, ale pouze k navázání jednosměrného připojení. Podívejte se na tento příklad, kde jsou povolena připojení SSH OD 10.10.10.10, ale připojení SSH DO 10.10.10.10 nejsou. Systém však může odesílat zpět informace přes SSH, pokud již byla relace 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 state --state NEW, ESTABLISHED -j PŘIJMOUT
iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT
Ukládání změn
Změny, které provedete ve svých pravidlech iptables, budou zrušeny při příštím restartování služby iptables, pokud neprovedete příkaz k uložení změn. Tento příkaz se může lišit v závislosti na vaší distribuci:
Ubuntu:
sudo / sbin / iptables-save
Red Hat / CentOS:
/ sbin / service iptables uložit
Nebo
/etc/init.d/iptables uložit
Další příkazy
Seznam aktuálně nakonfigurovaných pravidel iptables:
iptables -L
Přidání
-v
volba vám dá informace o paketech a bajtech a přidá
-n
vypíše vše číselně. 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 vydat příkaz flush.
iptables -F