Decryption Forward Proxy
Resumen
Hoy casi todo el tráfico web va cifrado con HTTPS. Para el firewall, un flujo cifrado es una caja cerrada: ve las IPs, el puerto y poco más, pero no puede aplicar antivirus, Vulnerability Protection, WildFire ni filtrar URLs por ruta, porque no ve el contenido. Un atacante puede esconder malware dentro de HTTPS y el firewall lo dejará pasar.
SSL Forward Proxy soluciona esto para el tráfico saliente (tus usuarios hacia Internet). El firewall se pone en medio: recibe la conexión del cliente, abre otra conexión hacia el sitio real, descifra y inspecciona lo que pasa, y vuelve a cifrar hacia el cliente. Para que el cliente no vea advertencias, el firewall genera al vuelo un certificado falso del sitio y lo firma con su certificado de Forward Trust; si los clientes confían en esa CA (porque se la distribuyes), el navegador acepta el certificado sin avisos. Esta nota cubre la configuración completa: certificados, perfil, reglas de Decryption, exclusiones y cómo comprobar que funciona.
Requisitos previos
- Certificado Forward Trust (una CA subordinada) y certificado Forward Untrust creados y marcados (ver Certificates y PKI)
- La CA que firmó el Forward Trust distribuida como Trusted Root CA a todos los clientes (por ejemplo, con una GPO)
- Una regla de Security Policy que permita ese tráfico (ver Security Policy Fundamentals)
- Perfiles de seguridad aplicados a esa regla, porque el objetivo de descifrar es poder inspeccionar (ver Security Profiles y Profile Groups)
- Zonas bien definidas: la regla de Decryption usa zonas de origen y destino (ver Zones, Zone Protection y DoS Protection)
- Un plan de exclusiones: banca, salud, aplicaciones con certificate pinning y datos personales sensibles, por política y por privacidad
- Capacidad del equipo: descifrar consume CPU, así que revisa el dimensionamiento
Cómo funciona
sequenceDiagram participant C as Cliente (inside) participant F as Firewall (Forward Proxy) participant S as Sitio web (outside) C->>F: ClientHello (quiere hablar con sitio.com) F->>S: Abre su propia conexión TLS S-->>F: Certificado real de sitio.com F->>F: Valida el certificado del sitio F-->>C: Certificado falso de sitio.com<br/>firmado con Forward Trust C->>F: Tráfico cifrado (sesión 1) F->>F: Descifra, inspecciona (AV, WildFire, URL...) F->>S: Tráfico cifrado (sesión 2)
Qué certificado entrega el firewall al cliente:
| Situación | Certificado que ve el cliente |
|---|---|
| El sitio tiene un certificado válido y confiable | Uno generado por el firewall y firmado con Forward Trust |
| El sitio tiene un certificado no válido (vencido, de una CA desconocida, autofirmado) | Uno firmado con Forward Untrust, que el cliente no conoce, y por eso aparece una advertencia |
Lo que no se puede descifrar
Las aplicaciones que usan certificate pinning (algunas apps móviles, actualizaciones de software) rechazan el certificado del firewall aunque la CA sea de confianza. También hay tráfico que, por política o ley, no debe descifrarse. Estos casos se manejan con reglas No Decrypt y con la lista de exclusión.
Configuración (Ejemplo, Lab PCNSA)
Se parte de un firewall con zonas inside (10.10.0.0/24) y outside (eth1/6 con 23.1.2.15/24).
1. Certificados
- Genera el Forward Trust (con la plantilla Subordinate Certification Authority) e impórtalo; márcalo como Forward Trust Certificate.
- Genera el Forward Untrust (autofirmado) y márcalo como Forward Untrust Certificate.
- Los pasos exactos están en Certificates y PKI.
2. Distribuir la CA a los clientes
- Exporta el certificado raíz de tu CA.
- Distribúyelo a los equipos como Trusted Root (en un dominio Windows: GPO > Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Trusted Root Certification Authorities).
- Los navegadores que usan su propio almacén (Firefox) pueden necesitar importarlo aparte.
3. Decryption Profile
- Objects > Decryption > Decryption Profile > Add. Name
Our Decrypt Profile. - Pestaña SSL Decryption > SSL Forward Proxy: opciones de bloqueo, por ejemplo Block sessions with expired certificates, Block sessions with untrusted issuers, Block sessions with unknown certificate status, Block sessions on certificate status check timeout.
- SSL Protocol Settings: versión mínima (por ejemplo
TLSv1.2) y algoritmos permitidos. - Pestaña No Decryption: opciones para sesiones que no se descifran (por ejemplo bloquear certificados vencidos).
- OK.
set profiles decryption "Our Decrypt Profile" ssl-forward-proxy block-expired-certificate yes block-untrusted-issuer yes
Si un comando no coincide con tu versión, usa Tab o ?.
4. Reglas de Decryption (primero las excepciones)
El orden importa: se evalúan de arriba hacia abajo, y la primera que coincide se aplica. Pon primero las reglas No Decrypt y después la de descifrado general.
Regla No Decrypt (ejemplo: banca y salud):
- Policies > Decryption > Add. Name
No-Decrypt-Sensitive. - Source: Source Zone
inside. Destination: Destination Zoneoutside. - URL Category > Add:
financial-services,health-and-medicine(y las que decida tu política). - Options: Action
No Decrypt(el campo Type no aplica con esta acción), Decryption ProfileOur Decrypt Profile(en su pestaña No Decryption: bloquear certificados vencidos o de emisor no confiable incluso sin descifrar). - OK.
Regla de descifrado general:
- Policies > Decryption > Add. Name
Decrypt-Outbound. - Source: Source Zone
inside. Destination: Destination Zoneoutside. - Service/URL Category: por defecto
application-defaultoanysegún tu diseño. - Options: Action
Decrypt, TypeSSL Forward Proxy, Decryption ProfileOur Decrypt Profile. - OK.
- Confirma el orden:
No-Decrypt-Sensitivearriba,Decrypt-Outboundabajo. - Commit.
5. Lista de exclusión (SSL Decryption Exclusion)
- Device > Certificate Management > SSL Decryption Exclusion.
- Hay una lista predefinida de sitios que se excluyen automáticamente (por incompatibilidad técnica, como actualizaciones de ciertas aplicaciones). Cada entrada tiene la casilla Exclude From Decryption.
- Para agregar un sitio tuyo: Add > Hostname (
*.ejemplo.com), Description, y marca Exclude From Decryption. - Commit.
WildFire y decryption
wildfire.paloaltonetworks.comaparece excluido por defecto. Para probar la muestra de WildFire por HTTPS debes desmarcarlo temporalmente y volver a marcarlo después (ver WildFire).
6. Probar
- Desde un cliente de
inside, abrehttps://www.paloaltonetworks.com. - Haz clic en el candado y mira el certificado: el Issuer debe ser tu CA (la del Forward Trust), no la del sitio.
- Para probar el Forward Untrust, visita un sitio con certificado inválido, por ejemplo
https://expired.badssl.com; el navegador debe mostrar una advertencia. - Si la CA no está en el cliente, verás advertencias en todos los sitios descifrados.
Verificación
| Comando o lugar | Qué debes ver | Si no lo ves |
|---|---|---|
| Certificado del sitio en el navegador | Issuer = tu CA (Forward Trust) | Si ves el emisor original, no se está descifrando; revisa la regla de Decryption |
| Monitor > Logs > Decryption (si activaste log en la regla) | Sesiones con SSL version, cipher y errores | Activa Log Successful SSL Handshake y Log Unsuccessful SSL Handshake en la regla |
| Monitor > Logs > Traffic: columna Decrypted (agrégala desde el encabezado de columnas) | yes en las sesiones descifradas | Si dice no, la sesión no coincidió con la regla Decrypt |
show session id <n> | decrypt o campos de proxy SSL; la regla de Decryption que aplicó | Si no aparece, no se descifró |
show running decryption-policy (o test decryption-policy-match ...; verificar con Tab o ?) | La regla que coincide para una combinación origen/destino | Útil para depurar el orden de las reglas |
show counter global filter delta yes | match ssl | Contadores de eventos SSL (por ejemplo handshakes fallidos) | Si suben errores, mira los contadores concretos |
| Policies > Decryption | Hit count de las reglas | Si es cero, ninguna sesión coincide |
| Device > Certificate Management > Certificates | Forward Trust y Untrust con las marcas | Si faltan, no habrá descifrado |
Errores comunes
El navegador muestra advertencia en todos los sitios descifrados
- Causa: el cliente no confía en la CA que firmó el Forward Trust, o el certificado no es una CA.
- Revisa: el almacén de certificados del cliente (
certmgr.msc) y el certificado Forward Trust en el firewall. - Solución: distribuye la CA raíz como Trusted Root al cliente (GPO), y usa la plantilla Subordinate Certification Authority.
Un sitio o aplicación deja de funcionar al activar decryption
- Causa: certificate pinning, TLS no compatible o cliente que no acepta el certificado del firewall.
- Revisa: Monitor > Logs > Decryption para ver el error.
- Solución: agrega el sitio a la lista de exclusión o crea una regla No Decrypt por categoría, aplicación o destino. Ponla arriba de la regla de descifrado.
El tráfico no se descifra
- Causa: la regla de Decryption no coincide (zonas, categoría o aplicación distintas), está por debajo de una regla No Decrypt que coincide, o falta el commit.
- Revisa:
test decryption-policy-matchy el orden de reglas. - Solución: corrige zonas y orden; confirma que Forward Trust está marcado.
Todos los sitios aparecen con advertencia de certificado no válido
- Causa: el firewall está entregando el Forward Untrust a todos, porque no puede validar los certificados de los sitios (sin salida a Internet para CRL/OCSP, hora incorrecta o falta la CA raíz pública).
- Solución: revisa la hora (NTP), la conectividad a CRL/OCSP y los certificados de CA de confianza del firewall.
Se rompen las conexiones y suben los errores de handshake
- Causa: el perfil bloquea versiones o cifrados que algunos sitios aún usan.
- Solución: revisa el SSL Protocol Settings del perfil y ajusta el mínimo de versión según tu política, con cuidado.
El firewall va lento al activar decryption
- Causa: el descifrado consume CPU, sobre todo con muchos usuarios.
- Revisa:
show running resource-monitory Dashboard. - Solución: descifra solo lo necesario (por categorías), excluye tráfico de confianza o de alto volumen, y dimensiona el equipo.
Un navegador, como Firefox, sigue advirtiendo aunque ya distribuí la CA
- Causa: usa su propio almacén de certificados y no el de Windows.
- Solución: importa la CA en Firefox o configúralo para usar el almacén del sistema.
Un sitio de banca fue descifrado por error
- Causa: la regla No Decrypt está debajo de la regla Decrypt, o la categoría no coincide.
- Solución: sube la regla No Decrypt y comprueba la categoría con
test url <sitio>.
Después del commit no hay logs de decryption
- Causa: la regla no tiene activado el logging de handshakes.
- Solución: edita la regla > Options y activa Log Successful SSL Handshake y Log Unsuccessful SSL Handshake.