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ónCertificado que ve el cliente
El sitio tiene un certificado válido y confiableUno 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

  1. Genera el Forward Trust (con la plantilla Subordinate Certification Authority) e impórtalo; márcalo como Forward Trust Certificate.
  2. Genera el Forward Untrust (autofirmado) y márcalo como Forward Untrust Certificate.
  3. Los pasos exactos están en Certificates y PKI.

2. Distribuir la CA a los clientes

  1. Exporta el certificado raíz de tu CA.
  2. 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).
  3. Los navegadores que usan su propio almacén (Firefox) pueden necesitar importarlo aparte.

3. Decryption Profile

  1. Objects > Decryption > Decryption Profile > Add. Name Our Decrypt Profile.
  2. 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.
  3. SSL Protocol Settings: versión mínima (por ejemplo TLSv1.2) y algoritmos permitidos.
  4. Pestaña No Decryption: opciones para sesiones que no se descifran (por ejemplo bloquear certificados vencidos).
  5. 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):

  1. Policies > Decryption > Add. Name No-Decrypt-Sensitive.
  2. Source: Source Zone inside. Destination: Destination Zone outside.
  3. URL Category > Add: financial-services, health-and-medicine (y las que decida tu política).
  4. Options: Action No Decrypt (el campo Type no aplica con esta acción), Decryption Profile Our Decrypt Profile (en su pestaña No Decryption: bloquear certificados vencidos o de emisor no confiable incluso sin descifrar).
  5. OK.

Regla de descifrado general:

  1. Policies > Decryption > Add. Name Decrypt-Outbound.
  2. Source: Source Zone inside. Destination: Destination Zone outside.
  3. Service/URL Category: por defecto application-default o any según tu diseño.
  4. Options: Action Decrypt, Type SSL Forward Proxy, Decryption Profile Our Decrypt Profile.
  5. OK.
  6. Confirma el orden: No-Decrypt-Sensitive arriba, Decrypt-Outbound abajo.
  7. Commit.

5. Lista de exclusión (SSL Decryption Exclusion)

  1. Device > Certificate Management > SSL Decryption Exclusion.
  2. 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.
  3. Para agregar un sitio tuyo: Add > Hostname (*.ejemplo.com), Description, y marca Exclude From Decryption.
  4. Commit.

WildFire y decryption

wildfire.paloaltonetworks.com aparece excluido por defecto. Para probar la muestra de WildFire por HTTPS debes desmarcarlo temporalmente y volver a marcarlo después (ver WildFire).

6. Probar

  1. Desde un cliente de inside, abre https://www.paloaltonetworks.com.
  2. Haz clic en el candado y mira el certificado: el Issuer debe ser tu CA (la del Forward Trust), no la del sitio.
  3. Para probar el Forward Untrust, visita un sitio con certificado inválido, por ejemplo https://expired.badssl.com; el navegador debe mostrar una advertencia.
  4. Si la CA no está en el cliente, verás advertencias en todos los sitios descifrados.

Verificación

Comando o lugarQué debes verSi no lo ves
Certificado del sitio en el navegadorIssuer = 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 erroresActiva 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 descifradasSi 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 sslContadores de eventos SSL (por ejemplo handshakes fallidos)Si suben errores, mira los contadores concretos
Policies > DecryptionHit count de las reglasSi es cero, ninguna sesión coincide
Device > Certificate Management > CertificatesForward Trust y Untrust con las marcasSi 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-match y 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-monitor y 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.