El firewall por defecto en Centos 7 / Red Hat Enterprise Linux 7 es firewalld.
En esta entrada veremos cómo realizar las operaciones más comunes con este firewall.
Abre una consola como root para trabajar con el firewall.
Estado del servicio firewalld
Primero nos aseguramos del estado del demonio firewalld:
systemctl status firewalld
Después del estado del firewall:
firewall-cmd --state
Zonas
En firewalld se trabaja con «Zonas». Sobre estas zonas aplicamos las reglas y luego asociamos los dispositivos de red a dichas zonas.
Estado de las zonas y dispositivos
Zona por defecto
firewall-cmd --get-default-zone
Zonas activas y dispositivos asociados
firewall-cmd --get-active-zones
Todas las zonas
firewall-cmd --get-zones
Configuración de una zona
Con esto vemos qué configuraciones tiene la zona public.
firewall-cmd --zone=public --list-ports firewall-cmd --zone=public --list-services firewall-cmd --zone=public --list-all
Abrir puertos
Una de las actividades más típicas al trabajar con un firewall, si no la más típica, es abrir puertos.
Especificando el puerto
En este ejemplo abrimos puertos típicos para servidores web (80, 443) y servidores de correo (25, 465, 587, 110, 143, 993, 995).
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=443/tcp --permanent firewall-cmd --zone=public --add-port=25/tcp --permanent firewall-cmd --zone=public --add-port=465/tcp --permanent firewall-cmd --zone=public --add-port=587/tcp --permanent firewall-cmd --zone=public --add-port=110/tcp --permanent firewall-cmd --zone=public --add-port=143/tcp --permanent firewall-cmd --zone=public --add-port=993/tcp --permanent firewall-cmd --zone=public --add-port=995/tcp --permanent
Muy importante recargar el firewall para que los cambios que acabamos de introducir tengan efecto.
firewall-cmd --reload
Especificando el servicio
Firewalld nos permite especificar el nombre de servicio para algunos casos, por ejemplo para abrir el servicio dns.
firewall-cmd --zone=public --add-service=dns
O el ejemplo para un servidor Web:
firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --add-service=https --permanent
Hay que recordar recargar firewalld para que tengan efecto nuestros cambios.
firewall-cmd --reload
Cerrar puertos
Especificando el puerto
De manera análoga, lo hacemos para cerrar acceso a puertos.
firewall-cmd --zone=public --remove-port=10050/tcp --permanent firewall-cmd --reload
Especificando el servicio
De igual modo usando el servicio.
firewall-cmd --zone=public --remove-service=http --permanent firewall-cmd --reload
Cambiar de zona un interface
Para cambiar de zona un interface lo hacemos de la siguiente manera:
firewall-cmd --zone=myspecialzone --change-interface=eth1 firewall-cmd --reload
Crea tu propia zona
Vamos a realizar un pequeño ejemplo personalizado, donde crearemos una zona nueva llamada «myspecialzone» y asociaremos esta zona con el dispositivo «eth1».
Esta nueva zona permitirá acceso http, https y al puerto 8080.
firewall-cmd --new-zone=myspecialzone --permanent firewall-cmd --zone=myspecialzone --add-service=http --permanent firewall-cmd --zone=myspecialzone --add-service=https --permanent firewall-cmd --zone=myspecialzone --add-port=8080 --permanent firewall-cmd --zone=myspecialzone --change-interface=eth1 firewall-cmd --reload firewall-cmd --get-active-zones firewall-cmd --zone=myspecialzone --list-all