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 /):
kapka | minimální úroveň důvěry. Všechna příchozí spojení jsou blokována bez odezvy, jsou povolena pouze odchozí připojení; |
blok | zó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řejnost | Př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; |
dmz | použí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áce | zó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
# 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ý
Chcete-li odebrat pravidlo předávání portů:
# firewall-cmd --zone = public --remove-forward-port = port = 443: proto = tcp: toport = 9090