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ó.