guidugli.audit

Rôle Ansible : audit

Un rôle Ansible qui installe et configure l'audit sur RHEL/CentOS, Fedora et Debian/Ubuntu.

Les règles par défaut sont basées sur les normes CIS RedHat/Ubuntu/Debian ainsi que sur ce dépôt GitHub : https://github.com/Neo23x0/auditd.

Avertissement : Je ne suis pas un expert en sécurité et vous ne devriez en aucun cas utiliser ce rôle sans d'abord comprendre comment l'audit fonctionne et les règles configurées par ce rôle. La sécurité de vos serveurs est VOTRE responsabilité !

Exigences

Système d'exploitation fonctionnant sur un serveur physique ou sur une virtualisation hyperviseur. Sur des systèmes conteneurisés, un seul processus auditd peut fonctionner, généralement sur le système hôte. Ce rôle ne tentera pas de démarrer le démon auditd sur les conteneurs.

Variables de rôle

Les variables disponibles sont listées ci-dessous, avec leurs valeurs par défaut (voir defaults/main.yml) :

audit_local_events: true

Ce mot clé oui/non spécifie s'il faut ou non inclure les événements locaux. Normalement, vous souhaitez inclure les événements locaux, donc la valeur par défaut est oui. Les cas où vous mettriez ceci à non sont lorsque vous souhaitez agréger des événements uniquement du réseau.

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

Ce mot clé spécifie le nom de chemin complet du fichier journal où les enregistrements d'audit seront stockés. Cela doit être un fichier régulier.

audit_write_logs: true

Ce mot clé oui/non détermine s'il faut ou non écrire des journaux sur le disque. Normalement, vous voulez cela, donc la valeur par défaut est vraie.

audit_log_format: ENRICHED

Le format du journal décrit comment les informations doivent être stockées sur le disque. Il y a 2 options : brut et enrichi.

audit_log_group: root

Ce mot clé spécifie le groupe appliqué aux permissions du fichier journal. La valeur par défaut est root. Le nom du groupe peut être soit numérique, soit écrit en entier.

audit_priority_boost: 4

C'est un nombre non négatif qui indique au démon d'audit combien de coups de priorité il doit prendre. La valeur par défaut est 4. Aucun changement est 0.

audit_flush: INCREMENTAL_ASYNC

Les valeurs valides sont none, incremental, incremental_async, data et sync.

audit_freq: 50

C'est un nombre non négatif qui indique au démon d'audit combien d'enregistrements écrire avant d'émettre une commande explicite de vidage sur disque. Cette valeur n'est valide que lorsque le mot clé de vidage est défini sur incremental ou incremental_async.

audit_num_logs: 5

Ce mot clé spécifie le nombre de fichiers journaux à conserver si le rotation est donné comme action max_log_file. Si le nombre est < 2, les journaux ne sont pas tournés. Ce nombre doit être 999 ou moins.

audit_name_format: NONE

Cette option contrôle comment les noms de nœuds informatiques sont insérés dans le flux d'événements d'audit. Il a les choix suivants : none, hostname, fqd, numeric et user. Aucun signifie qu'aucun nom d'ordinateur n'est inséré dans l'événement d'audit.

#audit_name: mydomain

Ceci est la chaîne définie par l'administrateur qui identifie la machine si l'utilisateur est donné comme option name_format.

audit_max_log_file: 256

Ce mot clé spécifie la taille maximale du fichier en mégaoctets. Lorsque cette limite est atteinte, cela déclenchera une action configurable.

audit_max_log_file_action: keep_logs

Ce paramètre indique au système quelle action entreprendre lorsque le système a détecté que la limite de taille de fichier maximale a été atteinte. Les valeurs valides sont ignore, syslog, suspend, rotate et keep_logs.

audit_verify_email: true

Cette option détermine si l'adresse e-mail donnée dans action_mail_acct est vérifiée pour voir si le nom de domaine peut être résolu. Cette option doit être donnée avant action_mail_acct ou la valeur par défaut de oui sera utilisée.

audit_action_mail_acct: root

Cette option doit contenir une adresse e-mail ou alias valide. L'adresse par défaut est root. Si l'adresse e-mail n'est pas locale à la machine, vous devez vous assurer que vous avez correctement configuré le courrier sur votre machine et votre réseau. De plus, cette option nécessite que /usr/lib/sendmail existe sur la machine.

audit_space_left: 75

Si l'espace libre dans le système de fichiers contenant log_file tombe en dessous de cette valeur, le démon audit prend l'action spécifiée par space_left_action. Si la valeur de space_left est spécifiée comme un nombre entier, elle est interprétée comme une taille absolue en mégaoctets (Mo). Si la valeur est spécifiée comme un nombre entre 1 et 99 suivi d'un signe de pourcentage (par exemple, 5 %), le démon audit calcule la taille absolue en Mo en fonction de la taille du système de fichiers contenant log_file.

audit_space_left_action: email

Ce paramètre indique au système quelle action entreprendre lorsque le système a détecté qu'il commence à manquer d'espace disque. Les valeurs valides sont ignore, syslog, rotate, email, exec, suspend, single et halt.

audit_admin_space_left: 50

C'est une valeur numérique en mégaoctets qui indique au démon d'audit quand effectuer une action configurable parce que le système manque d'espace disque. Cela doit être considéré comme la dernière chance de faire quelque chose avant de manquer d'espace disque.

audit_admin_space_left_action: suspend

Ce paramètre indique au système quelle action entreprendre lorsque le système a détecté qu'il a peu d'espace disque. Les valeurs valides sont ignore, syslog, rotate, email, exec, suspend, single et halt.

audit_disk_full_action: SUSPEND

Ce paramètre indique au système quelle action entreprendre lorsque le système a détecté que la partition dans laquelle les fichiers journaux sont écrits est devenue pleine. Les valeurs valides sont ignore, syslog, rotate, exec, suspend, single et halt.

audit_disk_error_action: SUSPEND

Ce paramètre indique au système quelle action entreprendre chaque fois qu'une erreur est détectée lors de l'écriture d'événements d'audit sur disque ou de la rotation des journaux. Les valeurs valides sont ignore, syslog, exec, suspend, single et halt.

#audit_tcp_listen_port: 60

C'est une valeur numérique dans la plage 1..65535 qui, si spécifiée, amène auditd à écouter le port TCP correspondant pour les enregistrements d'audit provenant de systèmes distants. Le démon d'audit peut être lié avec tcp_wrappers. Vous pouvez vouloir contrôler l'accès avec une entrée dans les fichiers hosts.allow et deny. Si cela est déployé sur un système d'exploitation basé sur systemd, vous devrez peut-être ajuster la directive 'After'.

#audit_tcp_listen_queue: 5

C'est une valeur numérique qui indique combien de connexions en attente (demandées mais non acceptées) sont autorisées. La valeur par défaut est 5. La définition de cela trop petite peut entraîner le rejet des connexions si trop de hôtes se lancent en même temps, comme après une panne de courant. Ce réglage est uniquement utilisé pour les serveurs d'agrégation. Les clients se connectant à un serveur distant doivent garder cela commenté.

#audit_tcp_max_per_addr: 1

C'est une valeur numérique qui indique combien de connexions simultanées à partir d'une adresse IP sont autorisées. La valeur par défaut est 1 et le maximum est 1024. La définition de cela trop grande peut permettre une attaque par déni de service sur le serveur de journalisation.

audit_use_libwrap: true

Ce paramètre détermine s'il faut ou non utiliser tcp_wrappers pour discerner les tentatives de connexion provenant de machines autorisées.

#audit_tcp_client_ports: 1024-65535

Ce paramètre peut être une valeur numérique unique ou deux valeurs séparées par un tiret (sans espaces autorisés). Il indique quels ports clients sont autorisés pour les connexions entrantes. Si non spécifié, tout port est autorisé.

audit_tcp_client_max_idle: 0

Ce paramètre indique le nombre de secondes pendant lesquelles un client peut être inactif (c'est-à-dire sans données de leur part) avant qu'auditd ne se plaint. Cela est utilisé pour fermer les connexions inactives si la machine cliente a un problème où elle ne peut pas fermer la connexion correctement. Notez que c'est un paramètre global, et doit être supérieur à tout réglage individuel heartbeat_timeout d'un client, de préférence par un facteur de deux. La valeur par défaut est zéro, ce qui désactive ce contrôle.

audit_transport: TCP

Si défini sur TCP, seules les connexions TCP en texte clair seront utilisées. Si défini sur KRB5, Kerberos 5 sera utilisé pour l'authentification et le chiffrement.

audit_krb5_principal: auditd

C'est le principal pour ce serveur. La valeur par défaut est "auditd". Étant donné cette valeur par défaut, le serveur cherchera une clé nommée comme auditd/hostname@EXAMPLE.COM stockée dans /etc/audit/audit.key pour s'authentifier, où hostname est le nom canonique de l'hôte du serveur, retourné par une recherche DNS de son adresse IP.

#audit_krb5_key_file: /etc/audit/audit.key

Emplacement de la clé pour le principal de ce client. Notez que le fichier de clé doit être détenu par root et avoir le mode 0400.

audit_distribute_network: false

Si défini sur vrai, les événements provenant du réseau seront distribués au répartiteur d'audit pour traitement.

audit_q_depth: 400

C'est une valeur numérique qui indique la taille de la file d'attente interne du répartiteur d'événements d'audit. Une plus grande file d'attente lui permet de mieux traiter une inondation d'événements, mais pourrait contenir des événements qui ne sont pas traités lorsque le démon est arrêté. Si vous recevez des messages dans le syslog indiquant que des événements sont perdus, augmentez cette valeur.

audit_overflow_action: SYSLOG

Cette option détermine comment le démon doit réagir lorsque sa file d'attente interne déborde. Lorsque cela se produit, cela signifie que plus d'événements sont reçus qu'il ne peut en transmettre aux processus enfants. Cette erreur signifie qu'il va perdre l'événement actuel qu'il tente de distribuer. Cette option a les choix suivants : ignore, syslog, suspend, single et halt.

audit_max_restarts: 10

C'est un nombre non négatif qui indique au répartiteur d'événements d'audit combien de fois il peut essayer de redémarrer un plugin en panne.

audit_plugin_dir: /etc/audit/plugins.d

C'est l'emplacement que auditd utilisera pour rechercher ses fichiers de configuration de plugin.

force_overwrite_audit: true

Si le fichier d'audit existe déjà, forcer le remplacement ? Il ne sera remplacé que si le contenu du fichier cible est différent de la source.

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

Si le rôle sudo est défini, obtenir la valeur de la variable sudo_log sinon utiliser la valeur par défaut : /var/log/sudo.log. Cela est fait pour empêcher les utilisateurs de devoir spécifier les mêmes informations plusieurs fois. Mais le rôle sudo n'est pas une dépendance pour ce rôle.

Les variables listées ci-dessous n'ont pas besoin d'être changées pour les systèmes ciblés (voir vars/main.yml) :

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

Cette variable est définie dans vars/main.yml et elle est configurée selon la distribution Linux. Les utilisateurs n'ont pas besoin de changer cette variable pour les systèmes cibles de ce rôle.

audit_config_path: /etc/audit/auditd.conf

Cette variable est définie dans vars/main.yml et contrôle où se trouve le fichier auditd.conf.

audit_rulesd_path: /etc/audit/rules.d

Cette variable est définie dans vars/main.yml et contrôle où se trouve le répertoire 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

Spécifiez les fichiers de règles à copier. Par défaut, aucun fichier n'est sélectionné pour être copié. Les fichiers énumérés ci-dessus sont fournis par le rôle, mais l'utilisateur peut créer ses propres fichiers au besoin. Le rôle fournit les règles séparées en plusieurs petits fichiers (au lieu d'un grand), pour favoriser la réutilisabilité : vous pouvez sélectionner quelles règles mettre en œuvre et vous pouvez créer vos propres règles personnalisées. Les règles sont basées sur les normes CIS et d'autres normes de sécurité.

Dépendances

Pas de dépendances.

Exemple de Playbook

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

Licence

MIT / BSD

Informations sur l'auteur

Ce rôle a été créé en 2020 par Carlos Guidugli.

À propos du projet

Install and configure audit on linux

Installer
ansible-galaxy install guidugli.audit
Licence
mit
Téléchargements
116
Propriétaire