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]
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í:
- Specifikujeme řetězec INPUT, tzn. pravidlo platí pro příchozí připojení.
- Dále použijte klíč -i (v rozhraní), k určení příchozího rozhraní, ke kterému ip paket dorazí.
- 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-prefixIN = 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 hodnotuMAC =
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 paketDST =
cílová ip adresa, na kterou byl odeslán ip paketLEN =
velikost ip paketu v bajtechSPT =
zdrojový port, ze kterého byl odeslán ip paketDPT =
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..