18.3. Configuration de l'audit

Le support pour l'audit des événements est installé avec le système de base de FreeBSD. Le support présent dans le noyau GENERIC par défaut, et auditd(8) peut être activé en ajoutant la ligne suivante au fichier /etc/rc.conf:

auditd_enable="YES"

Puis, le daemon d'audit peut être lancé:

# service auditd start

Les utilisateurs préférant compiler un noyau sur mesure doivent ajouter la ligne suivante dans le fichier de configuration du noyau:

options     AUDIT

18.3.1. Expressions de sélection des événements

Les expressions de sélection sont utilisées à plusieurs endroits dans la configuration du système d'audit pour déterminer quels événements doivent être suivis. Les expressions contiennent une liste de classes d'événements devant correspondre. Les expressions de sélection sont évaluées de gauche à droite, et deux expressions sont combinées en ajoutant l'une à la suite de l'autre.

Tableau 18.1, « Classes d'événements par défaut » résume les classes d'événements présentes par défaut

Tableau 18.1. Classes d'événements par défaut
ClasseDescriptionAction
alltoutcorrespond à toutes les classes d'événements.
aaauthentification et autorisation 
adadministrationActions d'administration du système.
apapplicationAction définie par l'application.
clfermeture de fichiersEnregistre les utilisations de l'appel système close.
exexécutionEnregistre les exécutions de programmes. L'audit des arguments en ligne de commande et des variables d'environnement est contrôlé par via audit_control(5) en utilisant les paramètres argv et envv pour l'entrée policy.
faaccès à aux attributs des fichiersenregistre l'accès aux attributs des objets comme stat(1), pathconf(2).
fccréation de fichiersEnregistre les événements ayant pour résultat la création d'un fichier.
fdsuppression de fichiersEnregistre les événements pour lesquels une suppression de fichier a lieu.
fmmodification des attributs d'un fichierEnregistre les événements lors desquels une modification des attributs d'un fichier intervient, comme l'utilisation de chown(8), chflags(1), et flock(2).
frlecture de fichiersEnregistre les événements qui donnent lieu à la lecture de données, l'ouverture de fichiers pour la lecture.
fwécriture de fichiersEnregistre les événements qui donnent lieu à l'écriture de données ou à l'écriture ou la modification de fichiers.
ioioctlEnregistre l'utilisation de l'appel système ioctl.
ipipcEnregistre les différentes utilisations de communication inter-processus, dont les utilisations des tubes POSIX et les opérations IPC Système V.
lologin_logoutEnregistre les ouvertures et fermeture de session (login(1) et logout(1)).
nanon attributableEnregistre les événements non-attribuables.
noclasse invalideNe correspond à aucun des événements surveillés.
ntréseauEnregistre les événements relatifs au réseau, comme l'utilisation des fonctions connect(2) et accept(2).
otautreEnregistre les événements divers.
pcprocessusEnregistre les opérations sur les processus, comme l'utilisation des fonctions exec(3) et exit(3).

Ces classes d'événement peuvent être personnalisées en modifiant les fichiers de configuration audit_class et audit_event.

Chaque classe d'audit peut être combinée avec un préfixe indiquant si les opérations réussies/échouées sont sélectionnées, et si l'entrée ajoute ou supprime une sélection pour la classe ou le type concerné. Tableau 18.2, « Prefixes pour les classes d'audit » résume les préfixes disponibles.

Tableau 18.2. Prefixes pour les classes d'audit
PrefixeAction
+Enregistre les événements réussis de cette classe.
-Enregistre les événements de cette classe qui ont échoué.
^N'enregistre ni les événements réussis ni les échecs de cette classe.
^+Ne pas enregistrer les événements réussis de cette classe.
^-Ne pas enregistrer les événements de cette classe qui ont échoué.

Si aucun préfixe n'est présent, les succès et le échecs de l'événement seront enregistrés.

L'exemple suivant d'expression de sélection permet la sélection des ouvertures et fermetures de session réussies ou échouées, et uniquement les exécutions ayant réussies:

lo,+ex

18.3.2. Fichiers de configuration

Les fichiers de configuration suivants pour l'audit d'événements en rapport avec la sécurité se trouvent dans le répertoire /etc/security.

  • audit_class: contient les définitions des classes d'audit.

  • audit_control: contrôle les caractéristiques du système d'audit comme les classes d'audit par défaut, l'espace disque minimal à conserver sur le volume réservé aux journaux, la taille maximale des traces d'audit.

  • audit_event: les noms et la description des événements systèmes audités ainsi qu'une liste de classes auxquelles appartiennent chaque événement.

  • audit_user: les classes d'événement à auditer pour des utilisateurs spécifiques, qui s'ajoutent aux paramètres généraux fixés par défaut à l'ouverture de session.

  • audit_warn: une procédure modifiable utilisée par auditd(8) pour générer des messages d'alerte lors des situations exceptionnelles comme un espace disque faible pour les fichiers journaux d'audit ou quand il y a eu rotation de ces fichiers journaux.

Avertissement:

Les fichiers de configuration de l'audit devraient être modifiés et gérés avec prudence étant donné que des erreurs dans la configuration pourraient donner lieu à un enregistrement incorrect des événements.

Dans la plupart des cas, les administrateurs ne devront modifier que audit_control et audit_user. Le premier contrôle les propriétés et les stratégies au niveau du système et le second peut être utilisé pour affiner l'audit pour chaque utilisateur.

18.3.2.1. Le fichier audit_control

Un certain nombre de paramètres par défaut pour le système d'audit sont spécifiés dans le fichier audit_control:

dir:/var/audit
dist:off
flags:lo,aa
minfree:5
naflags:lo,aa
policy:cnt,argv
filesz:2M
expire-after:10M

L'option dir est utilisée pour déclarer un ou plusieurs répertoires dans lesquels seront stockés les fichiers journaux. Si l'on mentionne plus d'un répertoire, ces derniers seront utilisés dans l'ordre à mesure qu'ils se remplissent. Il est classique de configurer le système d'audit pour le stockage des fichiers journaux sur un système de fichiers dédié, afin d'éviter toute interférence entre le système d'audit et d'autres systèmes si le système de fichiers est plein.

Si le champ dist est fixé à on ou yes, des liens matériel seront créés pour tous les fichiers de trace d'audit de /var/audit/dist.

Le champ flags fixe le masque général de présélection utilisé par défaut pour les événements attribuables. Dans l'exemple ci-dessus, les ouvertures et fermetures de sessions réussies ou échouées ainsi que les authentifications et autorisations sont enregistrées pour tous les utilisateurs.

L'option minfree définit le pourcentage minimal d'espace libre du système de fichiers sur lequel les traces d'audit sont stockées.

L'entrée naflags indique les classes à surveiller pour les événements non-attribués, comme les processus d'ouverture et de fermeture de session et les authentifications et autorisations.

L'entrée policy donne une liste d'indicateurs de stratégie contrôlant divers aspect du comportement de l'audit séparés par une virgule. L'indicateur cnt indique que le système devrait continuer à fonctionner en dépit d'un échec dans l'audit (l'emploi de cet indicateur est hautement recommandé). L'autre indicateur argv, provoque l'audit des arguments passés à l'appel système execve(2) lors de l'audit de l'exécution des commandes.

L'entrée filez indique la taille maximale en octets autorisée pour un fichier de trace avant qu'il soit interrompu et que le système provoque sa rotation. La valeur par défaut, 0, désactive la rotation automatique des journaux. Si la taille de fichier est inférieure à 512K, elle sera ignorée et un message sera généré.

Le champ expire-after indique quand un fichier de trace expirera et sera supprimé.

18.3.2.2. Le fichier audit_user

L'administrateur peut spécifier des exigences supplémentaires qu niveau de l'audit pour des utilisateurs spécifiques dans le fichier audit_user. Chaque ligne paramètre l'audit pour un utilisateur par l'intermédiaire de deux champs: le champ alwaysaudit, qui indique l'ensemble des événements qui devraient toujours être surveillés pour l'utilisateur, le champ, neveraudit, indique un ensemble d'événements qui ne devrait jamais être audité pour cet utilisateur.

L'exemple suivant d'entrées permet le suivi des ouvertures et fermetures de sessions et l'exécution de commandes avec succès de l'utilisateur root, et audite la création de fichiers et l'exécution de commandes avec succès pour l'utilisateur www. Si utilisé avec le fichier audit_control par défaut, l'entrée lo pour root est redondante, et les événements relatifs aux ouvertures et aux fermetures de sessions seront également enregistrés pour l'utilisateur www.

root:lo,+ex:no
www:fc,+ex:no

Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.

Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.