GNU/Linux >> Tutoriales Linux >  >> Linux

Una guía para principiantes de firewalld en Linux

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


Linux
  1. una guía práctica para aprender awk

  2. Conceptos básicos de Linux:una guía para principiantes sobre la edición de texto con vim

  3. Una guía para principiantes de Gawk

  4. ¿Qué es FirewallD y cómo implementarlo en Linux?

  5. La guía completa para principiantes de LVM en Linux

Cómo usar AppImage en Linux (Guía para principiantes)

Cómo instalar y usar Curl en distribuciones de Linux:una guía para principiantes

Guía para principiantes para analizar registros en Linux con el comando journalctl

Guía para principiantes de Syslogs en Linux

Obtener ventajas de PowerShell en Linux:una guía para principiantes

Cómo instalar y usar FFmpeg en distribuciones de Linux | Guía para principiantes