Firewalld nahradil iptables jako firewall pro distribuce založené na RHEL. Syntaxe, kterou firewalld používá, je uživatelsky přívětivější. Tento příspěvek vám ukazuje, jak zajistit, aby firewalld běžel a spustil se při spuštění serveru. Ukazuje také, jak vytvořit trvalá a flexibilní pravidla brány firewall.
Poznámka :Red Hat®, CentOS®, Alma Linux®, Rocky Linux® také používá firewalld, takže všechny příkazy v tomto článku fungují také v obrázcích založených na RHEL, které má Rackspace k dispozici.
Základní koncepce brány firewall
Firewalld používá zóny ke správě skupin pravidel. Zóny jsou připojeny k síťovým rozhraním a určují, který provoz je v konkrétní síti povolen a který je zakázán.
Tato funkce může být užitečná, pokud chcete vytvořit velmi přísný firewall na vašem veřejném rozhraní a uvolněnější firewall na vašem rozhraní CloudNetwork. Užitečné je seznámit se se zónami, které jsou předdefinovány firewallem. Firewalld má následující předdefinované zóny, v pořadí od nejméně důvěryhodné po nejdůvěryhodnější:
drop
:Tato zóna umožňuje pouze odchozí připojení. Přeruší příchozí spojení bez odpovědi.block
:I když je to podobné jakodrop
, tato zóna odmítá příchozí požadavky sicmp-host-prohibited
neboicmp6-adm-prohibited
zpráva.public
:Tuto zónu použijte pro veřejné sítě, nebo když nedůvěřujete žádnému jinému počítači v síti. Tato zóna přijímá příchozí připojení případ od případu.external
:Tuto zónu použijte v externích sítích, kde firewall funguje jako brána. Tato zóna je nakonfigurována pro maskování překladu síťových adres (NAT), takže vaše interní síť je soukromá, ale dostupná.internal
:Tuto zónu použijte pro vnitřní část brány, kde jsou ostatní počítače přiměřeně důvěryhodné.dmz
:Tuto zónu použijte pro izolované počítače, které se nacházejí v demilitarizované zóně (DMZ). Tato zóna umožňuje pouze Secure Shell (SSH) a Internet Control Message Protocol (ICMP).work
:Tuto zónu použijte pro pracovní počítače.home
:Tuto zónu použijte pro domácí prostředí.trusted
:Tuto zónu použijte, když důvěřujete všem počítačům v síti.
Chcete-li použít bránu firewall, vytvořte pravidla a upravte vlastnosti svých zón a poté přiřaďte síťová rozhraní k zónám, které jsou pro vaši síť nejvhodnější.
Spusťte bránu firewall a povolte ji při spuštění
Ve výchozím nastavení by měla být povolena brána firewall, restartovat server a poté spustit atboot.
Zda firewall běží, můžete snadno zkontrolovat pomocí --state
flag, jak ukazuje následující příklad:
[user@server ~]$ sudo firewall-cmd --state
Finding out about your zones
Pokud firewalld neběží, můžete jej povolit a spustit spuštěním následujících příkazů:
[user@server ~]$ sudo systemctl enable firewalld
[user@server ~]$ sudo systemctl start firewalld
Spuštěním následujícího příkazu můžete zjistit, která zóna je aktuálně výchozí zónou:
[user@server ~]$ sudo firewall-cmd --get-default-zone
Spuštěním následujícího příkazu můžete zjistit, která síťová rozhraní jsou přiřazena ke kterým zónám:
[user@server ~]$ sudo firewall-cmd --get-active-zones
Poznámka :Výchozí nastavení přiřadí všechna síťová rozhraní veřejné zóně.
Pravidla, která jsou spojena s veřejnou zónou, můžete také najít spuštěním následujícího příkazu:
[user@server ~]$ sudo firewall-cmd --list-all --zone=public
Výstup by měl vypadat jako následující příklad:
public (default, active)
interfaces: eth0 eth1
sources:
services: dhcpv6-client http https ssh
ports: 1025/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
Výstup ukazuje, že veřejná zóna je výchozí a má síťová rozhraní eth0 a eth1. Dynamic Host Configuration Protocol (DHCP) (dhcpv6-client
), SSH, Hypertext Transfer Protocol (HTTP) a Secure HTTP (HTTPS) provoz je povolen, stejně jako provoz Transmission Control Protocol (TCP) na portu 1025
.
Chcete-li získat seznam dostupných zón, spusťte následující příkaz:
[user@server ~]$ sudo firewall-cmd --get-zones
Nastavte své zóny
Rozhraní mezi zónami můžete během relace přesouvat pomocí --change-interface=
argument a --zone
argument. Pokud se firewall restartuje, rozhraní se vrátí do výchozí zóny.
[user@server ~]$ sudo firewall-cmd --zone=internal --change-interface=eth1
Chcete-li definovat trvalou zónu pro rozhraní, otevřete konfigurační soubor pro rozhraní a přidejte následující řádky:
...
ONBOOT=yes
ZOME=internal
Uložte a zavřete soubor, poté spusťte následující příkazy, abyste restartovali síť a firewall a vynutili, aby se změny projevily:
[user@server ~]$ sudo systemctl restart network
[user@server ~]$ sudo systemctl restart firewalld
Nastavte pravidla
Firewalld přichází s předdefinovanými službami, které umožňují přidat pouze službu, nikoli číslo portu a typ protokolu. Například vám umožňují povolit http
spíše než tcp port 80
.
Seznam těchto služeb můžete získat pomocí následujícího příkazu:
[user@server ~]$ sudo firewall-cmd --get-services
Poté pomocí následujícího příkladu příkazu přidejte službu:
[user@server ~]$ sudo firewall-cmd --add-service=http
Konfigurace se projeví okamžitě, ale nepřežije restartování. Chcete-li povolit restartování těchto typů konfigurací služeb při restartování serveru, musíte přidat --permanent
argument. Doporučujeme spouštět oba tyto příkazy postupně, aby se konfigurace projevila okamžitě a služby se také restartovaly, jak ukazuje následující příklad:
[user@server ~]$ sudo firewall-cmd --add-service=http
firewall-cmd --permanent --add-service=http
Další podrobnosti o předdefinovaných pravidlech firewallu můžete získat tak, že přejdete na /usr/lib/firewalld/services/ adresář a čtení souborů.
Nastavte rozšířená pravidla
Rozsáhlá pravidla jak definujete podmínky ve firewalld. Nejběžnějším případem použití rozšířených pravidel je povolení přístupu z konkrétní IP adresy nebo rozsahu IP adres. Následující příkazy umožňují přístup k portu TCP 80 z libovolného IP v síti 192.168.0.0 a učiní pravidlo trvalým:
[user@server ~]$ sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept'
[user@server ~]$ sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' --permanent
Příklady bohatých pravidel naleznete na Fedora®Wiki.
Definujte služby
Můžete si vytvořit svou vlastní službu a odkazovat se na ni při vytváření pravidel umístěním afile do /usr/lib/firewalld/services/ adresář. Nejjednodušší způsob, jak provést tento úkol, zkopírováním existujícího souboru .xml v tomto adresáři a poté změňte podrobnosti.
Následující ukázkový příkaz zkopíruje existující soubor do nového souboru:
[user@server ~]$ sudo cp /usr/lib/firewalld/services/http.xml /usr/lib/firewalld/services/myservice.xml
Následující příkaz otevře nový soubor pro úpravy:
[user@server ~]$ sudo vim /usr/lib/firewalld/services/myserver.xml
Soubor by měl vypadat jako v následujícím příkladu:
<!--?xml version="1.0" encoding="utf-8"?-->
<service>
<short>My Custom Service</short>
<description>A brief description of the service. This rule allows port 1134 on TCP for my application.</description>
<port protocol="tcp" port="1134"></port>
</service>
Chcete-li použít změny, použijte následující příkazy s názvem souboru minus .xml přípona souboru:
[user@server ~]$ sudo firewall-cmd --add-service=myservice
[user@server ~]$ sudo firewall-cmd --permanent --add-service=myservice
Pomocí karty Zpětná vazba můžete přidat komentáře nebo položit otázky. Můžete s námi také zahájit konverzaci.