Konfigurujte FirewallD na serveru pomocí CentOS 8 a 7

Počínaje CentoOS 7 se objevil nový nástroj pro konfiguraci pravidel filtrování provozu. firewalld. Doporučuje se použít pro správu pravidel iptables. CentOS 8 nyní používá standardní modul niptables místo standardního filtrovacího balíčku iptables a při nastavování pravidel brány firewall pomocí brány firewall skutečně nftables konfigurujete. V tomto článku se budeme zabývat instalací, základními koncepty a konfigurací firewallu na serveru se systémem CentOS 8 (v CentOS 7 je vše stejné).


Obsah:

  • Základní pojmy, zóny a pravidla Firewallu
  • Nainstalujte a povolte firewalld na CentOS
  • Práce s pravidly firewallu
  • Firewalld: Blokování IP, výjimka
  • Port Forwarding ve firewallu

Firewalld - firewall pro ochranu serveru před nežádoucím provozem s podporou pro dynamickou správu pravidel (bez restartování) a implementace trvalých pravidel brány firewall. Funguje jako rozhraní pro iptables a nftables. FirewallD lze použít téměř ve všech distribucích Linuxu.

Základní pojmy, zóny a pravidla Firewallu

Než začnete s instalací a konfigurací firewalld, seznámíme se s konceptem zón, které se používají ke stanovení úrovně důvěry v různé sloučeniny. Pro různé zóny firewalld můžete použít různá pravidla filtrování, určit aktivní možnosti brány firewall ve formě předdefinovaných služeb, protokolů a portů, předávání portů a bohatých pravidel.

Firewalld filtruje příchozí provoz podle zón v závislosti na pravidlech platných pro zónu. Pokud IP-adresa odesílatele žádosti vyhovuje pravidlům kterékoli zóny, paket bude odeslán přes tuto zónu. Pokud adresa neodpovídá žádné zóně nakonfigurované na serveru, paket bude zpracován výchozí zónou. Při instalaci firewalld volá se výchozí zóna veřejnost.

V firewallu jsou zóny, kde jsou již přednastavena oprávnění pro různé služby. Můžete použít toto nastavení nebo vytvořit vlastní zóny. Seznam výchozích zón vytvořených během instalace firewallu (uložených v adresáři / usr / lib / firewalld / zones /):

kapkaminimální úroveň důvěry. Všechna příchozí spojení jsou blokována bez odezvy, jsou povolena pouze odchozí připojení;
blokzóna je podobná té předchozí, ale když jsou příchozí žádosti odmítnuty, je odeslána zpráva zakázaná icmp-host pro Ipv4 nebo icmp6-adm zakázaná zpráva pro Ipv6;
veřejnostPředstavuje veřejné, nedůvěryhodné sítě. Vybraná příchozí připojení můžete povolit jednotlivě;
vnějšíexterní sítě při použití brány firewall jako brány. Je nakonfigurován tak, aby maskoval NAT, takže vaše interní síť zůstává soukromá, ale přístupná;
vnitřníantonym vnější zóny. Hostitel má dostatečnou úroveň důvěry, je k dispozici řada dalších služeb;
dmzpoužívá se pro počítače umístěné v DMZ (izolované počítače bez přístupu ke zbytku sítě). Povolena jsou pouze určitá příchozí připojení;
prácezóna pro pracovní stroje (většina počítačů v síti je důvěryhodná);
domůdomácí síťová zóna. Můžete věřit většině počítačů, ale jsou podporována pouze určitá příchozí připojení;
důvěryhodnéDůvěřujte všem počítačům v síti. Nejotevřenější ze všech dostupných možností vyžaduje vědomé používání.

V firewalld používají se dvě sady pravidel - trvalé a dočasné. Dočasná pravidla fungují do restartování serveru. Ve výchozím nastavení při přidávání pravidel do firewalld, pravidla jsou považována za dočasná (runtime) Chcete-li přidat pravidlo průběžně, musíte použít příznak - trvalé. Tato pravidla budou platit po restartu serveru..

Nainstalujte a povolte firewalld na CentOS

V CentOS 7/8 je firewalld nainstalován ve výchozím nastavení při instalaci operačního systému. Pokud jste jej smazali a chcete nainstalovat firewall, můžete použít standardní správce yum / dnf:

# yum install firewalld -y - pro Centos 7
# dnf nainstalovat firewalld -y - pro Centos 8

Démonovi firewalld spustilo se automaticky se spuštěním serveru, musíte jej přidat do spuštění:

# systemctl povolit firewalld

A spustit:

# systemctl spusťte firewalld

Zkontrolujte stav služby:

# systemctl status firewalld

● firewalld.service - firewalld - dynamický démon brány firewall Načten: načten (/usr/lib/systemd/system/firewalld.service; povolen; předvolba dodavatele: povolen) Aktivní: aktivní (spuštěný) od pondělí 2019-10-14 14:54 : 40 +06; 22s Docs: man: firewalld (1) Hlavní PID: 13646 (firewalld) CGroup: /system.slice/firewalld.service └─13646 / usr / bin / python2 -Es / usr / sbin / firewalld --nofork --nopid 14. října 14:54:40 server.vpn.ru systemd [1]: Spuštění firewallu - dynamický démon firewallu ... 14. října 14:54:40 server.vpn.ru systemd [1]: Zahájený firewalld - dynamický démon brány firewall.

Nebo příkazem:

# firewall-cmd --state

Příkaz firewall-cmd je bránou firewalld k nftables / iptables.

# firewall-cmd --state

běh

Práce s pravidly firewallu

Výchozí pravidla:

Před konfigurací pravidel brány firewall je třeba zkontrolovat, která zóna je ve výchozím nastavení používána:

# firewall-cmd --get-default-zone

Protože jsme právě nainstalovali a nenakonfigurovali jsme firewall, máme výchozí zónu veřejnost.

Zkontrolujte jádro. Je také jedna - veřejná:

# firewall-cmd --get-active-zones

veřejná rozhraní: eth0

Jak vidíte, síťové rozhraní eth0 je řízeno zónou. veřejnost.

Lze zobrazit seznam síťových rozhraní CentOS:

# ip odkaz show
Nebo
# nmcli stav zařízení

Chcete-li zobrazit základní pravidla, zadejte:

# firewall-cmd - list-all

veřejný (aktivní) cíl: výchozí inverze icmp-bloků: žádná rozhraní: zdroje eth0: služby: dhcpv6-klientské ssh porty: protokoly: maškaráda: žádné forwardové porty: zdrojové porty: icmpbloky: bohatá pravidla:

Jak můžete vidět ze seznamu, do této zóny byly přidány obvyklé operace týkající se klienta DHCP a ssh..

Dostupné zóny

Chcete-li zobrazit seznam všech zón, musíte spustit příkaz:

# firewall-cmd --get-zones

Mám následující seznam:

block dmz drop externí domácí interní veřejná důvěryhodná práce

Chcete-li zkontrolovat pravidla konkrétní zóny, přidejte příznak - zone.

# firewall-cmd --zone = home - list-all

domovský cíl: výchozí inverze icmp-bloků: žádná rozhraní: zdroje: služby: dhcpv6-klient mdns mdns samba-client ssh porty: protokoly: maškaráda: žádné forwardové porty: zdrojové porty: icmp-bloky: bohatá pravidla:

Pravidla všech zón lze zobrazit příkazem:

# firewall-cmd - list-all-zones

Seznam bude poměrně velký, protože může existovat mnoho zón.

Změnit výchozí zónu.

Ve výchozím nastavení jsou všechna síťová rozhraní umístěna v zóně veřejnost, ale lze je přenést do libovolné zóny pomocí příkazu:

# firewall-cmd --zone = home -change-interface = eth0

Po parametru -zone = zadejte požadovanou zónu.

Chcete-li změnit výchozí zónu, použijte příkaz:

# firewall-cmd --set-default-zone = home

Přidávání pravidel pro aplikace

Chcete-li otevřít port pro aplikaci, můžete k výjimkám přidat službu. Zobrazit seznam dostupných služeb:

# firewall-cmd --get-services

Výstup bude obsahovat velké množství služeb. Podrobnosti o službě jsou obsaženy v xml soubor. Tyto soubory jsou umístěny v adresáři / usr / lib / firewalld / services.

Například:

# cd / usr / lib / firewalld / services

# cat smtp.xml

  Pošta (SMTP) Tato volba umožňuje příchozí doručování pošty SMTP. Pokud potřebujete povolit vzdáleným hostitelům připojit se přímo k vašemu zařízení a doručovat poštu, povolte tuto možnost. Toto nemusíte povolit, pokud shromažďujete poštu ze serveru vašeho poskytovatele pomocí protokolu POP3 nebo IMAP nebo pokud používáte nástroj, jako je fetchmail. Upozorňujeme, že nesprávně nakonfigurovaný server SMTP může umožnit vzdáleným počítačům používat váš server k odesílání nevyžádané pošty.  

Soubor XML obsahuje popis služby, protokol a číslo portu, které budou otevřeny ve firewallu.

Při přidávání pravidel můžete použít parametr -doplňková služba, Otevření přístupu ke konkrétní službě:

# firewall-cmd --zone = public --add-service = http

úspěch

# firewall-cmd --zone = public --add-service = https

úspěch

Po přidání pravidel můžete zkontrolovat, zda jsou služby přidány do určené zóny:

# firewall-cmd --zone = veřejné --list-services

dhcpv6-client http https ssh

Pokud chcete, aby tato pravidla byla trvalá, musíte při přidávání přidat parametr -trvalé.

Odebrání služby ze zóny:

# firewall-cmd - permanentní --zone = public --remove-service = http

# firewall-cmd --zone = public - permanentní --list-services

https ssh test dhcpv6-client

Pokud chcete službu přidat k výjimkám, můžete vytvořit soubor xml a vyplňte to. Můžete kopírovat data z libovolné služby, změnit název, popis a číslo portu.

Zkopírujte soubor smtp.xml do adresáře pro práci s uživatelskými službami:

# cp /usr/lib/firewalld/services/smtp.xml / etc / firewalld / services

Změňte popis služby v souboru.

Samotný soubor xml musí být také přejmenován názvem vaší služby. Poté musíte restartovat firewalld a zkontrolovat, zda je naše služba v seznamu:

# firewall-cmd --get-services

Zavolal jsem do služby test a v seznamu se objevil:

syslog-tls telnet test tftp

Nyní můžete vytvořenou službu přidat do libovolné zóny:

# firewall-cmd --zone = public --add-service = test - stálý

úspěch

# firewall-cmd --zone = public - permanentní --list-services

http https ssh test dhcpv6-client

Pokud jste v seznamu nenašli službu, kterou potřebujete, můžete požadovaný port na firewallu otevřít příkazem:

# firewall-cmd --zone = public -add-port = 77 / tcp - otevřený port 77 tcp
# firewall-cmd --zone = public -add-port = 77 / udp - otevřený port 77 udp
# firewall-cmd --zone = public -add-port = 77-88 / udp - rozsah otevřených portů 77-88 udp
# firewall-cmd --zone = veřejné -list-porty - zkontrolujte seznam povolených portů

Blokovat / povolit odpovědi ICMP:

# firewall-cmd --zone = public --add-icmp-block = echo-response
# firewall-cmd --zone = public --remove-icmp-block = echo-response

Smazat přidaný port:

# firewall-cmd --zone = public -remove-port = 77 / udp - odstranit dočasné pravidlo 77 udp

# firewall-cmd - permanentní --zone = public -remove-port = 77 / udp - odstranit trvalé pravidlo

Přidání vlastních zón

Můžete si vytvořit vlastní zónu (pojmenuji ji naše):

# firewall-cmd - permanentní - novinka = naše

Po vytvoření nové zóny a po vytvoření služby je třeba restartovat počítač firewalld:

# firewall-cmd - načíst

úspěch

# firewall-cmd --get-zones

block dmz drop external home internal naší veřejná důvěryhodná práce

Zóna naše k dispozici. Můžete do něj přidat služby nebo otevřít určité porty.

Firewalld: Blokování IP, výjimka

Důvěryhodné adresy IP můžete přidat k výjimkám brány firewall nebo blokovat nežádoucí adresy.

Přidání konkrétní IP adresy (například 8.8.8.8) na váš server pomocí výjimek firewalld, použijte příkaz:

# firewall-cmd --zone = public --add-rich-Rule = 'Rule family = "ipv4" source address = "8.8.8.8" accept'

Zkontrolujte oblast a ujistěte se, že IP přidáno k výjimkám v pravidlech bohatých pravidel:

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

veřejný (aktivní) cíl: výchozí inverze icmp-bloků: žádná rozhraní: zdroje eth0: služby: dhcpv6-klient http https ssh testovací porty: protokoly: maškaráda: žádné forwardové porty: zdrojové porty: icmp-bloky: bohatá pravidla: Rule family = "ipv4" source address = "8.8.8.8"

Blokovat IP, je třeba vyměnit přijmout dál odmítnout:

# firewall-cmd --zone = public --add-rich-Rule = 'Rule family = "ipv4" source address = "8.8.4.4" odmítnout'

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

veřejný (aktivní) cíl: výchozí inverze icmp-bloků: žádná rozhraní: zdroje eth0: služby: dhcpv6-klient http https ssh testovací porty: protokoly: maškaráda: žádné forwardové porty: zdrojové porty: icmp-bloky: bohatá pravidla: Rule family = "ipv4" source address = "8.8.8.8" akceptovat Rule family = "ipv4" source address = "8.8.4.4" odmítnout

Konkrétní službu můžete povolit pouze pro požadavky z konkrétní adresy IP:

# firewall-cmd --permanent - add-rich-Rule 'Rule family = "ipv4" source address = "10.10.1.0/24" service name = "https" akcept'

Pokud naléhavě potřebujete blokovat všechny požadavky na server, použijte příkaz panic:

# firewall-cmd --panic-on

Režim paniky můžete zakázat příkazem:

# firewall-cmd --panic-off

Nebo restartujte server.

Můžete zablokovat konfiguraci brány firewall, aby místní služby s oprávněním root nemohly změnit pravidla brány firewall, která jste vytvořili:

# firewall-cmd - odblokování

Vypnout režim zámku:

# firewall-cmd - odblokování

Port Forwarding ve firewallu

V firewallu můžete vytvořit pravidlo pro předávání portů. Přesměrování portu 443 na 9090:

# firewall-cmd --zone = public --add-forward-port = port = 443: proto = tcp: toport = 9090 - stálý

V systému Windows můžete přesměrování portů nakonfigurovat pomocí netsh.

Chcete-li odebrat pravidlo předávání portů:

# firewall-cmd --zone = public --remove-forward-port = port = 443: proto = tcp: toport = 9090