Cuando estamos realizando tareas de administración, auditoría o análisis de seguridad, una de las primeras cosas que conviene comprobar es qué tráfico está permitido por el firewall del sistema.
Tanto Windows como Linux proporcionan herramientas desde línea de comandos que permiten consultar estas reglas sin necesidad de utilizar interfaces gráficas.
Windows: consultar el Firewall
En versiones de Windows que utilizan netsh, podemos consultar diferentes aspectos de la configuración del firewall.
Puertos permitidos
Para mostrar las aperturas de puertos configuradas:
netsh firewall show portopening
Esto permite identificar rápidamente qué puertos aparecen explícitamente autorizados.
Programas autorizados
También podemos consultar qué programas tienen permisos para comunicarse a través del firewall:
netsh firewall show allowedprogram
Es especialmente útil cuando queremos detectar aplicaciones que disponen de excepciones en la configuración del sistema.
Configuración completa
Para obtener una visión general de la configuración disponible:
netsh firewall show config
Nota:
netsh firewallpertenece a la interfaz antigua del Firewall de Windows. En sistemas Windows actuales, es preferible utilizar PowerShell para obtener información más completa.
Windows moderno: PowerShell
PowerShell proporciona cmdlets específicos para consultar las reglas del Firewall de Windows.
Para listar todas las reglas:
Get-NetFirewallRule
Podemos mostrar únicamente las reglas habilitadas:
Get-NetFirewallRule -Enabled True
Para consultar las reglas que permiten tráfico:
Get-NetFirewallRule -Action Allow
Y para obtener información más detallada sobre los puertos asociados a las reglas:
Get-NetFirewallPortFilter
También podemos combinar información de las reglas y sus filtros:
Get-NetFirewallRule |
Where-Object {$_.Enabled -eq 'True'} |
Get-NetFirewallPortFilter
Otra consulta interesante consiste en buscar reglas que permitan tráfico entrante:
Get-NetFirewallRule -Direction Inbound -Action Allow
Y para el tráfico saliente:
Get-NetFirewallRule -Direction Outbound -Action Allow
PowerShell resulta especialmente interesante para automatizar auditorías y posteriormente procesar los resultados.
Linux: consultar las reglas de iptables
En sistemas Linux que utilizan iptables, las reglas están organizadas en diferentes tablas.
Podemos consultar la tabla nat:
iptables -t nat -nL
La tabla mangle:
iptables -t mangle -nL
La tabla filter:
iptables -t filter -nL
Y la tabla raw:
iptables -t raw -nL
El parámetro -n evita que iptables intente resolver direcciones IP mediante DNS, haciendo que la consulta sea normalmente más rápida.
La opción -L muestra las cadenas de reglas existentes en la tabla seleccionada.
Consultar todas las tablas de una vez
Si queremos evitar ejecutar los cuatro comandos manualmente, podemos utilizar un pequeño bucle:
for type in nat mangle filter raw; do
iptables -t "$type" -nL
done
De esta forma recorremos las principales tablas de iptables y mostramos sus cadenas.
También podemos incluir contadores y una salida más detallada:
for type in nat mangle filter raw; do
echo "===== TABLE: $type ====="
iptables -t "$type" -nL -v
done
Esto resulta bastante útil durante una auditoría porque permite observar no solamente las reglas configuradas, sino también información sobre los paquetes y bytes que han coincidido con ellas.
Una comprobación sencilla de seguridad
Una revisión básica del firewall puede comenzar respondiendo a cuatro preguntas:
- ¿Qué puertos están permitidos?
- ¿Qué aplicaciones tienen excepciones?
- ¿Qué reglas permiten tráfico entrante?
- ¿Qué reglas permiten tráfico saliente?
En Windows podemos combinar netsh con PowerShell, mientras que en Linux podemos revisar las diferentes tablas de iptables.
No se trata simplemente de comprobar si el firewall está activado. Las reglas configuradas determinan qué tráfico puede atravesarlo, por lo que revisarlas periódicamente puede ayudar a detectar configuraciones innecesarias, excepciones antiguas o servicios que ya no deberían estar expuestos.
⚠️ Importante: una regla de firewall que permita tráfico no implica necesariamente que exista un servicio escuchando en ese puerto. Para conocer la exposición real hay que complementar esta información con una comprobación de los servicios y puertos activos del sistema.
Resumen rápido
| Sistema | Herramienta | Consulta |
|---|---|---|
| Windows | netsh | Configuración del firewall |
| Windows | PowerShell | Reglas y filtros del firewall |
| Linux | iptables | Reglas de filtrado |
| Linux | iptables -t nat | Traducción de direcciones |
| Linux | iptables -t mangle | Manipulación de paquetes |
| Linux | iptables -t raw | Reglas de procesamiento previo |
Una combinación de enumeración de reglas + identificación de servicios + revisión periódica proporciona una visión mucho más completa de la superficie de red de un equipo.