Com instal·lar, configurar i utilitzar Firewalld a CentOS i Ubuntu


Firewalld (dimoni del tallafoc) és una alternativa al servei iptables, per gestionar dinàmicament el tallafoc d'un sistema amb suport per a zones de xarxa (o tallafoc) i proporciona una interfície D-Bus per gestionar configuracions. És fàcil d'utilitzar i configurar, i ara és l'eina de gestió de tallafocs predeterminada a RHEL/CentOS, Fedora i diverses altres distribucions de Linux.

En aquest article, parlarem de com configurar el tallafoc del sistema amb firewalld i implementar el filtratge bàsic de paquets a CentOS/RHEL 7 i Ubuntu.

Conceptes bàsics sobre Firewalld

Firewalld consta de tres capes, que són:

  • capa principal: responsable de gestionar la configuració i els back-ends (que es detallen a continuació).
  • Interfície D-Bus: el mitjà principal per canviar i crear la configuració del tallafoc.
  • backends: per interactuar amb netfilter (el mòdul del nucli natiu utilitzat per al tallafoc). Inclouen iptables, ip6tables, ebtables, ipset, nft, linnftables; gestor de xarxes; i mòduls.

Gestiona les regles del tallafoc mitjançant la implementació de zones de xarxa/tallafoc que defineixen el nivell de confiança de les connexions o interfícies de xarxa. Altres funcions del tallafoc compatibles inclouen serveis, configuració directa (utilitzada per passar directament la sintaxi d'iptables en brut), IPSets i tipus ICMP.

Firewalld admet dos tipus d'entorns de configuració:

  • Configuració del temps d'execució que només és efectiva fins que la màquina s'ha reiniciat o el servei del tallafoc s'ha reiniciat
  • configuració permanent que es desa i funciona de manera persistent.

L'eina de línia d'ordres firewall-cmd s'utilitza per gestionar el temps d'execució i la configuració permanent. Alternativament, podeu utilitzar l'eina de configuració de la interfície gràfica d'usuari (GUI) de configuració del tallafoc per interactuar amb el dimoni.

A més, firewalld ofereix una interfície ben definida perquè altres serveis o aplicacions locals sol·licitin canvis a les regles del tallafoc directament, si s'executen amb privilegis de root.

El fitxer de configuració global de firewalld es troba a /etc/firewalld/firewalld.conf i les funcions del tallafoc es configuren en format XML.

Entendre les característiques importants del tallafoc

La característica central de firewalld són les zones de xarxa/tallafoc. Qualsevol altra característica està limitada a una zona. Una zona de tallafoc descriu el nivell de confiança per a una connexió, interfície o adreça d'origen.

La configuració predeterminada inclou una sèrie de zones predefinides ordenades segons el nivell de confiança predeterminat de les zones de no fiable a de confiança: drop, block, public, external, dmz, work, home, internal and trusted. Es defineixen en fitxers emmagatzemats al directori /usr/lib/firewalld/zones.

Podeu configurar o afegir les vostres zones personalitzades mitjançant el client CLI o simplement crear o copiar un fitxer de zona a /etc/firewalld/zones a partir dels fitxers existents i editar-lo.

Un altre concepte important sota firewalld són els serveis. Un servei es defineix mitjançant ports i protocols; aquestes definicions representen un servei de xarxa determinat, com ara un servidor web o un servei d'accés remot. Els serveis es defineixen en fitxers emmagatzemats al directori /usr/lib/firewalld/services/ o /etc/firewalld/services/.

Si coneixeu els conceptes bàsics d'iptables/ip6tables/ebtables, també podeu utilitzar la interfície directa (o configuració) per obtenir accés directe al tallafoc. Però, per a aquells que no tenen cap coneixement d'iptables, podeu utilitzar el llenguatge ric per crear regles de tallafocs més complexes per a IPv4 i IPv6.

Com instal·lar el paquet Firewalld a Linux

A CentOS 7, el paquet firewalld ve preinstal·lat i podeu verificar-lo mitjançant l'ordre següent.

$ rpm -qa firewalld

A Ubuntu 16.04 i 18.04, podeu instal·lar-lo mitjançant el gestor de paquets predeterminat, tal com es mostra.

$ sudo apt install firewalld

Com gestionar el servei Firewalld a Linux

Firewalld és un servei de systemd normal que es pot gestionar mitjançant l'ordre systemctl.

 
$ 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

Després d'iniciar el servei firewalld, també podeu comprovar si el dimoni s'està executant o no, utilitzant l'eina firewall-cmd (en cas que no estigui activa, aquesta ordre sortirà \not running).

$ sudo firewall-cmd --state

Si deseu els canvis de manera permanent, podeu tornar a carregar el tallafoc. Això tornarà a carregar les regles del tallafoc i conservarà la informació de l'estat. La configuració permanent actual es convertirà en una nova configuració d'execució.

$ sudo firewall-cmd --reload

Com treballar amb zones del tallafoc a Firewalld

Per obtenir una llista de totes les zones i serveis del tallafoc disponibles, executeu aquestes ordres.

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

La zona per defecte és la zona que s'utilitza per a totes les funcions del tallafoc que no estiguin limitades explícitament a una altra zona. Podeu obtenir la zona predeterminada per a connexions i interfícies de xarxa executant.

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

Per establir la zona per defecte, per exemple a externa, utilitzeu l'ordre següent. Tingueu en compte que afegir l'opció --permanent estableix la configuració de manera permanent (o habilita la consulta d'informació des de l'entorn de configuració permanent).

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

A continuació, vegem com afegir una interfície a una zona. Aquest exemple mostra com afegir el vostre adaptador de xarxa sense fil (wlp1s0) a la zona d'inici, que s'utilitza a les zones domèstiques.

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

Una interfície només es pot afegir a una sola zona. Per moure'l a una altra zona, utilitzeu l'interruptor --change-interface tal com es mostra, o traieu-lo de la zona anterior mitjançant l'interruptor –remove-interface i, a continuació, afegiu-lo a la nova zona.

Suposant que voleu connectar-vos a una xarxa WI-FI pública, hauríeu de tornar a moure la vostra interfície sense fil a la zona pública, com aquesta:

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

Podeu utilitzar moltes zones al mateix temps. Per obtenir una llista de totes les zones actives amb les funcions habilitades, com ara interfícies, serveis, ports, protocols, executeu:

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

En relació amb el punt anterior, si voleu trobar més informació sobre una zona concreta, és a dir, tot el que hi ha afegit o habilitat, utilitzeu una d'aquestes ordres:

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

Una altra opció útil és --get-target, que us mostra l'objectiu d'una zona permanent. Un objectiu és un d'ells: per defecte, ACCEPTAR, EXPOSIR, REJECTAR. Podeu comprovar l'objectiu de diverses zones:

$ 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

Com obrir i bloquejar ports a Firewalld

Per obrir un port (o una combinació port/protocol) al tallafoc, només cal afegir-lo a una zona amb l'opció --add-port. Si no especifiqueu explícitament la zona, s'habilitarà a la zona per defecte.

L'exemple següent mostra com afegir el port 80 i 443 per permetre el trànsit web entrant mitjançant els protocols HTTP i HTTPS, respectivament:

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

A continuació, torneu a carregar el tallafoc i comproveu les funcions habilitades a la zona pública una vegada més, hauríeu de poder veure els ports que acabeu d'afegir.

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

Bloquejar o tancar un port al tallafoc és igual de fàcil, només cal eliminar-lo d'una zona amb l'opció --remove-port. Per exemple, tancar els ports 80 i 443 a la zona pública.

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

En lloc d'utilitzar port o combinació port/protocol, podeu utilitzar el nom del servei al qual s'assigna un port tal com s'explica a la secció següent.

Com obrir i bloquejar serveis a Firewalld

Per obrir un servei al tallafoc, activeu-lo mitjançant l'opció --add-service. Si s'omet zona, s'utilitzarà la zona per defecte.

La següent comanda activarà permanentment el servei http a la zona pública.

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

L'opció --remove-service es pot utilitzar per desactivar un servei.

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

Com activar i desactivar l'enmascarament d'IP mitjançant Firewalld

IP Masquerading (també conegut com IPMASQ o MASQ) és un mecanisme NAT (Network Address Translation) en xarxes Linux que permet als vostres amfitrions en una xarxa, amb adreces IP privades per comunicar-se amb Internet mitjançant l'IP pública assignada al vostre servidor Linux (passarela IPMASQ). adreça.

És un mapatge un a molts. El trànsit dels vostres hosts invisibles apareixerà a altres ordinadors d'Internet com si provingués del vostre servidor Linux.

Podeu habilitar l'emmascarament d'IP a una zona desitjada, per exemple, la zona pública. Però abans de fer-ho, primer comproveu si l'emmascarament està actiu o no (un \no vol dir que està desactivat i un \sí vol dir el contrari).

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

Un cas d'ús típic per a l'enmascarament és realitzar el reenviament de ports. Suposant que voleu fer SSH des d'una màquina remota a un amfitrió de la vostra xarxa interna amb la IP 10.20.1.3, on el dimoni sshd està escoltant al port 5000.

Podeu reenviar totes les connexions al port 22 del vostre servidor Linux al port previst de l'amfitrió de destinació emetent:

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

Per desactivar l'emmascarament en una zona, utilitzeu l'interruptor --remove-masquerade.

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

Com habilitar i desactivar el missatge IMCP a Firewalld

Els missatges ICMP (Internet Control Message Protocol) són sol·licituds d'informació o respostes a sol·licituds d'informació o en condicions d'error.

Podeu activar o desactivar els missatges ICMP al tallafoc, però abans d'això enumereu tots els tipus d'ICMP compatibles.

$ sudo firewall-cmd --get-icmptypes

Per afegir o eliminar el tipus de bloc que vulgueu.

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

Podeu veure tots els tipus d'icmp afegits a una zona mitjançant l'interruptor --list-icmp-blocks.

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

Com utilitzar la interfície directa per passar ordres d'iptables en brut

El firewall-cmd també ofereix opcions directes (--direct) perquè tingueu un accés més directe al tallafoc. Això és útil per a aquells amb coneixements bàsics d'iptables.

Important: només hauríeu d'utilitzar les opcions directes com a últim recurs quan no sigui possible utilitzar les opcions normals del tallafoc-cmd explicades anteriorment.

Aquí teniu un exemple de com passar la regla d'iptables en brut, utilitzant l'interruptor --add-rules. Podeu eliminar aquestes regles fàcilment substituint --add-rule per --remove-rule:

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

Per obtenir més informació sobre iptables, consulteu aquesta guia: Com configurar un tallafocs Iptables per habilitar l'accés remot als serveis a Linux.

Si no esteu familiaritzat amb la sintaxi d'iptables, podeu optar pel \llenguatge ric de firewalld per crear regles de tallafocs més complexes d'una manera fàcil d'entendre, tal com s'explica a continuació.

Com utilitzar el llenguatge ric a Firewalld

El llenguatge ric (també conegut com a regles enriquides) s'utilitza per afegir regles de tallafocs més complexes per a IPv4 i IPv6 sense el coneixement de la sintaxi d'iptables.

Amplia les característiques de la zona (servei, port, icmp-block, masquerade i forward-port) que hem cobert. Admet adreces d'origen i destinació, registres, accions i límits per a registres i accions.

La --add-rich-rule s'utilitza per afegir regles riques. Aquest exemple mostra com permetre noves connexions IPv4 i IPv6 per al servei http i registrar 1 per minut mitjançant l'auditoria:

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

Per eliminar la regla afegida, substituïu l'opció --add-rich-rule per --remove-rich-rule.

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

Aquesta funció també permet bloquejar o permetre el trànsit des d'una adreça IP específica. L'exemple següent mostra com rebutjar connexions des de la IP 10.20.1.20.

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

Com habilitar i desactivar el mode de pànic a Firewalld

El mode de pànic és un mode especial sota el tallafoc on tots els paquets entrants i sortints s'eliminen i les connexions actives caducaran un cop activades.
Podeu activar aquest mode en situacions d'emergència en què surt una amenaça per al vostre entorn de xarxa.

Per consultar el mode de pànic, utilitzeu l'opció --query-panic.

$ sudo firewall-cmd --query-panic

Per habilitar el mode de pànic, utilitzeu l'opció --panic-on. Podeu provar si funciona utilitzant l'ordre ping tal com es mostra. Com que el paquet s'ha deixat caure, el nom www.google.com no es pot resoldre, d'aquí l'error que es mostra.

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

Per desactivar el mode de pànic, utilitzeu l'opció --panic-off.

$ sudo firewall-cmd --panic-off

Com bloquejar el tallafoc

Recordeu que, sota els conceptes bàsics sobre firewalld, les aplicacions o serveis locals poden alterar la configuració del tallafoc si s'executen amb privilegis de root. Podeu controlar quines aplicacions poden sol·licitar canvis del tallafoc, especificant-ho en una llista blanca de bloqueig.

Aquesta funció està desactivada de manera predeterminada; podeu activar-la o desactivar-la amb l'interruptor --lockdown-on o --lockdown de manera receptiva.

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

Tingueu en compte que es recomana activar o desactivar aquesta funció editant el fitxer de configuració principal, perquè és possible que el tallafoc-cmd no existeixi a la llista blanca de bloqueig quan activeu el bloqueig.

$ sudo vim /etc/firewalld/firewalld.conf

Cerqueu el paràmetre Lockdown i canvieu-ne el valor de no (significa desactivat) a yes (significa activat).

Lockdown=yes

Per fer que aquesta configuració sigui permanent, recarregueu el tallafoc.

$ sudo firewall-cmd --reload

Firewalld és un reemplaçament fàcil d'utilitzar per al servei iptables, que utilitza iptables com a backend. En aquest article, hem mostrat com instal·lar el paquet firewalld, hem explicat les característiques importants de firewalld i hem comentat com configurar-los en els entorns de configuració permanent i de temps d'execució.

Si teniu cap pregunta o comentari, no dubteu a posar-vos en contacte amb nosaltres mitjançant el formulari de comentaris a continuació. Podeu consultar la pàgina de manual del firewalld (man firewalld) o la documentació del firewalld al lloc web del projecte per obtenir més informació.