Zpět na blog

Výpis a mazání pravidel firewallu Iptables

Výpis a mazání pravidel firewallu Iptables

Iptables je výchozí firewall, který je součástí většiny distribucí Linuxu. Je zodpovědný za správu síťové bezpečnosti. Funguje tak, že porovnává datové pakety se sadou pravidel a na základě nich dává systému pokyny k přijetí, odmítnutí nebo přesměrování připojení. V tomto návodu si ukážeme, jak vypsat a smazat pravidla, zkontrolovat a vynulovat počítadla paketů a bajtů a vyčistit řetězce. Jste připraveni? Pojďme na to!

Požadavky

Než se pustíme do samotného návodu, ujasněme si jednu věc. Všechny tipy a triky předváděné v této příručce jsou prováděny na samostatném virtuálním stroji. Je dobré, abyste to udělali také, protože to eliminuje jakoukoli možnost, že byste si v systému udělali naprostý chaos. Teprve až tyto postupy plně ovládnete, měli byste se je pokusit nasadit v reálných situacích.

V tomto návodu budeme pro demonstraci všech kroků používat Ubuntu. Měly by však fungovat podobně bez ohledu na distribuci.

Výpis pravidel

Výpis pravidel podle specifikace

Nejprve se podívejme na všechna aktivní pravidla podle specifikace. Spusťte následující příkaz:

iptables list

Pokud jste již dříve s vytvářením pravidel iptables pracovali, možná jste si všimli podobnosti. Výstupy se podobají příkazům, které byly použity k jejich vytvoření, s výjimkou části „iptables“. Sdílejí také podobnou strukturu jako konfigurační soubory pravidel iptables.

Výpis konkrétního řetězce

Zkusme něco přesnějšího. Místo vypisování všech pravidel iptables řekněte iptables, aby vypsal pravidla konkrétního řetězce. Například TCP, INPUT, OUTPUT atd. Chcete-li tak učinit, uveďte název řetězce za příznakem „-S“:

list specific chain

Výpis pravidel jako tabulky

Zobrazení v tabulce je užitečné při porovnávání různých pravidel. Pomocí příznaku „-L“ řekněte iptables, aby vypsal všechna aktivní pravidla ve formátu tabulky:

list rules as table iptables

Výstup obsahuje všechna aktuální pravidla seřazená podle řetězce. Podobně jako v předchozí části je také možné filtrovat výstup seznamu podle konkrétního řetězce, jako je INPUT, TCP, OUTPUT atd. Chcete-li tak učinit, uveďte řetězec za příznakem „-L“:

filter by chain

Pojďme si výstup trochu rozebrat. V našem případě bude výstup kvůli pravidlům vypadat trochu nepřehledně. První řádek výstupu deklaruje název řetězce (INPUT) s jeho výchozí politikou (DROP). Další řádek specifikuje záhlaví sloupců tabulky. Zbytek tvoří pravidla řetězce. Podívejme se, co jednotlivá záhlaví znamenají:

  • target: Pokud paket odpovídá pravidlu, tato sekce definuje, jaká akce se má provést. Může to být přijetí paketu, zahození, protokolování nebo jeho odeslání do jiného řetězce.
  • prot: Definuje protokol, například udp, tcp, icmp nebo all.
  • opt: Tento sloupec označuje volby IP. Používá se zřídka.
  • source: Zdroj paketu (IP adresa nebo podsíť). Hodnota může být konkrétní nebo kdekoli.
  • destination: Cíl paketu (IP adresa nebo podsíť). Hodnota může být konkrétní nebo kdekoli.

Pokud jste si všimli, poslední sloupec není označený. Je to proto, že slouží k označení voleb pravidla. Bude obsahovat všechny části pravidla, které se nevešly do předchozích polí. Může obsahovat cokoli od zdrojových/cílových portů až po stav připojení paketu atd.

Počty paketů a celková velikost

Vynulování počítadel paketů a bajtů

Při výpisu pravidel iptables můžeme také zkontrolovat počet paketů a celkovou velikost paketů v bajtech, které odpovídaly každému konkrétnímu pravidlu. Je to užitečná metrika, když potřebujete mít hrubou představu o tom, která pravidla se shodují s pakety.

V tomto příkladu budeme používat řetězec INPUT. Tentokrát přidejte příznak „-v“, který znamená podrobný režim:

package and byte counters iptables

Všimnete si, že výstup tabulky nyní obsahuje dvě další pole: pkts a bytes.

Resetovat počty paketů a celkovou velikost

V některých situacích můžete chtít resetovat čítače, které jsme si ukázali dříve. Pokud se systém restartuje, čítače se automaticky vymažou. Reset můžete také vynutit ručně. K resetování počtu paketů a celkové velikosti použijeme příznak „-Z“:

Reset packet counts and aggregate size

Upozorňujeme, že tento příkaz resetuje čítače všech řetězců. Podobně jako u jiných příkazů je možné resetovat čítač pro konkrétní řetězce. Například následující příkaz resetuje čítače pro řetězec INPUT:

reset particular counter

Akci resetování čítače je možné upřesnit. Můžete resetovat čítač pro konkrétní pravidlo v konkrétním řetězci. Chcete-li tak učinit, přidejte číslo pravidla pod název řetězce:

reset specific rule

Smazat pravidla

Smazat pravidla podle specifikace

Existuje několik způsobů, jak přistoupit k mazání pravidel iptables. Prvním způsobem mazání pravidel je podle specifikace pravidla. Pro smazání použijeme příznak „-D“ následovaný specifikací pravidla:

Delete rules by specification

Pokud jste již dříve přidali nějaké pravidlo iptables, všimnete si podobnosti. Jediné, co se zde změnilo, je příznak „-D“ namísto příznaku „-A“.

Smazat pravidla podle řetězce a čísla

Mazání pravidel podle jejich specifikace vyžaduje trochu více úsilí, že? Co kdybychom je mohli smazat, aniž bychom si museli pamatovat specifikaci pravidla? Smažme pravidla podle jejich řetězce a čísla! Ve srovnání s první metodou (mazání podle specifikace) je tato relativně jednodušší, protože nemusíte mít v ruce celou specifikaci.

Tato metoda vyžaduje řetězec a číslo řádku cílového pravidla. Kde získáme číslo řádku? Chcete-li to zjistit, spusťte následující příkaz:

Delete rules by chain and number - get line number

Získáte velký výstup se všemi pravidly a jejich čísly řádků. Chcete-li výstup zúžit, použijeme název řetězce za příznakem „-L“:

Delete rules by chain and number - filter

Ve výstupu si všimnete sloupce navíc s názvem num. Ten udává číslo řádku pro každé pravidlo. Jakmile určíme cílové číslo, provedeme smazání:

delete iptables rule

Vyprázdnit řetězce

Co je v případě iptables vyprázdnění (flushing) řetězce? Je to proces smazání všech pravidel v rámci určitého řetězce. Pokud potřebujete hromadně mazat pravidla, můžete použít tuto metodu. Před provedením vyprázdnění řetězce důrazně doporučujeme vytvořit zálohu stávajících pravidel pomocí příkazu iptables-save. Jedná se o vestavěný nástroj iptables, který vypíše všechny aktuální řetězce a pravidla. Výstup lze exportovat do textového souboru:

iptables rules export

Vyprázdnit jeden řetězec

Pojďme se podívat, jak vyprázdnit řetězec. Použijte příznak „-F“ následovaný cílovým řetězcem:

flush a single chain

Vyprázdnit všechny řetězce

Před vyprázdněním všech řetězců se ujistěte, že rozumíte tomu, co děláte. Tímto smažete všechna pravidla pro firewall iptables. Měli byste se ujistit, že si předem vytvoříte zálohu pravidel iptables.

Připraveni? Vyprázdněte všechny řetězce iptables spuštěním následujícího příkazu:

flush all changes

Vyprázdnit pravidla, smazat řetězce a vše povolit

Provedení kroků popsaných v této části účinně deaktivuje firewall a umožní neomezený síťový provoz. Podobně jako v předchozí části doporučujeme před pokračováním mít zálohu iptables. Nejprve změníme výchozí politiku každého z vestavěných řetězců na ACCEPT. Tím zajistíte, že vás iptables neuzamkne mimo váš server přes SSH:

Flush rules, delete chains and accept all

Nyní vyčistěte tabulky nat a mangle:

 flush nat and mangle tables

 mangle tables

Vyčistěte všechny řetězce a odstraňte všechny nevýchozí řetězce:

Flush all the chains

 delete all the non-default chains

Dále se podívejme na výsledek:

iptables result

Závěrečné myšlenky

Iptables je výkonný firewall. Doufáme, že vám tento návod pomohl naučit se, jak vypsat a smazat pravidla firewallu iptables. A nezapomeňte si je vyzkoušet předtím, než je použijete v reálném světě.

Příjemnou práci s počítačem!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.