Foro en Español

Reply
Highlighted
Frequent Contributor I

[Tutorial] Integración de Terceros con ClearPass mediante IEE (syslog)

Hola,

este post pretende ser una guía de ayuda para quien este interesado en integrar otros fabricantes con ClearPass para que dispare acciones en base a los "eventos" que generan.

Existen guías de Aruba y otros de cómo realizar estas integraciones y sus diccionarios, pero lo bonito es realizar tus integraciones y tus diccionarios, donde hare algo más de foco.

 

Para llevarlo a cabo vamos a usar el Ingress Event Engine o IEE una nueva característica fue agregada en ClearPass Policy Manager 6.6 lanzada en abril de 2016.

El IEE brinda una nueva dimensión a las capacidades sobre cómo ClearPass puede interoperar con dispositivos y usuarios. Antes de esta función, podíamos activar CPPM a tomar acciones de otras dos maneras, la primera mediante una autenticación de red típica de WEB / 802.1x,  y la segunda gracias a la capacidad de un sistema de terceros para utilizar las API expuestas XMLAPI o RESTful.
Al agregar IEE, proporcionamos una tercera dimensión donde una entrada de syslog puede desencadenar que CPPM tome medidas en los dispositivos y usuarios de redes autenticadas.

 

El flujo seria el siguiente

Flujo_IEE.jpg

En este enlace tenéis el anuncio del TechNote de IEE

https://community.arubanetworks.com/t5/Security/NEW-TechNote-ClearPass-Policy-Manager-Ingress-Event-Engine-IEE/td-p/263507

En el portal de soporte (clásico) de Aruba http://support.arubanetworks.com/default.aspx disponéis de muchas de las guías.

 

De manera resumida estos son los pasos a seguir:

  1. Habilitar IEE en nuestro CPPM
  2. Apuntar el syslog del tercero para enviar logs a CPPM
  3. Interpretar el log recibido mediante los diccionarios
  4. Lanzar las acciones asociadas al evento mediante un servicio de tipo Event

1) Para habilitar IEE, como podemos ver en el TechNote, vamos a navegar al menú Administration-Server Manager-Server Configuration y seleccionamos "Enable Ingress Event Processing" en la pestaña System de nuestro CPPM. Después iremos a la pestaña Services y habilitaremos los servicios "Ingress logger e Ingress logrepo", existen otras opciones de configuración de estos servicios dentro de la pestaña Service Parametres.

 

2) Apuntar el syslog del tercero, dependerá de que tercero sea.

En mi caso, para evitar recibir todos los logs del tercero en CPPM, uso un servidor Linux intermedio con rsyslog instalado así poder filtrar los mensajes recibidos del tercero y únicamente enviar a CPPM los logs que me interesan.rsyslog_conf.png

El tercero enviara los logs al Linux con rsyslog, y este además de tratarlos en su /var/log/messages filtrara los que interesan enviándolos al CPPM por el IP:puerto que elijamos.

 

Para la realización de esta guía estaba probando un FortiGate FG200D con versión de firmware v5.6.4 build1575 (GA), y este es el log recibido:

<188>1 2018-08-28T11:28:57.928391+02:00 192.168.51.201 date=2018-08-28  - -  time=11:29:25 devname="FG200D4Q16808703" devid="FG200D4Q16808703" logid="0211008192" type="utm" subtype="virus" eventtype="infected" level="warning" vd="Clearpass" eventtime=1535448565 msg="File is infected." action="blocked" service="HTTP" sessionid=138488 srcip=192.168.51.178 dstip=213.211.198.62 srcport=49541 dstport=80 srcintf="port2" srcintfrole="undefined" dstintf="port1" dstintfrole="undefined" policyid=1 proto=6 direction="incoming" filename="eicar.com.txt" quarskip="File-was-not-quarantined." virus="EICAR_TEST_FILE" dtype="Virus" ref="http://www.fortinet.com/ve?vn=EICAR_TEST_FILE" virusid=2172 url="http://www.eicar.org/download/eicar.com.txt" profile="default" user="ricardo" group="Corp" agent="Firefox/61.0" analyticscksum="275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f" analyticssubmit="false" crscore=50 crlevel="critical"

 

3) Interpretar el log recibido mediante los DICCIONARIOS.

Para que CPPM sepa que está recibiendo debemos habilitar diccionarios ya definidos, o modificarlos según versiones, o crearlos nuevos. Los diccionarios los encontramos en Adminitration-Dictionaries-Ingress Event tendremos que seleccionar el que nos interesa y dar Enabled una vez que entremos dentro. Si queremos modificarlo Export y ayudándonos de un editor de texto modificarlo a nuestro gusto, después hacer Import, si todo fue bien CPPM lo admite, sino dará error.

 

Os adjunto el diccionario para FortiGate que construí, usando como base el diccionario de Check Point GW, extrayendo la parte interesante del mismo, que será con la que tenemos que pegarnos para el resto de logs con lo que queramos integrar.

filter {

           grok {

                match =&gt; { 'message' =&gt;'&lt;%{POSINT:priority}&gt;%{POSINT:version} (%{TIMESTAMP_ISO8601:timestp} )%{HOSTNAME:serverip}%{SPACE}date=%{DATA:date}%{SPACE}-%{SPACE}-%{SPACE}time=%{DATA:time}%{SPACE}devname="%{DATA:devname}"%{SPACE}devid="%{DATA:devid}"%{SPACE}logid="%{DATA:logid}"%{SPACE}type="%{DATA:type}"%{SPACE}subtype="%{DATA:subtype}"%{SPACE}eventtype="%{DATA:eventtype}"%{SPACE}level="%{DATA:level}"%{SPACE}vd="%{DATA:vd}"%{SPACE}eventtime=%{DATA:eventtime}%{SPACE}msg="%{DATA:msg}"%{SPACE}action="%{DATA:action}"%{SPACE}%{GREEDYDATA:syslog_message}'}

 

Nuestro log es el 'message' y a partir de aquí lo que hacemos es “reescribir” el log sustituyendo el texto por variables, dándoles un nombre e igualándolas al contenido que nos interesa.

 

NOTA: en este caso fue necesario utilizar %{SPACE} para indicar que hay un espacio entre un contenido y el otro, a veces con dejar un espacio en blanco es válido.

 

Tener en cuenta si en nuestro log hay (“) o (,) o (=), simplemente reescribirlo.

 

EJEMPLO:

<188>1 2018-08-28T11:28:57.928391+02:00 192.168.51.201 date=2018-08-28  - -  time=11:29:25 devname="FG200D4Q16808703" devid="FG200D4Q16808703" logid="0211008192"

<%{POSINT:priority}>%{POSINT:version} (%{TIMESTAMP_ISO8601:timestp}) %{HOSTNAME:serverip}%{SPACE}date=%{DATA:date}%{SPACE}-%{SPACE}-%{SPACE}time=%{DATA:time}%{SPACE}devname="%{DATA:devname}"%{SPACE}devid="%{DATA:devid}"

 

Mirar cómo donde había (“) las he dejado y donde no las había no las puse, cada variable la asociamos a su valor (=) según esta en el log, y le indicamos que es de tipo %{DATA}. Podríamos buscar cada una de las variables y buscarlas una a una () o bien dejarlo al final con %{GREEDYDATA:syslog_message} donde meteremos el log completo.

 

Para la creación de un diccionario nos vamos a ayudar de Grok Constructor http://grokconstructor.appspot.com/do/match

En el primer campo de texto metemos nuestro log y en el segundo campo, metemos el filtro que hemos generado. Cuando el filtro sea correcto nos dirá MATCHED sino tendremos error.Filter_grok.jpg

 

Después de terminar el filtro, tendremos que definir cada una de las variables y decir de que tipo son, ejemplo:

      <FieldMapping>

        <Field AllowedValues="" DataType="Time" Name="time"/>

        <Field AllowedValues="" DataType="String" Name="devname"/>

        <Field AllowedValues="" DataType="IPv4Address" Name="srcip"/>

El resto en la creación del diccionario básicamente ha sido la modificación del texto que me interesa.

 

4) Lanzar las acciones asociadas al evento mediante un servicio de tipo Event

Lo último es crear los Enforcement Profiles que se activaran cuando se cumpla la Condition incluida en una Policy Enforcement. Esta política será la cual se asocia al Servicio de tipo Event que se activará cuando se encuentre el valor requerido en las Service Rules por ejemplo el Event-Name variable que también hemos creado con el diccionario.EventService.png

 

Suerte y animo!

 

 

 


Ricardo Luis Cañavate García - ACMP / ACCA / ACCP / ACDX#972
Search Airheads
cancel
Showing results for 
Search instead for 
Did you mean: