SSL Inbound Inspection
Resumen
Cuando publicas un servidor propio en Internet (por ejemplo un servidor web en la DMZ), usuarios de cualquier lugar se conectan a él por HTTPS. Ese tráfico llega cifrado y el firewall no puede ver si dentro viene un exploit, una inyección SQL o un archivo malicioso. SSL Inbound Inspection permite descifrar ese tráfico entrante, inspeccionarlo con los perfiles de seguridad, y entregarlo al servidor.
A diferencia de Forward Proxy, aquí el firewall no genera certificados falsos: usa el certificado real del servidor y su clave privada, que importas en el firewall. Como tiene la clave, el firewall puede descifrar la sesión y volver a cifrarla. Los clientes no ven ninguna diferencia, porque reciben el certificado real del servidor. Esta nota explica cómo importar el certificado con su clave (PKCS12), crear la regla de Decryption de tipo SSL Inbound Inspection y comprobar que el tráfico se descifra.
Requisitos previos
- El certificado del servidor y su clave privada en formato PKCS12 (
.pfxo.p12), con su contraseña (ver Certificates y PKI) - El servidor ya publicado y funcionando por NAT y Security Policy: NAT de destino hacia la DMZ y regla Allow (ver Destination NAT y Security Policy Fundamentals)
- Perfiles de seguridad aplicados a la regla Allow que permite el tráfico (ver Security Profiles y Profile Groups)
- Zonas de origen
outsidey destinodmz(o la que uses para el servidor) (ver Zones, Zone Protection y DoS Protection) - Permiso para exponer la clave privada al firewall según tus políticas de seguridad
Sin la clave privada no hay Inbound Inspection
El firewall solo puede descifrar la sesión si tiene la clave privada del servidor. Con un certificado sin clave, esta función no puede funcionar.
Cómo funciona
sequenceDiagram participant C as Cliente (outside) participant F as Firewall (Inbound Inspection) participant S as Servidor (dmz) C->>F: HTTPS hacia el servidor publicado F->>F: Usa certificado y clave privada del servidor<br/>para descifrar la sesión F->>F: Inspección: AV, Vulnerability, WildFire... F->>S: Reenvía el tráfico al servidor S-->>F: Respuesta F-->>C: Respuesta cifrada
| Diferencia | Forward Proxy | Inbound Inspection |
|---|---|---|
| Dirección | Usuarios hacia Internet | Internet hacia tu servidor |
| Certificado | Generado por el firewall con Forward Trust | Certificado real del servidor, importado con su clave |
| Clientes | Deben confiar en tu CA | No necesitan nada |
| Dos sesiones TLS | Sí (cliente-firewall y firewall-servidor); el firewall usa la clave privada del servidor para terminar la sesión del cliente |
Configuración (Ejemplo, Lab PCNSA)
Servidor web en la DMZ: 10.30.0.100, zona dmz, publicado hacia outside (ver Lab PCNSA (curso)).
1. Importar el certificado con la clave
- Device > Certificate Management > Certificates > Device Certificates > Import.
- Certificate Type
Local. - Certificate Name
DMZ-Servers-Cert-and-Keys. - Certificate File: Browse, el archivo
.pfx. - File Format
Encrypted Private Key and Certificate (PKCS12). - Passphrase y Confirm Passphrase: la contraseña del
.pfx. - Opcional: marca Block Private Key Export.
- OK. Commit.
2. Confirmar que NAT y Security Policy ya funcionan
- Antes de descifrar, comprueba que el servidor responde por HTTPS desde fuera.
- Debes tener una regla de NAT de destino y una regla de Security Policy Allow (por ejemplo
out2dmz) con perfiles aplicados.
3. Decryption Profile (opcional pero recomendado)
- Objects > Decryption > Decryption Profile > Add. Name
Inbound-Profile. - Pestaña SSL Decryption > SSL Inbound Inspection: Block sessions with unsupported versions, Block sessions with unsupported cipher suites, Block sessions if resources not available.
- OK.
4. Regla de Decryption
- Policies > Decryption > Add. Name
Inbound-DMZ. - Source: Source Zone
outside. - Destination: Destination Zone
dmz, Destination Address la misma que usa tu regla de Security Policy para ese servidor (la IP pública original si hay DNAT;10.30.0.100si no hay NAT). En la Decryption Policy se evalúa como en la Security Policy: zona de destino posterior al NAT y dirección original. Verifícalo contest decryption-policy-match. - Options: Action
Decrypt, TypeSSL Inbound Inspection, CertificateDMZ-Servers-Cert-and-Keys, Decryption ProfileInbound-Profile. - OK y Commit.
5. Probar
- Desde un cliente externo, abre
https://<IP-pública-del-servidor>. - El navegador debe mostrar el certificado real del servidor (el mismo de antes).
- En Monitor > Logs > Traffic debes ver la sesión con Decrypted
yes. - Para probar la inspección, genera una amenaza de prueba contra el servidor (por ejemplo una petición con un patrón de inyección conocido de laboratorio) y busca el log en Monitor > Logs > Threat.
Verificación
| Comando o lugar | Qué debes ver | Si no lo ves |
|---|---|---|
| Monitor > Logs > Traffic, columna Decrypted | yes en las sesiones al servidor | Si dice no, la regla de Decryption no coincidió |
| Monitor > Logs > Decryption | Handshakes correctos con la versión TLS y el cipher | Activa el logging de handshakes en la regla |
| Monitor > Logs > Threat | Detecciones en el tráfico descifrado | Si está vacío, no hubo amenazas o falta el perfil en la regla Allow |
show session id <n> | Indicación de descifrado y la regla de Decryption | Si no aparece, no se descifró |
test decryption-policy-match from outside to dmz destination <IP original del servidor> (verificar con Tab o ?) | La regla Inbound-DMZ | Si no coincide, revisa zonas y dirección |
| Policies > Decryption: hit count | Contador sube al probar | Si es cero, no coincide |
| Device > Certificate Management > Certificates | El certificado importado, con la marca de clave privada | Si no tiene clave, importa de nuevo el PKCS12 |
| Navegador: ver el certificado | El del servidor, con emisor y fechas correctas | Si cambió, algo más está interceptando |
Errores comunes
El tráfico no se descifra
- Causa: la regla de Decryption no coincide (zonas, IP de destino, orden), o falta el commit.
- Revisa:
test decryption-policy-matchy la columna Decrypted en Traffic. - Solución: ajusta zona de destino e IP. Recuerda que se evalúa con la zona posterior al NAT y la IP original; si dudas, prueba con
anyen destino para aislar el problema.
La sesión falla al activar la regla
- Causa: el certificado o la clave importados no corresponden al servidor, o el servidor usa un cipher o versión que el perfil bloquea.
- Revisa: Monitor > Logs > Decryption (campo de error).
- Solución: importa el PKCS12 correcto y ajusta el perfil.
No puedo importar el certificado
- Causa: contraseña incorrecta, formato distinto a PKCS12 o archivo sin la clave privada.
- Solución: exporta de nuevo desde el servidor incluyendo la clave privada y usa la contraseña correcta.
Hay intercambio de claves que no se puede descifrar
- Causa: algún cipher o versión del servidor no está soportado por el firewall, o el Decryption Profile lo bloquea (por ejemplo “Block sessions with unsupported cipher suites”). Los cifrados con Perfect Forward Secrecy (ECDHE/DHE) sí se soportan, porque el firewall termina la sesión.
- Solución: revisa la compatibilidad de versión y cipher en el Decryption Profile y en el servidor, y la documentación de tu versión de PAN-OS.
El servidor sigue sin protección aunque descifra
- Causa: la regla Allow no tiene perfiles de seguridad.
- Solución: aplica el perfil o grupo a la regla Allow que permite el tráfico.
Quiero proteger varios servidores con certificados distintos
- Causa: una regla usa un solo certificado.
- Solución: crea una regla de Decryption por servidor (destino distinto), cada una con su certificado, y ordénalas de lo específico a lo general.
Se renovó el certificado del servidor y Inbound Inspection falló
- Causa: el firewall sigue con el certificado viejo.
- Solución: importa el nuevo PKCS12, selecciónalo en la regla y haz commit cada vez que el servidor renueve su certificado.
Preocupación por la seguridad de la clave privada
- Causa: la clave del servidor ahora está también en el firewall.
- Solución: marca Block Private Key Export, restringe quién administra el firewall (ver Admin Authentication y RBAC) y protege los respaldos de configuración.