Activación y empleo del registro de auditoría en FreeBSD

Buenas a todos,

Activar el registro de auditoría en FreeBSD es algo bastante simple. Este registro, al menos en mi caso, y por favor corríjanme en caso de error, no viene activado por defecto en la instalación por defecto, lo cual es comprensible. Desde la versión 6.2, este popular sistema proporciona al usuario la opción que muchos demandaban, y esa no es otra que un conjunto de directivas de auditoría configurables y flexibles integradas en el sistema.

FreeBSD es un sistema flexible, y al igual que puede soportar un escritorio de usuario estándar, puede estar sirviendo y dando servicio a muchos usuarios concurrentes, con lo que la activación de ese registro puede resultar en un decremento considerable del rendimiento global del sistema. Intuyo que esa es la razón para la no activación del registro de auditoría por defecto.

En mi caso, dado que la máquina está bajo control y supervisión, he optado por activar el registro de auditoría. Para ello tan sólo basta con añadir al fichero /etc/rc.conf una línea tal que:

auditd_enable=»YES»

Dado que esta inclusión sólo será leída tras reiniciar la máquina, conviene, para evitar el reinicio, invocar manualmente el arranque del demonio de auditoría:

/etc/rc.d/auditd start

Esta habilitación básica permite auditar eventos de login y logout, aunque como era previsible, esta configuración es tan flexible como queramos. Los ficheros de configuración están ubicados en /etc/security, y son los siguientes:

* audit_class – Información de las clases de auditoría

* audit_control – Control del subsistema de auditoría, como por ejemplo las clases de auditoría por defecto, espacio mínimo en disco para asignar a los logs de auditoría, tamaño máximo de las trazas, etcétera.

* audit_event – Nombres y descripciones de los eventos de auditoría, así como una asociación de eventos y clases a los que pertenecen.

* audit_user – Configuración específica del usuario, que actúan en combinación con los parámetros globales existentes.

* audit_warn – Un tipo de shell script personalizable para la generación de mensajes de advertencia en distintas situaciones, tales como espacio en disco cercano al agotamiento, o para informar de cuándo el registro de auditoría ha sido rotado.

Para comprender la profundidad de la directiva de auditoría, conviene echar un ojo al capítulo 17 del libro de referencia de FreeBSD, el cual podéis ojear online en Security Event Auditing. Teniendo en cuenta lo que se comenta en este capítulo, previa lectura del mismo, se recomienda hacer lectura de los capítulos 3, 8 y 14, en los que hallaremos aspectos básicos de FreeBSD, aspectos básicos de la configuración y compilación del kernel y lo esencial para entender cómo afronta la seguridad un sistema como FreeBSD.

Visualización de logs en auditoría forense FreeBSD

Con el propósito de preservar las evidencias, los ficheros de log de auditoría no son ficheros de texto plano. Son binarios BSM y por tanto, requieren ser visualizados empleando herramientas específicas, lo cual los protege de adulteraciones o errores accidentales a la hora de manipularlos.

El programa praudit permite hacer un volcado de un fichero de log determinado en texto plano.

# praudit /var/audit/fichero_auditoria

Donde fichero_auditoria es el fichero de log que queremos visualizar.

Otra opción interesante es la ejecución de visualización de trazas reducidas, que son aquellas que sólo se pueden imputar a un usuario determinado. Para ello emplearemos el comando auditreduce:

# auditreduce -u shernando /var/audit/fichero_auditoria | praudit

Esta consulta sólo arrojará las trazas del usuario shernando en el fichero de auditoría fichero_auditoria.

Rotación de logs

Con los mismos propósitos de conservación y asepsia, la rotación de logs sólo puede hacerse mediante el demonio de auditoría.

El proceso de gestión del rotado se basa por tanto en el apagado del demonio, reconfiguración y rotado, renombrando el fichero antiguo. Para ello, se emplea:

# audit -n

Es frecuente automatizar el rotado vía cron, para lo que añadiremos una línea en /etc/crontab definiendo nuestra preferencia de tiempos. Para rotar cada 12 horas añadiríamos la siguiente línea:

0 */12 * * * root /usr/sbin/audit -n

Otras operativas interesantes para el rotado es la compresión de los logs al finalizar, para lo cual podemos emplear scripts en audit_warn:

#
# Comprimir ficheros de auditoria cuando se cierran
#
if [ «$1» = closefile ]; then
gzip -9 $2
fi

Es recomendable cifrar los logs cuando se roten, para preservar así la integridad de los mismos. En la actualidad, el sistema no soporta de modo nativo el cifrado de los logs, con lo que cada administrador tendrá que solucionar la papeleta de la manera que más cómoda le resulte.

Otra técnica habitual es transferir inmediatamente los ficheros rotados a servidores de log centralizados, sobre los que sí existen medidas de cifrado y protecciones de acceso lógico robustas y confiables.

Un saludo, y felices auditorías :)