App-ID y Policy Optimization

Resumen

App-ID es la tecnología que identifica qué aplicación viaja en el tráfico (Facebook, Microsoft Teams, SSH, DNS, BitTorrent), sin importar el puerto que use. Un firewall tradicional permite “el puerto 443”; Palo Alto permite “la aplicación ssl” o “la aplicación ms-teams”, y por eso puede bloquear una función específica (como el chat de Facebook) y dejar pasar el resto. Para identificarla usa firmas, análisis de protocolo (decoders), heurísticas y análisis de comportamiento, y va refinando su conclusión a medida que ve más paquetes de la session.
En la práctica, App-ID cambia cómo escribes las reglas: pasas de reglas por puerto a reglas por aplicación. Esta nota cubre cómo usar aplicaciones en las reglas, qué son las dependencias, cómo agrupar aplicaciones con grupos y filtros, cómo ordenar reglas para evitar el shadowing y cómo usar Policy Optimizer para reemplazar reglas amplias por reglas basadas en las aplicaciones que realmente se usan.

Requisitos previos

  • Reglas de Security Policy funcionando (ver Security Policy Fundamentals)
  • Contenido de Applications and Threats instalado y actualizado (ver Updates y Upgrades)
  • Logging activado en las reglas, para que Policy Optimizer vea las aplicaciones usadas
  • Para aplicaciones cifradas (ssl): decryption configurado si necesitas ver más allá de ssl (ver Decryption Forward Proxy)
  • Saber qué aplicaciones quieres permitir o bloquear

Cómo identifica App-ID

MétodoQué hace
Application signaturesPatrones conocidos en el tráfico
Protocol decodersEntienden el protocolo (HTTP, SSH, DNS) y verifican que se cumpla
HeuristicsDetectan comportamiento cuando no hay firma clara
Behavior analysisEvalúa cómo se comporta el flujo
Protocol analysisExamina la conversación del protocolo
DecryptionCon SSL/SSH decryption, App-ID ve el contenido real

Estados de la identificación. Mientras identifica, el tráfico puede aparecer como:

EstadoSignificado
incompleteEl handshake TCP no se completó, o se completó pero no llegaron datos
insufficient-dataHubo datos, pero no los suficientes para identificar
unknown-tcp / unknown-udpNo se pudo identificar; puede ser una aplicación propia, cifrada o desconocida
not-applicableEl firewall descartó el tráfico antes de llegar a App-ID

Granularidad y cambios durante la session. App-ID empieza con una coincidencia amplia y se refina: primero ssl, después facebook-base, después facebook-chat. Después del handshake TCP, los primeros paquetes con datos son los que le permiten decidir. La aplicación puede cambiar a mitad de la session, y la regla que se aplica puede cambiar con ella.

graph LR
    A["Handshake TCP"] --> B["incomplete /<br/>insufficient-data"]
    B --> C["ssl"]
    C --> D["facebook-base"]
    D --> E["facebook-chat"]
    E --> F["Regla de Security Policy<br/>que coincide con la aplicación final"]

Propiedades de una aplicación

Objects > Applications > busca la aplicación (hay miles) para ver sus propiedades:

CampoQué indica
Standard PortsLos puertos habituales (por ejemplo tcp/80,443)
Depends onOtras aplicaciones que debes permitir explícitamente para que ésta funcione
Implicitly UsesOtras aplicaciones que se permiten solas al permitir ésta
Deny ActionQué hace un Deny con esta aplicación (drop-reset envía un reset; otras descartan en silencio)
Category / SubcategoryClasificación (por ejemplo saas / office-programs)
RiskNivel de 1 a 5
CharacteristicsEvasive, Excessive Bandwidth Use, Used by Malware, Capable of File Transfer, Has Known Vulnerabilities, Tunnels Other Applications, Prone to Misuse, Widely Used, SaaS
TimeoutsTCP Timeout, TCP Half Closed, TCP Time Wait

Ejemplo, ms-teams-posting: Depends on ms-teams; Standard Ports tcp/80,443; Deny Action drop-reset. Para permitirlo, hay que permitir también ms-teams (y lo que éste a su vez necesite).

Configuración (Ejemplo, Lab PCNSA y Lab Network Security Engineering)

1. Usar aplicaciones en una regla

  1. Policies > Security > Add > General: Name.
  2. Source: Source Zone inside, Source Address User Subnets. Destination: Destination Zone outside.
  3. Application > Add: elige las aplicaciones (o grupos y filtros).
  4. Service/URL Category: application-default.
  5. Actions: Action Allow o Deny.
  6. OK y Commit.
set rulebase security rules Allow-Web from inside to outside source User_Subnets destination any application [ web-browsing ssl ] service application-default action allow

Si una aplicación necesita sus dependencias, agrégalas también o usa un grupo.

2. Application Group

  1. Objects > Application Groups > Add > Name (ej. Collab-Allowed).
  2. Applications > Add: las aplicaciones permitidas y sus dependencias (Depends on).
  3. OK. Úsalo en la regla en lugar de la lista.

3. Application Filter (se actualiza solo)

  1. Objects > Application Filters > Add > Name (ej. Risk 5 apps).
  2. Elige criterios: Category, Subcategory, Technology, Risk (ej. 5), Characteristic.
  3. Opcional: marca Apply to New App-IDs Only, para que el filtro solo incluya App-IDs que llegaron en actualizaciones recientes de contenido.
  4. OK. Úsalo en Application de una regla: cada App-ID nuevo que cumpla el criterio entra automáticamente.

4. Bloquear una función específica y permitir el resto

Ejemplo: permitir Facebook pero no su chat.

  1. Regla arriba: Name No FB-CHAT, Application facebook-chat, Action Deny.
  2. Regla debajo: Name Most of FB, Applications facebook-base, ssl, dtls, mqtt-base, rtcp, stun (las dependencias), Action Allow.
  3. Commit.

El orden importa

La regla de bloqueo debe estar arriba de la de permiso. Si la de permiso está arriba y coincide con el mismo tráfico, la de bloqueo nunca se evalúa (rule shadowing).

5. Tags y agrupación de reglas

  1. Objects > Tags > Add > Name (ej. in2out), Color.
  2. Policies > Security > (regla) > Tags: selecciona el tag. En Group Rules By Tag puedes elegir el tag para agrupar.
  3. Para ver la tabla agrupada: marca View Rulebase as Groups (barra inferior de Policies > Security).

6. Policy Optimizer

Convierte reglas amplias (por puerto o any) en reglas por aplicación usando lo que realmente se vio en el tráfico.

  1. Policies > Security > Policy Optimizer (panel izquierdo).
  2. Rules Without App Controls (en versiones anteriores, No App Specified): reglas con any en aplicación. Selecciona una regla > Compare o Add to This Rule / Create Cloned Rule para reemplazar any por las aplicaciones vistas.
  3. Unused Apps: reglas que permiten aplicaciones que nunca se usaron; quítalas.
  4. Rule Usage: reglas sin tráfico en un período; candidatas a borrar.
  5. En Policies > Security, la columna Apps Seen muestra cuántas aplicaciones coincidieron con cada regla.
  6. Commit.

Para que funcione, la regla debe haber recibido tráfico con logging activo.

7. Aplicaciones personalizadas y Application Override (complemento)

  • Custom Application: Objects > Applications > Add. Defines Name, Category, Subcategory, Technology y, en Advanced, puertos o firmas. Útil para una aplicación propia que App-ID no reconoce.
  • Application Override: Policies > Application Override > Add. Define origen, destino, protocolo y puerto, y asigna una aplicación fija. El tráfico se clasifica por esa regla sin pasar por App-ID ni Content-ID. Úsalo solo cuando no hay alternativa.

Verificación

Comando o lugarQué debes verSi no lo ves
Monitor > Logs > Traffic, columna ApplicationLa aplicación identificada de cada sesiónSi ves unknown-tcp, mira “Errores comunes”
test security-policy-match from inside to outside source 10.10.0.105 destination 157.240.1.35 protocol 6 destination-port 443 application facebook-chatLa regla que bloquea el chat (la de arriba)Si coincide la de permiso, el orden está mal
show session all filter application facebook-chatSesiones con esa aplicaciónSi no hay, la aplicación no se identificó como tal
show session id <n>application final de la session y la reglaSi la aplicación cambió durante la session, revisa si coincide otra regla
Resultado del commit > pestaña Rule ShadowReglas que quedaron tapadas por otraSi está vacía, no hay shadowing detectado
Policies > Security > Policy OptimizerReglas sin aplicación, aplicaciones sin usar, reglas sin tráficoSi está vacío, no hay logs ni tráfico suficientes
ACC > Network ActivityAplicaciones con más tráficoÚtil para decidir qué permitir

Errores comunes

Permití la aplicación y no funciona

  • Causa: falta una dependencia (Depends on), por ejemplo ssl o web-browsing, o la aplicación usa un puerto distinto al estándar y el servicio es application-default.
  • Revisa: Monitor > Logs > Traffic: mira qué aplicación aparece en los bloqueos, y Objects > Applications > Depends on.
  • Solución: agrega las dependencias o un servicio con el puerto real.

Después de un update de contenido algo se bloquea

  • Causa: un App-ID nuevo reclasificó tráfico que antes se veía como otra aplicación (por ejemplo ssl), y no está permitido.
  • Solución: permite el App-ID nuevo o crea una regla temporal, y usa Disable new apps in content update con un Threshold (ver Updates y Upgrades).

La aplicación aparece como unknown-tcp o unknown-udp

  • Causa: tráfico cifrado sin decryption, aplicación propia, protocolo no estándar o un puerto con otra aplicación.
  • Revisa: si el tráfico es TLS y no se descifra, App-ID verá solo ssl.
  • Solución: crea una Custom Application o, si es tráfico confiable y necesario, un Application Override. Para TLS, activa decryption.

Aparece como incomplete o insufficient-data

  • Causa: el handshake no se completó, o la sesión se cerró antes de enviar datos suficientes (típico de escaneos, firewalls intermedios o aplicaciones que no responden).
  • Revisa: el log de tráfico (Session End Reason) y si el servidor responde.
  • Solución: corrige la conectividad. Si es una aplicación legítima con poco tráfico, es normal.

El Deny se aplica a mitad de la session

  • Causa: App-ID refinó la aplicación (de ssl a facebook-chat) y entonces coincide la regla de bloqueo; el cliente recibe un reset.
  • Solución: es el comportamiento esperado. Verifica que las reglas de permiso incluyan las aplicaciones base necesarias.

Una regla de bloqueo no funciona

  • Causa: una regla de permiso arriba coincide primero (shadowing).
  • Revisa: la pestaña Rule Shadow del commit y el orden.
  • Solución: mueve el bloqueo arriba.

Un Application Filter incluye aplicaciones inesperadas

  • Causa: los criterios son muy amplios, o el filtro es dinámico y se agregaron App-IDs nuevos.
  • Solución: revisa el recuento de aplicaciones en el filtro y ajusta los criterios.

Policy Optimizer no muestra nada

  • Causa: la regla no tiene logging o aún no hay tráfico suficiente.
  • Solución: activa Log at Session End y espera a tener tráfico.

La aplicación QUIC evita la inspección

  • Causa: QUIC (HTTP/3) usa UDP 443 y no se puede descifrar con SSL Forward Proxy.
  • Solución: bloquea la aplicación quic para que los navegadores usen TLS sobre TCP, que sí se puede inspeccionar.