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:
|
1 |
sudo iptables -S |

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“:
|
1 |
sudo iptables -S <řetězec> |

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:
|
1 |
sudo iptables -L |

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“:
|
1 |
sudo iptables -L <řetězec> |

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:
|
1 |
sudo iptables -L INPUT -v |

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“:
|
1 |
sudo iptables -v -Z |

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:
|
1 |
sudo iptables -v -Z <chain> |

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:
|
1 |
sudo iptables -v -Z <chain> <rule_number> |
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:
|
1 |
sudo iptables -v -D INPUT -s 172.217.194.113 -j DROP |

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:
|
1 |
sudo iptables -L --line-numbers |

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“:
|
1 |
sudo iptables -L <chain> --line-numbers |

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í:
|
1 |
sudo iptables -v -D <chain> <line_number> |
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:
|
1 |
sudo iptables-save > ~/Desktop/iptables-backup.txt |
![]()
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:
|
1 |
sudo iptables -v -F <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:
|
1 |
sudo iptables -v -F |

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:
|
1 |
sudo iptables -v -P INPUT ACCEPT && sudo iptables -v -P FORWARD ACCEPT && sudo iptables -v -P OUTPUT ACCEPT |

Nyní vyčistěte tabulky nat a mangle:
|
1 2 |
sudo iptables -v -t nat -F sudo iptables -v -t mangle -F |


Vyčistěte všechny řetězce a odstraňte všechny nevýchozí řetězce:
|
1 2 |
sudo iptables -v -F sudo iptables -v -X |


Dále se podívejme na výsledek:
|
1 |
sudo iptables -L --line-numbers |
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!



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