Mantener la seguridad de la red es clave para los administradores del sistema y configurar el firewall a través de la línea de comandos es una habilidad esencial para aprender. El artículo destacará cómo administrar el firewall con firewall-cmd en la línea de comandos de Linux.
Un firewall es esencialmente un software que puede configurar para controlar el tráfico de red entrante y saliente. Los cortafuegos pueden evitar que otros usuarios usen los servicios de red en un sistema que está ejecutando. La mayoría de los sistemas Linux vienen con un firewall predeterminado. Las versiones anteriores de los sistemas Linux han estado usando iptables como demonio para el filtrado de paquetes. Las versiones más recientes de Fedora, RHEL/CentOS, openSUSE se envían con Firewalld como el demonio de firewall predeterminado. También puede instalar Firewalld en las distribuciones Debian y Ubuntu.
Recomiendo usar Firewalld en lugar de iptables. No se limite a confiar en mi palabra. Obtenga más información de nuestra guía completa sobre los firewalls de código abierto disponibles para su sistema Linux.
Firewalld es un demonio dinámico para administrar cortafuegos con soporte para zonas de red o cortafuegos. Las zonas de firewall definen los niveles de confianza de la seguridad de la red de las interfaces, los servicios o las conexiones de la red. Los administradores de sistemas de seguridad de red han descubierto que Firewalld funciona muy bien con IPv4, IPv6, conjuntos de IP y puentes Ethernet. Para administrar Firewalld, puede usar el comando de terminal firewall-cmd o la herramienta de configuración de GUI firewall-config.
Esta guía utilizará el firewall-cmd comando para administrar la seguridad de la red, y nuestro entorno de prueba será Fedora Workstation 33.
Antes de que nos pongamos todos los aspectos técnicos, aprendamos algunos conceptos básicos de la red.
Conceptos básicos de la red
A una computadora conectada a una red se le asigna una dirección IP que se utiliza para enrutar datos. Las computadoras también tienen puertos en el rango de 0-65535, que actúan como puntos de conexión en la dirección IP. Las aplicaciones pueden reservar puertos específicos. Los servidores web normalmente reservan el puerto 80 para comunicaciones HTTP seguras. Esencialmente, los rangos de puertos 0 - 1024 están reservados para propósitos conocidos y el sistema.
Los dos principales protocolos de transferencia de datos de Internet (TCP y UDP) utilizan estos puertos durante la comunicación de red. Una computadora host establece una conexión entre una dirección IP y un puerto de origen (puerto 80 para HTTP no seguro) y la dirección y el puerto de destino.
Para administrar la seguridad de la red, el software de firewall puede permitir o bloquear la transferencia de datos o la comunicación según reglas como puertos o direcciones IP.
Instalación de cortafuegos
Fedora, RHEL/CentOS 7/8, openSUSE
Firewalld está instalado de forma predeterminada en Fedora, RHEL/CentOS 7/8 y openSUSE. Si no, puedes instalarlo usando el siguiente comando:
# yum install firewalld -y
OR
#dnf install firewalld -y
Debian/Ubuntu
Los sistemas Ubuntu se envían con el cortafuegos sin complicaciones de forma predeterminada. Para usar firewalld, debe habilitar el repositorio del universo y desactivar el Firewall sin complicaciones.
sudo add-apt-repository universe
sudo apt install firewalld
Desactivar cortafuegos sin complicaciones:
sudo systemctl disable ufw
Habilitar firewalld en el momento del arranque:
sudo systemctl enable –now firewalld
Verifique que Firewalld se esté ejecutando:
sudo firewall-cmd –state
running
Zonas de cortafuegos
Firewalld simplifica la configuración de su firewall al establecer zonas predeterminadas. Las zonas son un conjunto de reglas que se adaptan a las necesidades diarias de la mayoría de los administradores de Linux. Una zona de firewall puede definir niveles de confianza o denegados para servicios y puertos.
- Zona de confianza: Todas las conexiones de red se aceptan y utilizan únicamente en entornos de confianza, como un hogar familiar o un laboratorio de pruebas.
- Zona pública: Puede definir reglas solo para permitir que puertos específicos abran conexiones mientras que otras conexiones se descartarán. Se puede usar en áreas públicas cuando no confía en otros hosts en la red.
- Hogar, Interior, Zonas de trabajo: La mayoría de las conexiones entrantes se aceptan en estas tres zonas. Las conexiones entrantes excluyen el tráfico en los puertos que no esperan conexiones ni actividad. Puede aplicarlo en conexiones domiciliarias donde existe una confianza general de los demás usuarios de la red. Solo permite las conexiones entrantes seleccionadas.
- Zona de bloqueo: Esta es una configuración de firewall extremadamente paranoica donde solo son posibles las conexiones iniciadas desde dentro de la red o el servidor. Se rechazan todas las conexiones entrantes a la red y se emite un mensaje de host prohibido de ICMP.
- Zona DMZ: La zona de distensión se puede utilizar para permitir el acceso a algunos servicios al público. Solo se aceptan conexiones seleccionadas. Es una opción esencial para ciertos tipos de servidores en la red de una organización.
- Zona exterior: Cuando está habilitada, esta zona actuará como un enrutador y se puede usar en redes externas con enmascaramiento habilitado. La dirección IP de su red privada está asignada y oculta detrás de una dirección IP pública. Solo se aceptan las conexiones entrantes seleccionadas, incluido SSH.
- Zona de descenso: Todos los paquetes entrantes se descartan sin respuesta. Esta zona solo permite conexiones de red salientes.
Ejemplo de zonas predeterminadas definidas por la estación de trabajo Fedora 33
cat /usr/lib/firewalld/zones/FedoraWorkstation.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Fedora Workstation</short>
<description>Unsolicited incoming network packets are rejected from port 1 to 1024, except for select network services. [firewall ] Incoming packets that are related to outgoing network connections are accepted. Outgoing network connections are allowed.</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<service name="samba-client"/>
<port protocol="udp" port="1025-65535"/>
<port protocol="tcp" port="1025-65535"/>
</zone>
Obtén tu zona actual:
Puedes usar el – – get-active-zones bandera para comprobar las zonas actualmente activas en su sistema.
sudo firewall-cmd --get-active-zones
[sudo] password for tuts:
FedoraWorkstation
interfaces: wlp3s0
libvirt
interfaces: virbr0
La zona predeterminada en Fedora Workstation 33 en la zona FedoraWorkstation
Obtenga la zona predeterminada y todas las zonas definidas:
sudo firewall-cmd --get-default-zone
[sudo] password for tuts:
FedoraWorkstation
[tuts@fosslinux ~]$ sudo firewall-cmd --get-zones
FedoraServer Fedora Workstation block dmz drop external home internal libvirt nm-shared public trusted work
Listar servicios:
Puede obtener los servicios a los que el cortafuegos permite que otros sistemas accedan mediante – -list-services bandera.
[tuts@fosslinux ~]$ sudo firewall-cmd --list-services
dhcpv6-client mdns samba-client ssh
En Fedora Linux 33, el firewall permite el acceso a cuatro servicios (dhcpv6-client mdns samba-client ssh) con números de puerto conocidos.
Enumerar la configuración de los puertos del cortafuegos:
Puede utilizar el – -list-ports marcar para ver otras configuraciones de puerto en cualquier zona.
tuts@fosslinux ~]$ sudo firewall-cmd --list-ports --zone=FedoraWorkstation
[sudo] password for tuts:
1025-65535/udp 1025-65535/tcp
Hemos especificado la zona a verificar usando la opción – -zone=FedoraWorkstaion.
Administración de zonas, puertos y servicios
Las configuraciones de firewall se pueden configurar como de tiempo de ejecución o permanentes. Todas las acciones de firewall-cmd persisten solo hasta que se reinicia la computadora o el firewall. Debe crear una configuración permanente con la marca –permanente.
Crear una zona
Para crear una zona, debe utilizar – -new-zone bandera.
Ejemplo:
Cree una nueva zona permanente llamada fosscorp:
[tuts@fosslinux ~]$ sudo firewall-cmd --new-zone fosscorp --permanent
[sudo] password for tuts:
success
Vuelva a cargar las reglas del cortafuegos para activar la nueva zona:
[tuts@fosslinux ~]$ sudo firewall-cmd --reload
Agregue el servicio ssh a la zona de fosscorp para que pueda acceder a él de forma remota:
[tuts@fosslinux ~]$ sudo firewall-cmd --zone fosscorp --add-service ssh --permanent
[sudo] password for tuts:
success
Confirme que su nueva zona 'fosscorp' está activa:
[tuts@fosslinux ~]$ sudo firewall-cmd --get-zones
FedoraServer FedoraWorkstation block dmz drop external fosscorp home internal libvirt nm-shared public trusted work
Su nueva zona fosscorp ahora está activa y rechaza todas las conexiones entrantes excepto el tráfico SSH.
Utilice la – -interfaz de cambio marcar para hacer que la zona fosscorp sea la zona activa y predeterminada para una interfaz de red (wlp3s0) que desea proteger:
[tuts@fosslinux ~]$ sudo firewall-cmd --change-interface wlp3s0 \
> --zone fosscorp --permanent
The interface is under the [ firewall ] control of NetworkManager, setting zone to 'fosscorp'.
success
Si desea configurar fosscorp como la zona principal y predeterminada, ejecute el siguiente comando:
[tuts@fosslinux ~]$ sudo firewall-cmd --set-default fosscorp
success
Vea las zonas actualmente asignadas a cada interfaz usando – -get-active-zones bandera:
[tuts@fosslinux ~]$ sudo firewall-cmd --get-active-zones
fosscorp
interfaces: wlp3s0
Añadir y eliminar servicios:
Una forma rápida de permitir el tráfico a través de su firewall es agregar un servicio predefinido.
Lista de servicios predefinidos disponibles:
tuts@fosslinux ~]$ sudo firewall-cmd --get-services
[sudo] password for tuts:
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc
bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client
[.....]
Desbloquear un servicio predefinido
Puede permitir el tráfico HTTPS (o cualquier otro servicio predefinido) a través de su firewall utilizando el – -add-service bandera.
[tuts@fosslinux ~]$ sudo firewall-cmd --add-service https --permanent
success
[tuts@fosslinux ~]$ sudo firewall-cmd --reload
También puede eliminar el servicio con – -remove-service bandera:
[tuts@fosslinux ~]$ sudo firewall-cmd --remove-service https --permanent
success
[tuts@fosslinux ~]$ sudo firewall-cmd --reload
Añadir y eliminar puertos
También puede agregar un número de puerto y un prototipo directamente con el indicador –add-port. Agregar un número de puerto directamente puede resultar útil cuando no existe un servicio predefinido.
Ejemplo:
Puede agregar el puerto 1717 no estándar para SSH a su zona personalizada usando el siguiente comando:
[tuts@fosslinux ~]$ sudo firewall-cmd --add-port 1717/tcp --permanent
[sudo] password for tuts:
success
[tuts@fosslinux ~]$ sudo firewall-cmd –reload
Elimine el puerto usando la opción de bandera –remove-port:
[tuts@fosslinux ~]$ sudo firewall-cmd --remove-port 1717/tcp --permanent
success
[tuts@fosslinux ~]$ sudo firewall-cmd –reload
También puede especificar una zona para agregar o eliminar un puerto agregando el indicador –zone en el comando:
Agregue el puerto 1718 para la conexión TCP a la zona de FedoraWorstation:
[tuts@fosslinux ~]$ sudo firewall-cmd --zone=FedoraWorkstation --permanent --add-port=1718/tcp
success
[tuts@fosslinux ~]$ sudo firewall-cmd --reload
success
Confirme si los cambios surtieron efecto:
[tuts@fosslinux ~]$ sudo firewall-cmd --list-all
FedoraWorkstation (active)
target: default
icmp-block-inversion: no
interfaces: wlp3s0
sources:
services: dhcpv6-client mdns samba-client ssh
ports: 1025-65535/udp 1025-65535/tcp 1718/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Nota:En puertos, hemos agregado número de puerto 1718 para permitir el tráfico TCP.
Puede eliminar puerto 1718/tcp ejecutando el siguiente comando:
[tuts@fosslinux ~]$ sudo firewall-cmd --zone=FedoraWorkstation --permanent --remove-port=1718/tcp
success
[tuts@fosslinux ~]$ sudo firewall-cmd --reload
success
Nota:si desea que sus cambios sean permanentes, debe agregar el – -permanente bandera a tus órdenes.
Resumen
Firewalld es una gran utilidad para administrar la seguridad de su red. La mejor manera de aumentar sus habilidades de administrador del sistema es obtener experiencia práctica. Recomiendo instalar Fedora en su máquina virtual (VM) favorita o en Boxes para experimentar con todas las funciones de firewall-cmd disponibles. Puede obtener más información sobre las funciones de firewall-cmd en la página de inicio oficial de Firewalld.