Jak používat iptables k filtrování paketů v Linuxu

Obsah

V tomto tutoriálu budeme mluvit o iptables, firewall nebo firewall, který máme v Linuxu. Tento nástroj nám umožní filtrovat pakety (kterými se tutoriál bude zabývat), generovat záznam protokolu, provádět překlady NAT.

Díky iptables můžeme generovat pravidla pro filtrování paketů docela jednoduše, i když to při prvním použití může vypadat poněkud matoucí, uvidíte, že když to používáte několik dní, nebude to mít žádné komplikace.

Použití tohoto nástroje vyžaduje vysoká oprávnění, to znamená, že k jeho spuštění budeme muset být superuživatelé. V iptables máme mnoho funkcí, cílem tutoriálu je pomocí příkladů přiblížit jeho použití. Je důležité, abyste po dokončení tutoriálu pokračovali v kopání, protože je to velmi užitečné.

Poté opustíme oficiální web pro případ, že by byl zajímavý:

PoznámkaPro IPv6 máme tabulky ip6.

Pokud chceme vidět informace o iptables, provedeme v terminálu následující:

 člověk iptables
Uvidíme následující informace:

Na obrázku vidíte část informací poskytnutých příkazem, abyste je viděli všechny, přejděte v terminálu dolů. Jak jsme viděli na začátku tutoriálu, jedním z úkolů, které nám iptables umožní, je vytvořit pravidla nebo filtry, abychom věděli, co dělat s pakety, jejichž původ / cíl má náš stroj. Pro tento úkol nás bude zajímat, proč používáme následující koncepty:

Desky
Iptables má několik tabulek, ale v našem kurzu se zaměřujeme pouze na filtrační stůl, který má na starosti filtrování, se ve výchozím nastavení používá v iptables.

Řetězy
Řetězce, které zde vložím, jsou ty, které patří do tabulky komentované dříve.

  • Vstup: Balíčky určené pro náš stroj.
  • Výstup: Balíčky pocházející z našeho systému.
  • Vpřed: Balíčky, které procházejí naším strojem, jsou směrovány do jiného.

Pravidla
Uvedeme 2, které budou použity v tutoriálu, ale existuje více.

  • Přijmout: Balíčky jsou přijímány.
  • Pokles: Pakety jsou vyřazeny.

Parametry
Některé z parametrů, které můžeme použít, jsou následující.

  • -Pravidlo: Chcete -li přidat pravidlo
  • -D pravidlo: Odstranit pravidlo, které označujeme.
  • -L: Umožňuje vypsat pravidla.
  • -F: Odstranit všechna stávající pravidla.
  • -j cíl: Nastavit typ pravidla (Přijmout, Zrušit).
  • -t stůl: Udává použitou tabulku (ve výchozím nastavení tabulka filtrů).
  • -p protokol: Používá se k označení protokolu.
  • -i rozhraní: Vytvoříme rozhraní pro pravidlo.
  • -s: K označení původu.
  • -d: K označení cíle.
  • -h: Zobrazí nápovědu.

Existuje mnoho dalších, jak mohou být -cílový port nebo --zdrojový port. Chcete -li je zobrazit všechny, můžete spustit příkaz, který jsme probrali výše:

 člověk iptables
Nebo můžete také spustit:
 iptables -h
PoznámkaMusíte se pečlivě podívat na možnosti, které nástroj nabízí, protože rozlišuje malá a velká písmena a můžeme udělat chybu (nebude stejné -p že -P).

Začněme příklady, celkem jich bude vloženo 10, takže bude lépe pochopeno a můžeme vidět, jak iptables funguje v režimu brány firewall. V příkladech neuvidíte sudo, nebude to nutné, pokud jste jako root, jinak budete muset na začátek každého příkladu přidat slovo sudo.

1. Zakažte odlet na jakékoli místo určeníNa začátek uvedeme snadný příklad, nenechávejte nikde východ.

 iptables -A VÝSTUP -j DROP
Tenhle je velmi snadný, jak vidíte, další je ještě jednodušší.

2. Vymažte všechna pravidlaPokračujeme velmi jednoduchým příkladem, ponecháme naše iptables bez pravidel, proto provedeme:

 iptables -F
Pojďme to v dalším trochu zkomplikovat.

3. Zakázat odjezd přes přístav 80Nyní se postaráme o uzavření výstupu přes konkrétní port, v tomto případě je to 80, proto nebudeme mít procházení webu protokolem http (pokud přejdeme na stránku https, můžeme navigovat, i když bychom mohli udělat to samé jako 80).

 iptables -A VÝSTUP -p tcp -cílový port 80 -j DROP
PoznámkaPři použití cílového nebo zdrojového portu budeme muset zadat parametr -p k označení protokolu.

Přejdeme ke čtvrtému příkladu.
4. Zakázat navigaci na stránkuPři této příležitosti máme zájem zakázat přístup na stránku X z našeho systému, představme si, že tato stránka je solvetic.com, za tímto účelem zjistíme její IP, velmi snadno provedením příkazu ping jej získáme.

A nyní provedeme:

 iptables -A VÝSTUP -d 178.33.118.246 -j DROP
Jak vidíme, stačí za parametrem uvést vaši IP -d.

5. Seznam pravidel, která existujíTento příklad se pokusí vypsat pravidla filtrování, která jsme aktuálně definovali:

 iptables -L
Vidíme obrázek, máme definována pouze dvě pravidla, jak vidíme níže:

Přejdeme k šestému příkladu, ve kterém opět použijeme seznam pravidel.

6. Odstraňte konkrétní pravidloZde, počínaje pravidly, která jsme měli v předchozím příkladu, odstraníme jedno z pravidel ukončení, v tomto případě první, které se objeví, provedeme následující:

 iptables -D VÝSTUP 1
A abychom ověřili, že byla skutečně odstraněna, použijeme příklad 5:

Pokračujme v dalších.

7. Vyhněte se pinguNechceme, aby na nás pingovali, za tímto účelem zablokujeme záznam pro protokol ICMP.

 iptables -A VSTUP -p ICMP -j DROP
Níže nechávám obrázek ping před spuštěním výše uvedeného příkazu a po:

Vidíme, že náš počítač neodpovídá, protože odmítá ICMP pakety. Pokud místo vstupu zablokujeme výstup, provedeme:

 iptables -A VÝSTUP -p ICMP -j DROP
Znovu se stane to samé, co na předchozím obrázku. Chcete -li otestovat, udělal jsem 3krát ping, pokud spustíme, uvidíme počet balíčků:
 iptables -L -v

Vidíme, že efektivně dá 3 na předchozí obrázek.

8. Zabraňte tomu, aby nám IP zasílala dataPoužijeme vstupní, nechceme, aby nás spojila určitá IP, takže provedeme:

 iptables -A VSTUP -s 192.168.66.1 -j DROP
Podívejme se na poněkud delší příklad.

9. Povolte ukončení řady IPPředstavte si, že chcete přijímat pouze výstupy na řadu IP adres, ale ostatní výstupy odmítnout, musíme provést:

 Iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT Iptables -A OUTPUT -j DROP
PoznámkaNa pořadí provedení pravidel záleží, zkuste tento příklad se sítí, kterou chcete povolit, a vytvořte připojení, uvidíte, že to funguje, poté smažte všechna pravidla a spusťte 2 věty obráceně, nyní by to spojení odmítlo .

Přejděme k desátému a poslednímu příkladu.

10. Otevřete port 143 (imap)Otevřeme port pro vstup všech paketů tcp, v tomto případě 143 (pro zbytek by to bylo stejné).

 iptables -A INPUT -m stav --state NOVINKA -p tcp --dport 143 -j PŘIJMOUT
V tomto příkladu jsme chtěli použít --port, takže vidíte, že můžeme použít toto nebo -cílový port, mohli bychom také použít --sport namísto --zdrojový port.

Zde tutoriál končí, nyní se pokusíte aplikovat jiná pravidla, čím více budete cvičit, tím budete při uplatňování pravidel rychlejší a tím vás to bude stát méně. Na závěr ponecháme tutoriál, který by vás mohl zajímat, otevírání a zavírání portů ve Windows 10.

wave wave wave wave wave