Wéi installéiere, konfiguréieren a benotzen Firewalld an CentOS an Ubuntu


Firewalld (Firewall Daemon) ass eng Alternativ zum iptables Service, fir dynamesch e System Firewall mat Ënnerstëtzung fir Netzwierk (oder Firewall) Zonen ze managen a bitt en D-Bus Interface fir Konfiguratiounen ze managen. Et ass einfach ze benotzen an ze konfiguréieren, an et ass elo de Standard Firewall Management Tool op RHEL/CentOS, Fedora a verschidde aner Linux Verdeelungen.

An dësem Artikel wäerte mir diskutéieren wéi Dir System Firewall mat Firewalld konfiguréiert an d'Basis Paketfilterung an CentOS/RHEL 7 an Ubuntu implementéiert.

D'Basics Iwwer Firewalld

Firewalld besteet aus dräi Schichten, déi sinn:

  • Kärschicht: verantwortlech fir d'Konfiguratioun an d'Backends ze handhaben (ënnert opgelëscht).
  • D-Bus Interface: dat primärt Mëttel fir d'Firewall Konfiguratioun z'änneren an ze kreéieren.
  • Backends: fir Interaktioun mam Netfilter (den gebiertege Kernel Modul fir Firewalling benotzt). Si enthalen iptables, ip6tables, ebtables, ipset, nft, linnftables; Netzwierkmanager; a Moduler.

Et geréiert Firewall Reegelen andeems se Netzwierk/Firewall Zonen implementéieren, déi de Vertrauensniveau vun Netzwierkverbindungen oder Interfaces definéieren. Aner ënnerstëtzt Firewall Feature enthalen Servicer, direkt Konfiguratioun (benotzt fir direkt rau iptables Syntax ze passéieren), IPSets souwéi ICMP Typen.

Zwou Aarte vu Konfiguratiounsëmfeld gi vu Firewalld ënnerstëtzt:

  • Runtime Konfiguratioun déi nëmmen effektiv ass bis d'Maschinn nei gestart gouf oder de Firewalld Service nei gestart gouf
  • Permanent Konfiguratioun déi gespäichert ass a bestänneg funktionnéiert.

De Firewall-cmd Kommandozeil Tool gëtt benotzt fir Runtime a permanent Konfiguratioun ze managen. Alternativ kënnt Dir d'Firewall-Config graphical User Interface (GUI) Konfiguratiounsinstrument benotzen fir mam Daemon ze interagéieren.

Zousätzlech bitt Firewalld eng gutt definéiert Interface fir aner lokal Servicer oder Uwendungen fir Ännerunge vun de Firewall Regelen direkt ze froen, wa se mat root Privilegien lafen.

Déi global Konfiguratiounsdatei fir Firewalld ass op /etc/firewalld/firewalld.conf a Firewall Features sinn am XML-Format konfiguréiert.

Wichteg Firewalld Features verstoen

Déi zentral Feature vu Firewalld ass Netzwierk/Firewall Zonen. All aner Feature ass op eng Zone begrenzt. Eng Firewall Zone beschreift d'Vertrauensniveau fir eng Verbindung, Interface oder Quelladressbindung.

D'Standardkonfiguratioun kënnt mat enger Zuel vu virdefinéierte Zonen, déi no dem Standardvertrauensniveau vun den Zonen zortéiert sinn vun onvertrauen op vertraut: drop, blockéieren, ëffentlech, extern, dmz, Aarbecht, doheem, intern a vertraut. Si ginn an Dateien definéiert, déi ënner dem /usr/lib/firewalld/zones Verzeechnes gespäichert sinn.

Dir kënnt Är personaliséiert Zonen mat dem CLI Client konfiguréieren oder addéieren oder einfach eng Zonedatei an /etc/firewalld/zones aus existéierende Dateien erstellen oder kopéieren an se änneren.

En anert wichtegt Konzept ënner Firewalld ass Servicer. E Service gëtt definéiert mat Ports a Protokoller; Dës Definitioune representéieren e bestëmmten Netzwierkservice wéi e Webserver oder Fernzougangservice. D'Servicer ginn definéiert an Dateien, déi ënner dem /usr/lib/firewalld/services/ oder /etc/firewalld/services/ Verzeichnis gespäichert sinn.

Wann Dir Basis iptables/ip6tables/ebtables Konzepter kennt, kënnt Dir och den direkten Interface (oder Configuratioun) benotzen fir direkten Zougang zu der Firewall ze kréien. Awer, fir déi ouni Iptables Wëssen, kënnt Dir déi räich Sprooch benotze fir méi komplex Firewall Reegele fir IPv4 an IPv6 ze kreéieren.

Wéi installéiere Firewalld Package am Linux

Op CentOS 7 kënnt de Firewalld Package virinstalléiert an Dir kënnt mat de folgende Kommando verifizéieren.

$ rpm -qa firewalld

Op Ubuntu 16.04 an 18.04 kënnt Dir se mat dem Standard Package Manager installéieren wéi gewisen.

$ sudo apt install firewalld

Wéi Manage Firewalld Service a Linux

Firewalld ass e reguläre systemd Service deen iwwer de Systemctl Kommando verwalt ka ginn.

 
$ sudo systemctl start firewalld	#start the service for the mean time
$ sudo systemctl enable firewalld	#enable the service to auto-start at boot time
$ sudo systemctl status firewalld	#view service status

Nodeems Dir de Firewalld Service gestart hutt, kënnt Dir och kontrolléieren ob den Daemon leeft oder net, mat dem Firewall-cmd Tool (am Fall datt et net aktiv ass, gëtt dëse Kommando net lafen).

$ sudo firewall-cmd --state

Wann Dir eventuell Ännerungen permanent späichert, kënnt Dir Firewalld nei lueden. Dëst wäert Firewall Regelen nei lued a Staat Informatioun behalen. Déi aktuell permanent Konfiguratioun gëtt nei Runtime Konfiguratioun.

$ sudo firewall-cmd --reload

Wéi schafft Dir mat Firewall Zonen a Firewalld

Fir eng Lëscht vun all verfügbare Firewall Zonen a Servicer ze kréien, lafen dës Kommandoen.

$ sudo firewall-cmd --get-zones
$ sudo firewall-cmd --get-services

D'Standardzon ass d'Zone déi fir all Firewall Feature benotzt gëtt déi net explizit un eng aner Zone begrenzt ass. Dir kënnt d'Default Zone fir Netzwierkverbindungen an Interfaces gesat kréien andeems Dir lafen.

$ sudo firewall-cmd --get-default-zone

Fir d'Standardzon ze setzen, zum Beispill op extern, benotzt de folgende Kommando. Bedenkt datt d'Optioun --permanent derbäigesat gëtt, setzt d'Konfiguratioun permanent fest (oder erméiglecht d'Ufro vun Informatioun aus dem permanente Konfiguratiounsëmfeld).

$ sudo firewall-cmd --set-default-zone=external
OR
$ sudo firewall-cmd --set-default-zone=external --permanent
$ sudo firewall-cmd --reload 

Als nächst kucke mer wéi een en Interface an eng Zone bäidréit. Dëst Beispill weist wéi Dir Ären drahtlose Netzwierkadapter (wlp1s0) an d'Zone doheem addéiere kënnt, déi an Heemberäicher benotzt gëtt.

$ sudo firewall-cmd --zone=home --add-interface=wlp1s0

Eng Interface kann nëmmen zu enger eenzeger Zone dobäi ginn. Fir et an eng aner Zone ze réckelen, benotzt den --change-interface Schalter wéi gewisen, oder läscht se aus der viregter Zone mam –remove-Interface Schalter, füügt se dann an déi nei Zone bäi.

Unzehuelen datt Dir mat engem ëffentleche WI-FI Netz verbannen wëllt, sollt Dir Är Wireless-Interface zréck an d'ëffentlech Zone réckelen, sou:

$ sudo firewall-cmd --zone=public --add-interface=wlp1s0
$ sudo firewall-cmd --zone=public --change-interface=wlp1s0

Dir kënnt vill Zonen zur selwechter Zäit benotzen. Fir eng Lëscht vun all aktiven Zonen mat den aktivéierten Features wéi Interfaces, Servicer, Ports, Protokoller ze kréien, lafen:

$ sudo firewall-cmd --get-active-zones

Am Zesummenhang mat dem viregte Punkt, Wann Dir méi Informatioun iwwer eng bestëmmte Zone wëllt fannen, dh alles dobäigesat oder aktivéiert, benotzt ee vun dëse Kommandoen:

$ sudo firewall-cmd --zone=home --list-all
OR
$ sudo firewall-cmd --info-zone public

Eng aner nëtzlech Optioun ass --get-target, déi Iech d'Zil vun enger permanenter Zone weist. En Zil ass ee vun: Standard, ACCEPT, DROP, REJECT. Dir kënnt d'Zil vu verschiddenen Zonen kontrolléieren:

$ sudo firewall-cmd --permanent --zone=public --get-target  
$ sudo firewall-cmd --permanent --zone=block --get-target  
$ sudo firewall-cmd --permanent --zone=dmz --get-target  
$ sudo firewall-cmd --permanent --zone=external --get-target
$ sudo firewall-cmd --permanent --zone=drop --get-target

Wéi opzemaachen a blockéieren Ports a Firewalld

Fir e Port (oder Port/Protokoll Kombinatioun) an der Firewall opzemaachen, fügen se einfach an eng Zone mat der --add-port Optioun. Wann Dir d'Zone net explizit spezifizéiert, gëtt se an der Standardzon aktivéiert.

Dat folgend Beispill weist wéi een den Hafen 80 an 443 derbäi kënnt fir am gebonnene Webverkéier iwwer HTTP- an HTTPS-Protokoller z'erméiglechen, respektiv:

$ sudo firewall-cmd --zone=public --permanent --add-port=80/tcp --add-port=443/tcp

Als nächst, lued d'Firewalld nei a kontrolléiert déi aktivéiert Funktiounen an der ëffentlecher Zone nach eng Kéier, Dir sollt déi just addéiert Ports gesinn.

$ sudo firewall-cmd --reload
$ sudo firewall-cmd --info-zone public

E Port an der Firewall blockéieren oder zoumaachen ass gläich einfach, läscht se einfach aus enger Zone mat der --remove-port Optioun. Zum Beispill, fir Häfen 80 an 443 an der ëffentlecher Zone zouzemaachen.

$ sudo firewall-cmd --zone=public --permanent --remove-port=80/tcp --remove-port=443/tcp

Amplaz e Port oder Port/Protokoll Kombinatioun ze benotzen, kënnt Dir de Servicenumm benotze fir deen e Port zougewisen ass wéi an der nächster Rubrik erkläert.

Wéi opzemaachen a blockéieren Servicer a Firewalld

Fir e Service an der Firewall opzemaachen, aktivéiert et mat der Optioun --add-service. Wann Zone ewech gelooss gëtt, gëtt Standardzon benotzt.

De folgende Kommando wäert den http Service an der ëffentlecher Zone permanent aktivéieren.

$ sudo firewall-cmd --zone=public --permanent --add-service=http 
$ sudo firewall-cmd --reload 

D'Optioun --remove-service kann benotzt ginn fir e Service auszeschalten.

$ sudo firewall-cmd --zone=public --permanent --remove-service=http 
$ sudo firewall-cmd --reload 

Wéi aktivéiert an deaktivéiert IP Masquerading mat Firewalld

IP Masquerading (och bekannt als IPMASQ oder MASQ) ass en NAT (Network Address Translation) Mechanismus am Linux Netzwierk deen Är Hosten an engem Netzwierk erlaabt, mat privaten IP Adressen mam Internet ze kommunizéieren mat Ärem Linux Server (IPMASQ Gateway) zougewisen ëffentlech IP Adress.

Et ass eng een-zu-vill Kaart. Traffic vun Ären onsichtbare Hosten erschéngen op aner Computeren um Internet wéi wann et vun Ärem Linux Server kënnt.

Dir kënnt d'IP Masquerading an enger gewënschter Zone aktivéieren, zum Beispill an der ëffentlecher Zone. Awer ier Dir dat maacht, kontrolléiert als éischt ob d'Masquerading aktiv ass oder net (e \Nee heescht datt et behënnert ass an e \Jo heescht anescht).

$ sudo firewall-cmd --zone=public --query-masquerade
$ sudo firewall-cmd --zone=public --add-masquerade

En typesche Benotzungsfall fir Masquerading ass Port Forwarding ze maachen. Ugeholl datt Dir wëllt SSH vun enger Fernmaschinn op en Host an Ärem internen Netzwierk mat der IP 10.20.1.3, op deem den sshd Daemon um Port 5000 lauschtert.

Dir kënnt all Verbindungen op den Hafen 22 op Ärem Linux-Server op de geplangten Hafen op Ärem Zilhost weiderginn andeems Dir erausginn:

$ sudo firewall-cmd --zone=public --add-forward-port=port=22=proto=tcp:toport=5000:toaddr=10.20.1.3

Fir d'Masquerading an enger Zone auszeschalten, benotzt den --remove-masquerade Schalter.

$ sudo firewall-cmd --zone=public --remove-masquerade

Wéi aktivéiert an auszeschalten IMCP Message an Firewalld

ICMP (Internet Control Message Protocol) Messagen sinn entweder Informatiounsufroen oder Äntwerten op Informatiounsufroen oder a Feelerbedéngungen.

Dir kënnt ICMP Messagen an der Firewall aktivéieren oder deaktivéieren, awer virun deem éischten Lëscht all ënnerstëtzt icmp Typen.

$ sudo firewall-cmd --get-icmptypes

Fir e Blocktyp ze addéieren oder ze läschen deen Dir wëllt.

$ sudo firewall-cmd --zone=home --add-icmp-block=echo-reply
OR
$ sudo firewall-cmd --zone=home --remove-icmp-block=echo-reply

Dir kënnt all icmp-Typen, déi an enger Zone bäigefüügt sinn, mat dem --list-icmp-blocks Schalter kucken.

$ sudo firewall-cmd --zone=home --list-icmp-blocks

Wéi benotzt Dir direkten Interface fir Raw iptables Kommandoen ze passéieren

D'Firewall-cmd bitt och direkt Optiounen (--direct) fir Iech méi direkten Zougang zu der Firewall ze kréien. Dëst ass nëtzlech fir déi mat Basiskenntnisser vun iptables.

Wichteg: Dir sollt nëmmen déi direkt Optiounen als leschten Auswee benotzen wann et net méiglech ass déi regulär Firewall-cmd Optiounen ze benotzen, déi hei uewen erkläert ginn.

Hei ass e Beispill wéi Dir d'Raw iptables Regel passéiert, andeems Dir de --add-rules Schalter benotzt. Dir kënnt dës Regele ganz einfach ewechhuelen andeems Dir --add-rule duerch --remove-rule ersetzt:

$ sudo firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 80 -j ACCEPT

Fir méi Informatiounen iwwer iptables, kuckt dëse Guide: Wéi Dir eng Iptables Firewall opstellt fir Remote Access to Services in Linux z'aktivéieren.

Wann Dir net mat der iptables Syntax vertraut sidd, kënnt Dir fir Firewalld's räich Sprooch entscheeden fir méi komplex Firewall Reegelen op eng einfach ze verstoen Manéier ze kreéieren wéi nächst erkläert.

Wéi benotzt Dir Rich Language a Firewalld

Déi räich Sprooch (och bekannt als räich Regelen) gëtt benotzt fir méi komplex Firewall-Regele fir IPv4 an IPv6 ze addéieren ouni d'Wësse vun der iptables Syntax.

Et erweidert d'Zonfeatures (Service, Hafen, icmp-Block, Masquerade a Forward-Port) déi mir ofgedeckt hunn. Et ënnerstëtzt Quell- an Destinatiounsadressen, Logbicher, Aktiounen a Limiten fir Logbicher an Aktiounen.

De --add-rich-rule gëtt benotzt fir räich Reegelen ze addéieren. Dëst Beispill weist wéi Dir nei IPv4 an IPv6 Verbindunge fir Service http erlaabt a loggt 1 pro Minutt mat Audit:

$ sudo firewall-cmd --add-rich-rule='rule service name="http" audit limit value="1/m" accept'

Fir déi zousätzlech Regel ze läschen, ersetzt d'Optioun --add-rich-rule duerch --remove-rich-rule.

$ sudo firewall-cmd --remove-rich-rule='rule service name="http" audit limit value="1/m" accept'

Dës Fonktioun erlaabt och Traffic vun enger spezifescher IP Adress ze blockéieren oder z'erméiglechen. Déi folgend Beispill weist wéi Verbindunge vun der IP 10.20.1.20 refuséieren.

$ sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.254" reject'

Wéi aktivéiert an deaktivéiert de Panikmodus an der Firewalld

Panik Modus ass e spezielle Modus ënner Firewalld wou all an-gebonnen an eraus-gebonnen Pakete falen, an aktiv Verbindunge wäerten oflafen eemol aktivéiert.
Dir kënnt dëse Modus an Noutsituatiounen aktivéieren, wou eng Bedrohung fir Äert Netzëmfeld erauskënnt.

Fir de Panikmodus ze froen, benotzt d'Optioun --query-panic.

$ sudo firewall-cmd --query-panic

Fir de Panikmodus z'aktivéieren, benotzt d'Optioun --panik-on. Dir kënnt testen ob et funktionnéiert mam Ping Kommando wéi gewisen. Well de Pak erofgefall ass, kann den Numm www.google.com net geléist ginn, dofir ass de Feeler ugewisen.

$ sudo firewall-cmd --panic-on
$ ping -c 2 www.google.com

Fir de Panikmodus auszeschalten, benotzt d'Optioun --panik-off.

$ sudo firewall-cmd --panic-off

Wéi Lockdown Firewalld

Denkt drun, mir hunn ënner de Basics iwwer Firewalld ernimmt datt lokal Uwendungen oder Servicer fäeg sinn d'Firewall Konfiguratioun z'änneren wa se mat Root Privilegien lafen. Dir kënnt kontrolléieren wéi eng Uwendungen fäeg sinn Firewall Ännerungen ze froen, andeems Dir dann an enger Lockdown Whitelist spezifizéiert.

Dës Fonktioun ass par défaut ausgeschalt, Dir kënnt se aktivéieren oder auszeschalten mam --lockdown-on oder --lockdown Schalter empfindlech.

$ sudo firewall-cmd --lockdown-on
OR
$ sudo firewall-cmd --lockdown-off

Bedenkt datt et recommandéiert ass dës Fonktioun z'aktivéieren oder auszeschalten andeems Dir d'Haaptkonfiguratiounsdatei ännert, well d'Firewall-cmd vläicht net op der Whitelist Lockdown existéiert wann Dir de Lockdown aktivéiert.

$ sudo vim /etc/firewalld/firewalld.conf

Fannt de Parameter Lockdown a ännert säi Wäert vun nee (bedeit aus) op jo (bedeit op).

Lockdown=yes

Fir dës Astellung permanent Reload Firewalld ze maachen.

$ sudo firewall-cmd --reload

Firewalld ass en einfach ze benotzen Ersatz fir den iptables Service, deen iptables als Backend benotzt. An dësem Artikel hu mir gewisen, wéi ee Firewalld-Package installéiere kann, déi wichteg Fonctiounen vum Firewalld erkläert hunn an diskutéiert wéi een se an de Runtime a permanente Konfiguratiounsëmfeld konfiguréieren.

Wann Dir Froen oder Bemierkungen hutt, fillt Iech gratis eis iwwer de Kommentarformular hei ënnen z'erreechen. Dir kënnt op d'Firewalld Handbuch Säit (Man Firewalld) oder d'Firewalld Dokumentatioun op der Websäit vum Projet verweisen, fir méi Informatioun.