guidugli.audit

Rol de Ansible: auditoría

Un Rol de Ansible que instala y configura la auditoría en RHEL/CentOS, Fedora y Debian/Ubuntu.

Las reglas predeterminadas se basan en el marco de referencia CIS RedHat/Ubuntu/Debian y también en este repositorio de GitHub: https://github.com/Neo23x0/auditd.

Descargo de responsabilidad: No soy un experto en seguridad y de ninguna manera deberías usar este rol sin aprender primero cómo funciona la auditoría y las reglas configuradas por este rol. ¡La seguridad de tus servidores es TU responsabilidad!

Requisitos

Sistema operativo que se ejecute en hardware físico o en virtualización sobre un hipervisor. En sistemas contenedorizados, solo puede ejecutarse un proceso auditd, generalmente en el sistema host. Este rol no intentará iniciar el demonio auditd en contenedores.

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados (ver defaults/main.yml):

audit_local_events: true

Esta palabra clave de sí/no especifica si incluir o no eventos locales. Normalmente querrás eventos locales, así que el valor predeterminado es sí. Los casos en los que configures esto como no son cuando solo deseas agregar eventos de la red.

#audit_log_file: /var/log/audit/audit.log

Esta palabra clave especifica el nombre completo del archivo de registro donde se almacenarán los registros de auditoría. Debe ser un archivo regular.

audit_write_logs: true

Esta palabra clave de sí/no determina si se deben escribir registros en el disco. Normalmente querrás esto, así que el valor predeterminado es verdadero.

audit_log_format: ENRIQUECIDO

El formato de registro describe cómo debe almacenarse la información en el disco. Hay 2 opciones: sin procesar y enriquecido.

audit_log_group: root

Esta palabra clave especifica el grupo que se aplica a los permisos del archivo de registro. El valor predeterminado es root. El nombre del grupo puede ser numérico o escrito.

audit_priority_boost: 4

Este es un número no negativo que indica al demonio de auditoría cuánto aumento de prioridad debe tomar. El valor predeterminado es 4. Sin cambios es 0.

audit_flush: INCREMENTAL_ASYNC

Los valores válidos son none, incremental, incremental_async, data y sync.

audit_freq: 50

Este es un número no negativo que indica al demonio de auditoría cuántos registros escribir antes de emitir un comando explícito para vaciar en disco. Este valor solo es válido cuando la palabra clave flush está configurada como incremental o incremental_async.

audit_num_logs: 5

Esta palabra clave especifica la cantidad de archivos de registro que se deben mantener si se rota bajo la acción max_log_file_action. Si el número es < 2, los registros no se rotan. Este número debe ser 999 o menos.

audit_name_format: NONE

Esta opción controla cómo se insertan los nombres de nodos de computadora en el flujo de eventos de auditoría. Tiene las siguientes opciones: none, hostname, fqd, numeric y user. Ninguno significa que no se inserta ningún nombre de computadora en el evento de auditoría.

#audit_name: mydomain

Esta es la cadena definida por el administrador que identifica la máquina si se da el usuario como opción de name_format.

audit_max_log_file: 256

Esta palabra clave especifica el tamaño máximo del archivo en megabytes. Cuando se alcanza este límite, se desencadenará una acción configurable.

audit_max_log_file_action: keep_logs

Este parámetro indica al sistema qué acción tomar cuando se detecta que se ha alcanzado el límite de tamaño máximo del archivo. Los valores válidos son ignore, syslog, suspend, rotate y keep_logs.

audit_verify_email: true

Esta opción determina si se verifica que la dirección de correo electrónico proporcionada en action_mail_acct puede resolverse. Esta opción debe especificarse antes de action_mail_acct o se utilizará el valor predeterminado sí.

audit_action_mail_acct: root

Esta opción debe contener una dirección de correo electrónico o alias válido. La dirección predeterminada es root. Si la dirección de correo electrónico no es local a la máquina, debes asegurarte de haber configurado el correo electrónico correctamente en tu máquina y red. Además, esta opción requiere que /usr/lib/sendmail exista en la máquina.

audit_space_left: 75

Si el espacio libre en el sistema de archivos que contiene log_file cae por debajo de este valor, el demonio de auditoría toma la acción especificada por space_left_action. Si el valor de space_left se especifica como un número entero, se interpreta como un tamaño absoluto en megabytes (MiB). Si el valor se especifica como un número entre 1 y 99 seguido de un signo de porcentaje (por ejemplo, 5%), el demonio de auditoría calcula el tamaño absoluto en megabytes basado en el tamaño del sistema de archivos que contiene log_file.

audit_space_left_action: email

Este parámetro indica al sistema qué acción tomar cuando se detecta que el sistema está quedándose sin espacio en disco. Los valores válidos son ignore, syslog, rotate, email, exec, suspend, single y halt.

audit_admin_space_left: 50

Este es un valor numérico en megabytes que indica al demonio de auditoría cuándo realizar una acción configurable porque el sistema está quedándose sin espacio en disco. Esto debe considerarse como la última oportunidad para hacer algo antes de quedarse sin espacio en disco.

audit_admin_space_left_action: suspend

Este parámetro indica al sistema qué acción tomar cuando se detecta que el sistema tiene poco espacio en disco. Los valores válidos son ignore, syslog, rotate, email, exec, suspend, single y halt.

audit_disk_full_action: SUSPEND

Este parámetro indica al sistema qué acción tomar cuando se detecta que la partición donde se escriben los archivos de registro se ha llenado. Los valores válidos son ignore, syslog, rotate, exec, suspend, single y halt.

audit_disk_error_action: SUSPEND

Este parámetro indica al sistema qué acción tomar siempre que se detecte un error al escribir eventos de auditoría en disco o al rotar registros. Los valores válidos son ignore, syslog, exec, suspend, single y halt.

#audit_tcp_listen_port: 60

Este es un valor numérico en el rango 1..65535 que, si se especifica, hace que auditd escuche en el puerto TCP correspondiente para registros de auditoría de sistemas remotos. El demonio de auditoría puede estar vinculado a tcp_wrappers. Es posible que desees controlar el acceso con una entrada en los archivos hosts.allow y deny. Si esto se implementa en un sistema operativo basado en systemd, entonces es posible que debas ajustar la directiva 'After'.

#audit_tcp_listen_queue: 5

Este es un valor numérico que indica cuántas conexiones pendientes (solicitadas pero no aceptadas) se permiten. El valor predeterminado es 5. Configurarlo demasiado pequeño puede hacer que se rechacen conexiones si demasiados hosts se inician exactamente al mismo tiempo, como después de una falla de energía. Esta configuración solo se utiliza para servidores de agregación. Los clientes que registran en un servidor remoto deben mantener esto comentado.

#audit_tcp_max_per_addr: 1

Este es un valor numérico que indica cuántas conexiones concurrentes desde una dirección IP están permitidas. El valor predeterminado es 1 y el máximo es 1024. Configurarlo demasiado grande puede permitir un ataque de Denegación de Servicio en el servidor de registro.

audit_use_libwrap: true

Esta configuración determina si se deben usar tcp_wrappers para discernir intentos de conexión desde máquinas permitidas.

#audit_tcp_client_ports: 1024-65535

Este parámetro puede ser un único valor numérico o dos valores separados por un guion (sin espacios permitidos). Indica qué puertos de cliente están permitidos para conexiones entrantes. Si no se especifica, se permite cualquier puerto.

audit_tcp_client_max_idle: 0

Este parámetro indica la cantidad de segundos que un cliente puede estar inactivo (es decir, sin datos de su parte) antes de que auditd se queje. Esto se utiliza para cerrar conexiones inactivas si la máquina cliente tiene un problema donde no puede cerrar la conexión limpiamente. Ten en cuenta que esta es una configuración global y debe ser más alta que cualquier configuración de heartbeat_timeout individual, preferiblemente por un factor de dos. El valor predeterminado es cero, lo que desactiva esta verificación.

audit_transport: TCP

Si se establece en TCP, solo se utilizarán conexiones TCP en texto plano. Si se establece en KRB5, se usará Kerberos 5 para autenticación y cifrado.

audit_krb5_principal: auditd

Este es el principal para este servidor. El valor predeterminado es "auditd". Dado este valor predeterminado, el servidor buscará una clave llamada como auditd/nombre_del_host@EXAMPLE.COM almacenada en /etc/audit/audit.key para autenticarse, donde nombre_del_host es el nombre canónico del host del servidor, según lo devuelto por una búsqueda DNS de su dirección IP.

#audit_krb5_key_file: /etc/audit/audit.key

Ubicación de la clave para el principal de este cliente. Ten en cuenta que el archivo de clave debe ser propiedad de root y tener modo 0400.

audit_distribute_network: false

Si se establece en verdadero, los eventos originados en la red se distribuirán al despachador de auditoría para su procesamiento.

audit_q_depth: 400

Este es un valor numérico que indica cuán grande debe ser la cola interna del despachador de eventos de auditoría. Una cola más grande le permite manejar mejor una inundación de eventos, pero podría contener eventos que no se procesan cuando se termina el demonio. Si recibes mensajes en syslog sobre eventos que se están perdiendo, aumenta este valor.

audit_overflow_action: SYSLOG

Esta opción determina cómo debe reaccionar el demonio al desbordar su cola interna. Cuando esto sucede, significa que se están recibiendo más eventos de los que puede pasar a los procesos secundarios. Este error significa que perderá el evento actual que está tratando de despachar. Esta opción tiene las siguientes opciones: ignore, syslog, suspend, single y halt.

audit_max_restarts: 10

Este es un número no negativo que indica al despachador de eventos de auditoría cuántas veces puede intentar reiniciar un complemento que ha fallado.

audit_plugin_dir: /etc/audit/plugins.d

Esta es la ubicación que auditd utilizará para buscar sus archivos de configuración de complementos.

force_overwrite_audit: true

Si el archivo de auditoría ya existe, ¿forzar sobrescribirlo? Solo sobrescribirá si el contenido del archivo de destino es diferente del de origen.

audit_sudo_log: "{{ sudo_log | default('/var/log/sudo.log') }}"

Si se define el rol de sudo, obtiene el valor de la variable sudo_log; de lo contrario, usa el predeterminado: /var/log/sudo.log. Esto es para evitar que los usuarios tengan que especificar la misma información varias veces. Pero el rol de sudo no es una dependencia de este rol.

Las variables que se enumeran a continuación no necesitan cambiarse para sistemas específicos (ver vars/main.yml):

audit_packages: ['audit', 'audit-libs']

Esta variable se define en vars/main.yml y se establece de acuerdo a la distribución de Linux. Los usuarios no necesitan cambiar esta variable para los sistemas de destino de este rol.

audit_config_path: /etc/audit/auditd.conf

Esta variable se define en vars/main.yml y controla dónde se encuentra el archivo auditd.conf.

audit_rulesd_path: /etc/audit/rules.d

Esta variable se define en vars/main.yml y controla dónde se encuentra el directorio rules.d.

audit_rules_files:
  - 01-init.rules
  - 10-self-audit.rules
  - 20-filters.rules
  - 30-kernel.rules
  - 40-identity.rules
  - 40-login.rules
  - 40-mount.rules
  - 40-stunnel.rules
  - 40-swap.rules
  - 40-time.rules
  - 50-cron.rules
  - 50-dac.rules
  - 50-hostname.rules
  - 50-ip-connections.rules
  - 50-network.rules
  - 50-pkg-manager.rules
  - 50-remote-shell.rules
  - 50-sudoers.rules
  - 50-system-libs.rules
  - 50-system-startup.rules
  - 55-privileged.rules
  - 60-mail.rules
  - 60-pam.rules
  - 60-sshd.rules
  - 60-systemd.rules
  - 70-access.rules
  - 70-mac-policy.rules
  - 70-power-state.rules
  - 70-sessions.rules
  - 70-shell-profiles.rules
  - 80-data-compression.rules
  - 80-network.rules
  - 80-privilege-abuse.rules
  - 80-reconnaissance.rules
  - 80-socket-creation.rules
  - 80-suspicious.rules
  - 80-suspicious-shells.rules
  - 80-virtualization.rules
  - 90-cred-in-files.rules
  - 90-IPC.rules
  - 90-root-exec.rules
  - 90-special-sw.rules
  - 95-32bit-api-exploitation.rules

Especifica los archivos de reglas que deben ser copiados. Por defecto, no se selecciona ningún archivo para ser copiado. Los archivos enumerados anteriormente son proporcionados por el rol, pero el usuario puede crear sus propios archivos según sea necesario. El rol proporciona las reglas separadas en varios archivos pequeños (en lugar de uno grande) para promover la reutilización: puedes seleccionar qué reglas implementar y también puedes crear tus propias reglas personalizadas. Las reglas se basan en CIS y otros estándares de seguridad.

Dependencias

No hay dependencias.

Ejemplo de Playbook

- hosts: servers
  vars_files:
    - vars/main.yml
  roles:
     - { role: guidugli.audit }
  

Licencia

MIT / BSD

Información del Autor

Este rol fue creado en 2020 por Carlos Guidugli.

Acerca del proyecto

Install and configure audit on linux

Instalar
ansible-galaxy install guidugli.audit
Licencia
mit
Descargas
116
Propietario