Sèrie RHCSA: Elements bàsics del tallafoc i control del trànsit de xarxa mitjançant FirewallD i Iptables - Part 11


En paraules senzilles, un tallafoc és un sistema de seguretat que controla el trànsit entrant i sortint d'una xarxa basant-se en un conjunt de regles predefinides (com la destinació/font del paquet o el tipus de trànsit, per exemple).

En aquest article revisarem els conceptes bàsics de firewalld, el dimoni de tallafocs dinàmic predeterminat a Red Hat Enterprise Linux 7, i el servei iptables, el servei de tallafocs heretat per a Linux, amb el qual la majoria dels administradors de sistemes i xarxes estan ben familiaritzats i que també està disponible. a RHEL 7.

Una comparació entre FirewallD i Iptables

Sota el capó, tant firewalld com el servei iptables parlen amb el marc netfilter del nucli mitjançant la mateixa interfície, no és sorprenent, l'ordre iptables. Tanmateix, a diferència del servei iptables, firewalld pot canviar la configuració durant el funcionament normal del sistema sense que es perdin les connexions existents.

Firewalld s'ha d'instal·lar de manera predeterminada al vostre sistema RHEL, tot i que pot ser que no s'està executant. Podeu verificar amb les ordres següents (firewall-config és l'eina de configuració de la interfície d'usuari):

# yum info firewalld firewall-config

i,

# systemctl status -l firewalld.service

D'altra banda, el servei iptables no està inclòs per defecte, però es pot instal·lar mitjançant.

# yum update && yum install iptables-services

Els dos dimonis es poden iniciar i habilitar per iniciar-se a l'arrencada amb les ordres systemd habituals:

# systemctl start firewalld.service | iptables-service.service
# systemctl enable firewalld.service | iptables-service.service

Llegiu també: Ordres útils per gestionar els serveis de sistema

Pel que fa als fitxers de configuració, el servei iptables utilitza /etc/sysconfig/iptables (que no existirà si el paquet no està instal·lat al vostre sistema). En un quadre RHEL 7 utilitzat com a node de clúster, aquest fitxer té el següent aspecte:

Mentre que firewalld emmagatzema la seva configuració en dos directoris, /usr/lib/firewalld i /etc/firewalld:

# ls /usr/lib/firewalld /etc/firewalld

Examinarem aquests fitxers de configuració més endavant en aquest article, després d'afegir algunes regles aquí i allà. A hores d'ara n'hi haurà prou amb recordar-vos que sempre podeu trobar més informació sobre ambdues eines.

# man firewalld.conf
# man firewall-cmd
# man iptables

A part d'això, recordeu que heu de fer una ullada a Revisar les ordres essencials i la documentació del sistema - Part 1 de la sèrie actual, on vaig descriure diverses fonts on podeu obtenir informació sobre els paquets instal·lats al vostre sistema RHEL 7.

Ús d'Iptables per controlar el trànsit de xarxa

És possible que vulgueu consultar Configuració del tallafocs d'iptables - Part 8 de la sèrie Linux Foundation Certified Engineer (LFCE) per refrescar la memòria sobre els components interns d'iptables abans de continuar. Així, podrem entrar directament als exemples.

Els ports TCP 80 i 443 són els ports predeterminats utilitzats pel servidor web Apache per gestionar el trànsit web normal (HTTP) i segur (HTTPS). Podeu permetre el trànsit web entrant i sortint a través dels dos ports a la interfície enp0s3 de la següent manera:

# iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
# iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

Pot ser que hi hagi moments en què hàgiu de bloquejar tot (o algun) tipus de trànsit provinent d'una xarxa específica, per exemple, 192.168.1.0/24:

# iptables -I INPUT -s 192.168.1.0/24 -j DROP

deixarà caure tots els paquets procedents de la xarxa 192.168.1.0/24, mentre que,

# iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

només permetrà el trànsit entrant pel port 22.

Si utilitzeu la vostra caixa RHEL 7 no només com a tallafoc de programari, sinó també com a tallafoc real basat en maquinari, de manera que es troba entre dues xarxes diferents, el reenviament IP ja s'ha d'haver habilitat al vostre sistema. Si no, heu d'editar /etc/sysctl.conf i establir el valor de net.ipv4.ip_forward a 1, de la manera següent:

net.ipv4.ip_forward = 1

a continuació, deseu el canvi, tanqueu l'editor de text i, finalment, executeu l'ordre següent per aplicar el canvi:

# sysctl -p /etc/sysctl.conf

Per exemple, és possible que tingueu una impressora instal·lada a una caixa interna amb IP 192.168.0.10, amb el servei CUPS escoltant al port 631 (tant al servidor d'impressió com al vostre tallafoc). Per reenviar sol·licituds d'impressió dels clients de l'altre costat del tallafoc, hauríeu d'afegir la següent regla d'iptables:

# iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

Si us plau, tingueu en compte que iptables llegeix les seves regles seqüencialment, així que assegureu-vos que les polítiques predeterminades o les regles posteriors no anul·lin les descrites als exemples anteriors.

Primers passos amb FirewallD

Un dels canvis introduïts amb firewalld són les zones. Aquest concepte permet separar les xarxes en diferents zones de nivell de confiança que l'usuari ha decidit posar en els dispositius i el trànsit dins d'aquesta xarxa.

Per llistar les zones actives:

# firewall-cmd --get-active-zones

A l'exemple següent, la zona pública està activa i la interfície enp0s3 s'hi ha assignat automàticament. Per veure tota la informació sobre una zona concreta:

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

Com que podeu llegir més sobre les zones a la guia de seguretat de RHEL 7, aquí només enumerarem alguns exemples específics.

Per obtenir una llista dels serveis compatibles, feu servir.

# firewall-cmd --get-services

Per permetre el trànsit web http i https a través del tallafoc, efectiu immediatament i en arrencades posteriors:

# firewall-cmd --zone=MyZone --add-service=http
# firewall-cmd --zone=MyZone --permanent --add-service=http
# firewall-cmd --zone=MyZone --add-service=https
# firewall-cmd --zone=MyZone --permanent --add-service=https
# firewall-cmd --reload

Si s'omet–zone, s'utilitza la zona per defecte (podeu comprovar amb firewall-cmd –get-default-zone).

Per eliminar la regla, substituïu la paraula add per remove a les ordres anteriors.

En primer lloc, heu d'esbrinar si el mascarat està habilitat per a la zona desitjada:

# firewall-cmd --zone=MyZone --query-masquerade

A la imatge següent, podem veure que l'emmascarament està habilitat per a la zona externa, però no per al públic:

Podeu activar l'emmascarament per al públic:

# firewall-cmd --zone=public --add-masquerade

o utilitzeu el mascarat en extern. Això és el que faríem per replicar l'exemple 3 amb firewalld:

# firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

I no us oblideu de tornar a carregar el tallafoc.

Podeu trobar més exemples a la part 9 de la sèrie RHCSA, on vam explicar com permetre o desactivar els ports que solen utilitzar un servidor web i un servidor ftp, i com canviar la regla corresponent quan el port predeterminat per a aquests serveis estan canviats. A més, és possible que vulgueu consultar la wiki del tallafoc per obtenir més exemples.

Llegiu també: exemples útils de FirewallD per configurar el tallafoc a RHEL 7

Conclusió

En aquest article hem explicat què és un tallafoc, quins són els serveis disponibles per implementar-ne un a RHEL 7 i hem proporcionat alguns exemples que us poden ajudar a començar amb aquesta tasca. Si teniu algun comentari, suggeriment o pregunta, no dubteu a fer-nos-ho saber mitjançant el formulari següent. Gràcies per endavant!