> For the complete documentation index, see [llms.txt](https://books.spartan-cybersec.com/cppj/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://books.spartan-cybersec.com/cppj/defensas-y-herramientas-de-seguridad-perimetral/firewall.md).

# Firewall

Un **firewall** es un dispositivo o conjunto de dispositivos configurados para proteger redes mediante la filtración de tráfico entrante y saliente basado en reglas predefinidas. Para un pentester, entender los firewalls es crucial para evaluar la seguridad de una red y encontrar posibles vulnerabilidades.

## <mark style="color:green;">Tipos de Firewalls</mark>

1. <mark style="color:green;">**Firewalls de Red**</mark>
   * Protegen redes enteras filtrando el tráfico entre redes internas y externas.
   * Ejemplo: Firewalls perimetrales, cortafuegos basados en hardware.
2. <mark style="color:green;">**Firewalls de Aplicación (WAF)**</mark>
   * Protegen aplicaciones específicas, especialmente aplicaciones web.
   * Ejemplo: ModSecurity, AWS WAF.
3. <mark style="color:green;">**Firewalls de Host**</mark>
   * Protegen dispositivos individuales (servidores, estaciones de trabajo).
   * Ejemplo: Windows Defender Firewall, iptables en Linux.

## <mark style="color:green;">Conceptos Clave</mark>

1. <mark style="color:green;">**Filtrado de Paquetes**</mark>
   * Inspecciona cada paquete que atraviesa el firewall y lo filtra según criterios como la dirección IP, el puerto y el protocolo.
2. <mark style="color:green;">**Inspección de Estado**</mark>
   * Monitorea el estado de las conexiones activas y toma decisiones basadas en el estado de la conexión (nueva, establecida, relacionada).
3. <mark style="color:green;">**Control de Acceso**</mark>
   * Define qué tráfico está permitido o bloqueado basándose en reglas específicas.
4. <mark style="color:green;">**NAT (Network Address Translation)**</mark>
   * Permite que múltiples dispositivos en una red privada compartan una única dirección IP pública.
5. <mark style="color:green;">**VPN (Virtual Private Network)**</mark>
   * Crea conexiones seguras y cifradas sobre una red menos segura, como Internet.

## <mark style="color:green;">Herramientas y Técnicas para Pentesters</mark>

1. <mark style="color:green;">**Reconocimiento y Enumeración**</mark>
   * Identificar la presencia de firewalls y sus configuraciones.
   * Herramientas: `nmap` (con opciones como `-sS`, `-sA`, `-sF`), `hping`.
2. <mark style="color:green;">**Evasión de Firewalls**</mark>
   * Técnicas para sortear firewalls y acceder a la red interna.
   * Fragmentación de paquetes: Enviar paquetes fragmentados para evitar la detección.
   * Túneles cifrados: Usar VPN o SSH para encapsular el tráfico.
   * Ocultación del tráfico: Usar puertos no estándar o protocolos inusuales.
3. <mark style="color:green;">**Testeo de Firewalls de Aplicación (WAF)**</mark>
   * Evaluar la efectividad de un WAF en la protección de aplicaciones web.
   * Herramientas: `OWASP ZAP`, `Burp Suite`, `SQLMap`.
4. <mark style="color:green;">**Revisión de Reglas de Firewall**</mark>
   * Evaluar las reglas configuradas en el firewall para identificar configuraciones débiles o mal configuradas.
   * Herramientas: Auditorías manuales, revisiones de configuración automatizadas.

## <mark style="color:green;">Ejemplos de Comandos y Herramientas</mark>

1. **Nmap** para detectar firewalls y realizar escaneos evadiendo reglas.

   ```bash
   nmap -sS -T4 -A -v target.com
   nmap -sA target.com
   nmap --scan-delay 500ms -sS target.com
   ```
2. **Hping** para enviar paquetes personalizados y probar respuestas de firewalls.

   ```bash
   hping3 -S target.com -p 80 -c 1
   hping3 --scan 1-100 target.com
   ```
3. **Iptables** en Linux para configurar y revisar reglas de firewall.

   ```bash
   sudo iptables -L -v -n
   sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
   ```
4. **Windows Defender Firewall** usando comandos `netsh` para revisar y configurar reglas.

   ```bash
   netsh advfirewall firewall show rule name=all
   netsh advfirewall firewall add rule name="AllowSSH" protocol=TCP dir=in localport=22 action=allow
   ```

## <mark style="color:green;">Buenas Prácticas para Pentesters</mark>

1. <mark style="color:green;">**Mantenerse Actualizado**</mark><mark style="color:green;">:</mark> Conocer las últimas técnicas de evasión y herramientas de firewall.
2. <mark style="color:green;">**Documentar Hallazgos**</mark><mark style="color:green;">:</mark> Registrar configuraciones y vulnerabilidades encontradas para generar informes precisos.
3. <mark style="color:green;">**Entender el Entorno**</mark><mark style="color:green;">:</mark> Conocer la arquitectura y políticas de la red objetivo para realizar un testeo efectivo.
4. <mark style="color:green;">**Comunicación**</mark><mark style="color:green;">:</mark> Coordinar con el equipo de seguridad de la red para evitar interrupciones durante las pruebas.

## <mark style="color:green;">Conclusión</mark>

Un pentester debe tener un conocimiento profundo de los firewalls, sus tipos y configuraciones, así como de las técnicas y herramientas para evaluarlos y evadirlos. Este conocimiento es esencial para identificar y explotar posibles vulnerabilidades en la infraestructura de red de una organización.
