Konfigurace firewallu Linux pomocí iptables na CentOS / RHEL 7

V tomto článku si ukážeme, jak spravovat linuxovou bránu firewall pomocí klasické iptables namísto firewallu v CentOS / RHEL 7 pro filtrování příchozí a odchozí komunikace. Tento článek popisuje, jak nakonfigurovat iptables na CentOS 7 tak, aby filtroval příchozí provoz, pomocí příkladu cloudového virtuálního serveru nasazeného od nuly myserver01, přístupné z internetu.

Obsah:

  • Zakázání brány firewall v CentOS 7
  • Syntaxe a pravidla iptables v CentOS / Red Hat
  • Vytváření pravidel filtrování provozu v iptables
  • Povolit protokoly iptables
  • Uložení a obnovení pravidel filtrování iptables

Zakázání brány firewall v CentOS 7

CentOS 7 standardně používá bránu firewall k ovládání brány firewall firewalld. Poskytuje své vlastní rozhraní, ale nakonec také funguje pomocí obslužného programu iptables. Zároveň by měl být firewall ovládán buď přes firewalld, nebo přímo prostřednictvím iptables.

firewalld není náhradou, ale obálkou kolem iptables, můžete z ní použít to, co se vám líbí více nebo vhodněji za určitých podmínek. iptables je univerzálnější, je to základní nástroj, ale je trochu obtížnější ho zvládnout. firewalld poskytuje jednodušší rozhraní, ale například CentOS 6 ho nemůže použít a pro další distribuce musíte mít potřebné instalační balíčky. Pokud navíc používáte aplikace, které ve firewallu nastavují svá nastavení, musí být kompatibilní s firewalld (příkladem takových aplikací je docker, fail2ban).

Zkontrolujte stav firewallu a vypněte jej.

systemctl status firewalld

Na výstupu z příkazu obíhala oblast se slovem červeně povoleno, znamená, že spuštění je zapnuto a oblast kroužila žlutě se slovem aktivní, znamená, že služba běží.

Zastavíme službu a vypneme automatické načítání:

systemctl stop firewalld
systemctl zakáže firewalld

Opětovná kontrola stavu:

Nyní se zobrazí výstup příkazu zakázáno pro automatické načtení (vypnuto) a neaktivní znamená, že služba je vypnutá.

Syntaxe a pravidla iptables v CentOS / Red Hat

Iptables - Toto je nástroj, který konfiguruje pravidla brány firewall v systému Linux.

Iptables seskupuje pravidla brány firewall do tabulek, hlavní jsou:

  • Tabulka filtr - používá se k filtrování provozu, tj. povolení a zakázání připojení
  • Tabulka nat - používá se k překladu adres (NAT)
  • Tabulka mangle - další modifikace hlaviček ip paketů.

Nejprve zkontrolujte, zda je v systému nainstalován iptables (měl by být výchozí):

rpm -q iptables

Výstup z příkazu ukazuje, že aktuální nainstalovaná verze iptables je 1.4.21.

Práce s iptables na příkazovém řádku vyžaduje oprávnění root, takže budeme i nadále pracovat jako root.

Chcete-li zobrazit aktuální pravidla, spusťte příkaz:

iptables [-t tabulka] -L [řetězec] [parametry]

Poznámka: Pokud při vyvolání příkazu nezadáte název tabulky, použije se výchozí tabulka filtr.

Například výsledek příkazu iptables -L, pokud dosud nebyla v tabulkách vytvořena žádná pravidla:

Vezměte v úvahu výstup příkazu podrobněji.

Tabulka filtr obsahuje tři typy pravidel, tzv. řetěz (řetěz):

  • INPUT - příchozí ip pakety určené pro samotného hostitele jsou zpracovány v tomto řetězci;
  • OUTPUT - v tomto řetězci jsou zpracovávány odchozí ip pakety od samotného hostitele;
  • FORWARD - tento řetězec je potřebný pro přesměrování ip paketů. Používá se, pokud chcete server použít jako směrovač.

Naproti každému řetězci je výchozí politika, která určuje, co je třeba udělat, pokud připojení nespadá do žádného z pravidel. Výchozí zásada může nabývat dvou hodnot a určuje přístup k samotné organizaci brány firewall:

  • ACCEPT - ve výchozím nastavení jsou povolena všechna připojení, pravidla blokují nežádoucí připojení;
  • DROP - ve výchozím nastavení jsou všechna připojení odepřena, pravidla umožňují nezbytná připojení.

Vytváření pravidel filtrování provozu v iptables

Filtr Iptables podle rozhraní

Začněme s tvorbou pravidel. Syntaxe příkazu pro přidání nového pravidla na konec zadaného řetězce vypadá takto:

iptables [-t tabulka] -A -j

Nejprve povolme provoz přes rozhraní zpětné smyčky (127.0.0.1), které je pro některé aplikace nezbytné:

iptables -A INPUT -i lo -j ACCEPT

Pojďme analyzovat v pořadí:

  1. Specifikujeme řetězec INPUT, tzn. pravidlo platí pro příchozí připojení.
  2. Dále použijte klíč -i (v rozhraní), k určení příchozího rozhraní, ke kterému ip paket dorazí.
  3. Dokončíme příkaz klíčem -j (skok), určení akce, která bude provedena pro všechny pakety ip, které splňují kritéria z odstavce 2. V tomto případě ACCEPT umožní připojení. Kromě toho základní akce s připojením také zahrnují:
    • DROP - zakázat připojení, zdroj připojení není informován, ip paket je jednoduše vyřazen;
    • REJECT - vypne připojení, zdroj připojení je informován zprávou.

Iptables filtruje podle portu, protokolu nebo IP adresy

Nyní přidejte pravidlo povolení pro připojení k našemu Linuxovému serveru přes SSH na portu 22.

iptables -A INPUT -p tcp --port 22 -j ACCEPT

V tomto pravidle jsou kritéria a port. Protokol (tcp, udp, icmp, all) se nastavuje klíčem -p (-protokol), cílový port (tj. port, na který ip pakety přijdou na server) -dport.

Poznámka:: pokud chcete v kritériích použít cílový nebo zdrojový port (-dport nebo -sport), poté zadejte protokol.

Můžete například určit rozsah portů dvojtečkou

--dport 6000: 6063

Pokud známe IP adresy klientů, ze kterých se připojíme k serveru, bude bezpečnější povolit přístup pouze z těchto IP adres. V takovém případě přidejte do kritérií -s (-src, -source) a určete adresu IP nebo podsíť zdroje připojení, například pomocí tohoto pravidla:

iptables -A INPUT -p tcp -s 94.41.174.122 --port 22 -j ACCEPT

přístup k portu 22 bude povolen pouze z IP adresy 94.41.174.122.

Částečně povolit požadavky icmp, 3 typy:

iptables -A INPUT -p icmp - echo-request typu ymp -j ACCEPT
iptables -A INPUT -p icmp --icic-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp - časově překročený typmp -j ACCEPT

Tato pravidla umožňují nástroje ping, traceroute a umožňují mechanismu určit MTU mezi dvěma hostiteli.

Filtr iptables stavu připojení

Pro správnou funkci budete muset vytvořit pravidlo, které umožní již navázaná připojení:

iptables -A INPUT -m state - stav STANOVENÝ, SOUVISEJÍCÍ -j AKCEPT

Zde se klíč používá v kritériích -m, načíst stavový modul, který umožňuje určit aktuální stav ip paketu z možných:

  • NOVINKA - označuje příchozí ip pakety zapojené do navazování spojení;
  • ESTABLISHED and RELATED - označuje příchozí ip pakety účastnící se již navázaných spojení nebo spojení iniciovaná z již navázaných spojení (připojená připojení);
  • INVALID - označuje příchozí ip pakety, pokud se na ně nevztahuje žádná z výše uvedených podmínek.

Nastavení výchozí zásady iptables

Minimální sada povolujících pravidel pro firewall je připravena, zbývá nastavit výchozí zásadu, která zakazuje všechna příchozí připojení, která nesplňují naše pravidla. Chcete-li to provést, použijte klíč v příkazu iptables -P, nastavuje výchozí zásady pro daný řetězec, v našem případě:

iptables -P INPUT DROP

Pozor: před použitím tohoto příkazu se musíte ujistit, že vaše současná pravidla umožňují připojení k serveru, jinak jednoduše zablokujete přístup k sobě!
Pojďme se podívat na výslednou tabulku pravidel iptables, přidejte klíč -v, ukázat podrobnější výstup:
iptables -L -v

Povolit protokoly iptables

Iptables umožňuje zapisovat informace o předávání ip paketů do systémového protokolu. To je realizováno prostřednictvím konkrétní akce. LOG nad spojem, po kterém se paket ip pokračuje v pohybu neporušeným řetězcem. Například vytvořte pravidlo, které zaznamená všechny události připojení k portu 445 (tcp) v systémovém protokolu:

iptables -A INPUT -p tcp --port 445 -j LOG --log-prefix "IN SMB DROP:"

zde -log-prefix nastaví předponu pro všechny zprávy zaznamenané naším pravidlem. To je výhodné, pokud máte několik různých pravidel protokolování nebo pro další zpracování softwaru. Pokud se nyní pokusíte připojit externě k našemu serveru na portu 445, například přes telnet, v souboru / var / log / messages zobrazí se záznamy:

Pojďme analyzovat závěr:

  • V SMB DROP: prefix, který jsme nastavili s možností -log-prefix
  • IN = eth0 rozhraní, na kterém je paket ip přijat, obsahuje prázdnou hodnotu pro odchozí spojení
  • OUT = rozhraní, ze kterého byl paket ip odeslán pro příchozí připojení, obsahuje prázdnou hodnotu
  • MAC = spojeny v následujícím pořadí: cílová MAC adresa, zdrojová MAC adresa, EtherType - 08:00 odpovídá IPv4.
  • Src = ip adresa zdroje, ze kterého byl odeslán ip paket
  • DST = cílová ip adresa, na kterou byl odeslán ip paket
  • LEN = velikost ip paketu v bajtech
  • SPT = zdrojový port, ze kterého byl odeslán ip paket
  • DPT = cílový port, na který je odeslán paket ip

Uložení a obnovení pravidel filtrování iptables

Nakonec nakonfigurujte automatické načtení pravidel po restartování serveru. K tomu je nutné nainstalovat balíček. iptables-services a služba je aktivována. Nainstalujte balíček přes yum:

yum install iptables-services
systemctl povolit iptables

Zkontrolujte stav služby iptables:

systemctl status iptables

Možnost spuštění je nastavena na povoleno (on) parametr aktivní označuje, že služba je spuštěna.

Při načítání služba přečte obsah souboru / etc / sysconfig / iptables, a obnovit uložená pravidla. Abychom do něj naše pravidla uložili, použijeme příkaz:

iptables-save> / etc / sysconfig / iptables

Pravidla můžete ze souboru obnovit příkazem:

iptables-restore < /etc/sysconfig/iptables

Nyní můžete restartovat server a ujistit se, že pravidla brány firewall jsou obnovena v době spuštění.

V dalším článku si ukážeme, jak pomocí iptables vytvořit pravidla pro přesměrování provozu NAT pro přístupovou bránu na bázi CentOS z / do vnitřní sítě organizace..