Vyhledávání na webu

Řada RHCSA: Základy brány firewall a řízení síťového provozu pomocí FirewallD a Iptables - Část 11


Jednoduše řečeno, firewall je bezpečnostní systém, který řídí příchozí a odchozí provoz v síti na základě sady předdefinovaných pravidel (jako je například cíl/zdroj paketů nebo typ provozu) .

V tomto článku se podíváme na základy firewalld, výchozího dynamického démona brány firewall v Red Hat Enterprise Linux 7, a služby iptables, starší verze firewallová služba pro Linux, se kterou je dobře obeznámena většina systémových a síťových administrátorů a která je dostupná také v RHEL 7.

Srovnání mezi FirewallD a Iptables

Pod kapotou jak firewalld, tak služba iptables mluví s rámcem netfilter v jádře prostřednictvím stejného rozhraní, není divu, že příkaz iptables . Na rozdíl od služby iptables však může firewalld měnit nastavení během normálního provozu systému, aniž by došlo ke ztrátě stávajících připojení.

Firewalld by měl být ve výchozím nastavení nainstalován ve vašem systému RHEL, i když nemusí být spuštěn. Můžete to ověřit pomocí následujících příkazů (firewall-config je konfigurační nástroj uživatelského rozhraní):


yum info firewalld firewall-config

a,


systemctl status -l firewalld.service

Na druhou stranu služba iptables není ve výchozím nastavení zahrnuta, ale lze ji nainstalovat prostřednictvím.


yum update && yum install iptables-services

Oba démony lze spustit a povolit spuštění při spouštění pomocí obvyklých příkazů systemd:


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

Čtěte také: Užitečné příkazy pro správu služeb Systemd

Pokud jde o konfigurační soubory, služba iptables používá /etc/sysconfig/iptables (který nebude existovat, pokud balíček není nainstalován ve vašem systému). Na boxu RHEL 7 používaném jako uzel clusteru vypadá tento soubor následovně:

Zatímco firewalld ukládá svou konfiguraci do dvou adresářů, /usr/lib/firewalld a /etc/firewalld:


ls /usr/lib/firewalld /etc/firewalld

Tyto konfigurační soubory dále prozkoumáme dále v tomto článku, poté, co sem tam přidáme několik pravidel. Nyní vám postačí připomenout, že o obou nástrojích můžete vždy najít více informací.


man firewalld.conf
man firewall-cmd
man iptables

Kromě toho se nezapomeňte podívat na Reviewing Essential Commands & System Documentation – část 1 aktuální série, kde jsem popsal několik zdrojů, kde můžete získat informace o balíčcích nainstalovaných ve vašem systému RHEL 7 .

Použití Iptables k řízení síťového provozu

Chcete-li si osvěžit paměť o interních zařízeních iptables, můžete se podívat do části Konfigurace Iptables Firewall – 8. část série Linux Foundation Certified Engineer (LFCE). než budete pokračovat dále. Budeme tedy moci skočit přímo do příkladů.

Příklad 1: Povolení příchozího i odchozího webového provozu

TCP porty 80 a 443 jsou výchozí porty používané webovým serverem Apache ke zpracování normálního (HTTP) a zabezpečeného (HTTPS<) webový provoz. V rozhraní enp0s3 můžete povolit příchozí a odchozí webový provoz přes oba porty takto:


iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Příklad 2: Blokujte všechna (nebo některá) příchozí spojení z konkrétní sítě

Mohou nastat situace, kdy budete muset zablokovat veškerý (nebo některý) typ provozu pocházejícího z konkrétní sítě, řekněme 192.168.1.0/24, například:


iptables -I INPUT -s 192.168.1.0/24 -j DROP

zahodí všechny balíčky přicházející ze sítě 192.168.1.0/24, zatímco


iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

povolí pouze příchozí provoz přes port 22.

Příklad 3: Přesměrujte příchozí provoz do jiného cíle

Pokud používáte svůj RHEL 7 box nejen jako softwarový firewall, ale také jako skutečný hardwarový firewall, takže je umístěn mezi dvěma odlišnými sítěmi, musí být ve vašem systému již povoleno předávání IP . Pokud ne, musíte upravit /etc/sysctl.conf a nastavit hodnotu net.ipv4.ip_forward na 1, a to následovně:


net.ipv4.ip_forward = 1

poté uložte změnu, zavřete textový editor a nakonec spusťte následující příkaz, abyste změnu použili:


sysctl -p /etc/sysctl.conf

Můžete mít například tiskárnu nainstalovanou v interní krabici s IP 192.168.0.10, přičemž služba CUPS naslouchá na portu 631 (obě na tiskovém serveru a na vaší bráně firewall). Chcete-li předávat požadavky na tisk od klientů na druhé straně brány firewall, měli byste přidat následující pravidlo iptables:


iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

Mějte prosím na paměti, že iptables čte svá pravidla postupně, takže se ujistěte, že výchozí zásady nebo pozdější pravidla nepřepisují pravidla uvedená ve výše uvedených příkladech.

Začínáme s FirewallD

Jednou ze změn, které přináší firewalld, jsou zóny. Tento koncept umožňuje rozdělit sítě do různých zón, úroveň důvěry, kterou se uživatel rozhodl vložit do zařízení a provozu v této síti.

Seznam aktivních zón:


firewall-cmd --get-active-zones

V níže uvedeném příkladu je veřejná zóna aktivní a rozhraní enp0s3 jí bylo přiřazeno automaticky. Chcete-li zobrazit všechny informace o konkrétní zóně:


firewall-cmd --zone=public --list-all

Protože si o zónách můžete přečíst více v příručce zabezpečení RHEL 7, uvedeme zde pouze některé konkrétní příklady.

Příklad 4: Povolení služeb přes bránu firewall

Chcete-li získat seznam podporovaných služeb, použijte.


firewall-cmd --get-services

Chcete-li povolit webový provoz http a https přes bránu firewall s okamžitou platností a při následujících spuštěních:


firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload

Pokud je kód>–zone vynechán, použije se výchozí zóna (můžete zkontrolovat pomocí firewall-cmd –get-default-zone).

Chcete-li pravidlo odstranit, nahraďte ve výše uvedených příkazech slovo přidat výrazem odebrat.

Příklad 5: Přesměrování IP/portů

Nejprve musíte zjistit, zda je pro požadovanou zónu povoleno maskování:


firewall-cmd --zone=MyZone --query-masquerade

Na obrázku níže vidíme, že maskování je povoleno pro externí zónu, ale ne pro veřejné:

Můžete buď povolit maskování pro veřejnost:


firewall-cmd --zone=public --add-masquerade

nebo použijte maskování v externích. Zde je postup, jak replikovat Příklad 3 pomocí firewallu:


firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

A nezapomeňte znovu načíst firewall.

Další příklady naleznete v části 9 série RHCSA, kde jsme vysvětlili, jak povolit nebo zakázat porty, které obvykle používá webový server a ftp server, a jak změnit odpovídající pravidlo, když je výchozí port pro tyto služby jsou změněny. Kromě toho se můžete podívat na firewallovou wiki pro další příklady.

Přečtěte si také: Užitečné příklady FirewallD pro konfiguraci brány firewall v RHEL 7

Závěr

V tomto článku jsme vysvětlili, co je to firewall, jaké jsou dostupné služby k jeho implementaci v RHEL 7 a poskytli jsme několik příkladů, které vám mohou pomoci začít s tímto úkol. Máte-li jakékoli připomínky, návrhy nebo dotazy, neváhejte nás kontaktovat pomocí formuláře níže. Děkuji předem!