Serveur HTTP Apache Version 2.5

Apache > Serveur HTTP > Documentation > Version 2.5 > Modules

# Module Apache mod_log_forensic

Description: | Journalisation légale des requêtes envoyées au serveur
Statut: | Extension
Identificateur de Module: | log_forensic_module
Fichier Source: | mod_log_forensic.c

### Sommaire

Ce module permet la journalisation légale des requêtes client.

La création du fichier journal correspondant s'effectue via la directive `ForensicLog` comme suit :

    ForensicLog logs/forensic_log

La journalisation s'effectuant avant et après le traitement de la requête, le journal légal contient deux lignes pour chaque requête. Le processus de journalisation légale est très strict, à savoir :

- Le format est figé. Vous ne pouvez pas modifier le format du journal à l'exécution.
- S'il ne peut pas enregistrer ses données, le processus enfant se termine aussitôt, et peut éventuellement enregistrer un vidage mémoire (selon la définition de la directive `CoreDumpDirectory`).

Pour interpréter les données du journal légal afin d'identifier les requêtes dont le traitement n'a pas été mené à bien, vous pouvez vous aider du script `check_forensic` qui se trouve dans le répertoire support de la distribution.

`check-forensic forensic_log`

Note de traduction : le terme "légal" utilisé dans le présent document ne suggère aucunement que ce module apporte une valeur juridique aux journaux. Il est à comprendre dans le contexte similaire à ce que l'on trouve en analyse medico-légale. En d'autres termes, la finalité de ce module est de simplifier les opérations d'investigation autour du traitement des requêtes par le serveur.

### Sujets

- Format du journal Forensic
- Considérations à propos de sécurité

### Directives

### Traitement des bugs

- Journal des modifications de httpd
- Problèmes connus
- Signaler un bug

### Voir aussi

- Les fichiers journaux d'Apache
- `mod_log_config`

## Format du journal Forensic ¶

Chaque requête fait l'objet d'une double journalisation. La requête est journalisée une première fois avant son traitement (c'est à dire après la réception des en-têtes). La deuxième entrée du journal est écrite après le traitement de la requête, en fait au moment de la journalisation habituelle.

Un identifiant unique est attribué à chaque requête afin de pouvoir l'identifier. Cette identifiant légal peut faire l'objet d'un enregistrement dans le journal standard en utilisant l'élément de chaîne de format `%{forensic-id}n`. Si vous utilisez `mod_unique_id`, c'est l'identifiant qu'il génère qui sera utilisé.

La première partie de la journalisation de la requête enregistre l'identifiant légal, la ligne de la requête et tous les en-têtes reçus séparés par des caractères pipe (`|`). Voici à titre d'exemple à quoi pourrait ressembler une telle entrée (tout étant rassemblé sur une seule ligne) :

`+yQtJf8CoAB4AAFNXBIEAAAAA|GET /manual/de/images/down.gif HTTP/1.1|Host:localhost%3a8080|User-Agent:Mozilla/5.0 (X11; U; Linux i686; en-US; rv%3a1.6) Gecko/20040216 Firefox/0.8|Accept:image/png, etc...`

Le caractère plus ('+') de début indique qu'il s'agit de la première entrée de journal pour cette requête. La seconde entrée ne contiendra qu'un caractère moins ('-') suivi de l'identifiant :

`-yQtJf8CoAB4AAFNXBIEAAAAA`

Le script `check_forensic` prend comme argument le nom du fichier journal. Il recherche ces paires d'identifiants `+`/`-` et affiche un message d'erreur si la journalisation d'une requête n'est pas complète.

## Considérations à propos de sécurité ¶

Voir le document conseils en matière de sécurité pour des détails sur les raisons pour lesquelles votre sécurité pourrait être compromise si le répertoire dans lequel les fichiers journaux sont stockés sont inscriptibles par tout autre utilisateur que celui qui démarre le serveur.

Les fichiers journaux peuvent contenir des données sensibles comme le contenu des en-têtes `Authorization:` (qui peuvent contenir des mots de passe) ; ils ne doivent donc être lisibles que par l'utilisateur qui démarre le serveur.

## Directive ForensicLog ¶

Description: | Définit le nom de fichier du journal légal
Syntaxe: | `ForensicLog nom-fichier|pipe`
Contexte: | configuration globale, serveur virtuel
Statut: | Extension
Module: | mod_log_forensic

La directive `ForensicLog` permet de contrôler la journalisation des requêtes à des fins d'analyse légale. Chaque entrée du journal se voit assigner un identifiant unique qui peut être associé à la requête en utilisant la directive `CustomLog` habituelle. `mod_log_forensic` crée un élément nommé `forensic-id`, qui peut être ajouté au journal standard en utilisant l'élément de format `%{forensic-id}n`.

L'argument, qui permet de spécifier l'emplacement vers lequel le journal légal sera écrit, peut contenir les deux types de valeurs suivants :

nom-fichier
  Un nom de fichier relatif au répertoire défini par la directive `ServerRoot`.
pipe
  Le caractère pipe "`|`", suivi du chemin vers un programme qui recevra les informations de la journalisation sur son entrée standard. Le nom du programme peut être relatif au répertoire défini par la directive `ServerRoot`.

  ### Sécurité :

  Si les journaux sont redirigés vers un programme, ce dernier s'exécutera sous l'utilisateur qui a démarré `httpd`. Ce sera l'utilisateur root si le serveur a été démarré par root ; vérifiez que le programme est sécurisé ou passe sous le contrôle d'un utilisateur possédant des droits restreints.

  ### Note

  Lors de la spécification d'un chemin de fichier sur les plate-formes non-Unix, il faut prendre soin de ne pas oublier que seuls les slashes directs doivent être utilisés, même si la plate-forme autorise l'emploi d'anti-slashes. D'une manière générale, c'est une bonne idée que de n'utiliser que des slashes directs dans les fichiers de configuration.