Nuestro mundo nunca ha estado más conectado de lo que está ahora. Toda persona, empresa, gobierno, etc. usa la web para comunicarse, intercambiar moneda y datos y, en general, realizar los movimientos de la vida y las operaciones diarias. Sin embargo, estas conexiones no son intrínsecamente seguras, y debido a esto, tenemos que implementar medidas defensivas para mantener nuestra ubicación, información y dinero protegidos. En tiempos pasados, cuando alguien quería asegurar sus posesiones, erigían puertas y vallas para mantener a distancia a los intrusos. Hoy, logramos estos mismos objetivos con el uso de firewalls. La mayoría de los sistemas Linux hicieron uso de iptables
utilidad, sin embargo, una nueva tecnología estaba en el horizonte.
Con la introducción de Red Hat Enterprise Linux 7.0 (RHEL) en 2011, iptables fue reemplazado como firewalld
nació. En esencia, firewalld
es un cortafuegos basado en zonas. Los cortafuegos basados en zonas son sistemas de seguridad de red que supervisan el tráfico y toman medidas en función de un conjunto de reglas definidas que se aplican a los paquetes entrantes y salientes.
Todo sobre las zonas
Firewalld
proporciona diferentes niveles de seguridad para diferentes zonas de conexión. Una zona está asociada con al menos una interfaz de red (eth0
, por ejemplo). Vemos las zonas preconfiguradas usando el siguiente comando:
[tcarrigan@server ~]$ firewall-cmd --get-zones
block dmz drop external home internal libvirt public trusted work
Como ves, las zonas listadas por defecto son:
- bloquear
- dmz
- soltar
- externo
- casa
- interno
- libvirt
- público
- de confianza
- trabajo
NOTA:estoy usando una máquina virtual RHEL 8.2 para esta demostración.
En general, la regla predeterminada de un firewall es negar todo y solo permitir el paso de excepciones específicas para los servicios necesarios.
Muchas veces, es útil ver qué servicios están asociados con una zona determinada. Para mostrar esta información, utilice el siguiente comando:
firewall-cmd --list-all
Tenga en cuenta que si no especifica una zona, se consulta la zona predeterminada. Aquí, la zona predeterminada es public
zona.
[tcarrigan@server ~]$ firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: cockpit dhcpv6-client mountd nfs rpc-bind ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Si desea especificar una zona, simplemente agregue --zone=zonename
Por ejemplo, para ver el external
zona, use lo siguiente:
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-all
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Si, por alguna razón, quisiera cambiar la zona predeterminada, puede hacerlo fácilmente usando el siguiente comando:
firewall-cmd --set-default=zonename
Permitir y denegar por servicio
Ahora, lo bueno de los cortafuegos es que mantienen seguras nuestras redes. Lo malo es que no existe un cortafuegos de "talla única" que se adapte a todas las situaciones. Debido a esto, los cortafuegos se personalizan para adaptarse a las necesidades exactas de la situación en la que se emplean. Por ejemplo, si necesito permitir transferencias FTP (Protocolo de transferencia de archivos) en el external
zone para poder mover un archivo a través del puerto 21, podría usar algo como esto:
firewall-cmd --zone=external --add-service=ftp
Aquí está el ejemplo real de mi VM:
[tcarrigan@server ~]$ sudo firewall-cmd --zone=external --add-service=ftp
[sudo] password for tcarrigan:
success
Vemos que el demonio devolvió éxito , por lo que deberíamos tener permitido el servicio FTP en el external
zona. Para verificar esto, necesitamos verificar el external
lista de servicios de zona:
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-services
ftp ssh
Pero, ¿qué ocurre cuando recargamos la configuración del cortafuegos?
[tcarrigan@server ~]$ sudo firewall-cmd --reload
success
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-all
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
El nuevo permitir la regla no sobrevive a la reinicialización del firewalld
configuración. Para asegurarnos de que nuestra nueva regla persista, debemos agregar el --permanent
opción. El nuevo comando es:
# firewall-cmd --permanent --zone=external --add-service=ftp
Una vez que use el permanent
comando, debe volver a cargar la configuración para que se apliquen los cambios.
Para eliminar un servicio, hacemos un pequeño cambio en la sintaxis. Aquí, voy a eliminar el servicio FTP del external
zona permanentemente:
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --remove-service=ftp
Warning: NOT_ENABLED: ftp
success
Vemos que el sistema me avisa que el FTP ha sido deshabilitado y que la operación fue un éxito.
Permitir y denegar por puerto
Ahora, ¿qué sucede cuando necesita permitir el tráfico a través de un puerto no estándar? Imagine que tiene un servicio de copia de seguridad que debe ejecutarse en un puerto UDP dedicado. ¿Cómo agregaría esta excepción a su zona? La sintaxis es muy fácil de usar y solo es ligeramente diferente de la que usamos para los servicios. Para agregar un puerto a la configuración de su zona, use lo siguiente:
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --add-port=60001/udp
success
Comprobamos los puertos permitidos con el siguiente comando:
[tcarrigan@server ~]$ sudo firewall-cmd --zone=external --list-ports
60001/udp
Y para eliminar la regla del puerto, lo adivinó... simplemente cambie --add-port=x
a --remove-port=x
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --remove-port=60001/udp
success
¿Qué sigue?
Si, después de leer este artículo, se pregunta qué hacer con la información, le recomiendo que inicie su VM favorita (RHEL, Fedora, CentOS, etc.) y comience a experimentar con los comandos anteriores. La mejor manera de aprender es adquirir experiencia práctica. Si encontró este contenido interesante, esté atento a Habilitar Sysadmin para la segunda parte, donde se sumergirá en la creación de zonas personalizadas y la creación de reglas más avanzadas.
[ Facilite la administración de la red. Consulte Automatización de redes para todos, un libro gratuito de Red Hat. ]