Que sont les “internal dummy connection” dans Apache et comment les supprimer ?

Apache 2.x maintient les processus enfants en vie en créant des connexions internes qui apparaissent dans les fichiers journaux comme « internal dummy connection » sur l'adresse IP ::1 ou 127.0.0.1.

En voici un exemple, sur un serveur Apache 2.4.38 avec IPv6:

mydomain.fr:80 ::1 - - [06/Dec/2020:01:42:10 +0100] "OPTIONS * HTTP/1.0" 200 110 "-" "Apache/2.4.38 (Debian) OpenSSL/1.1.1d (internal dummy connection)"

Avoir de telles lignes dans ses logs est tout à fait normal, mais si vous surveillez vos fichiers journaux Apache, vous en verrez beaucoup et elles n'ont aucun intérêt.

La solution la plus simple pour les supprimer consiste à empêcher la journalisation des demandes locales. Normalement, celles-ci ne proviennent que du serveur Apache lui-même, sauf si vous faites quelque chose de spécial qui demande des pages en utilisant l'adresse IP locale (c'est-à-dire :: 1 ou 127.0.0.1).

Empêcher la journalisation des demandes locales

Empêcher la journalisation des demandes locales peut se faire dans la configuration d'apache, ou dans un vhost spécifique à l'aide de la directive SetEnv, ou plus particulièrement de la directive SetEnvIf.

La directive SetEnv définit une variable d'environnement interne, cette dernière étant ensuite disponible pour les modules du serveur HTTP Apache et transmise aux scripts CGI et aux pages SSI. La directive SetEnvIf permet de définir des variables d'environnement en fonction des attributs de la requête.

Dans notre cas, nous voulons ignorer les requetes dont l'IP à l'initiative de la requête, la Remote_Addr, correspond à l'IP locale. Il nous faut donc localiser la section du fichier de configuration d'apache relative aux fichiers journaux pour y apporter quelques modifications. En fonction du système d'exploitation, de la distribution, de la version d'apache et des modifications que vous avez peut-être déjà apportées, son contenu peut être différent. Par exemple, l'entrée relative au fichier access.log sur mon système est la suivante :

CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined

Pour isoler les requêtes internes, nous allons leurs associer la variable dontlog, par exemple :

SetEnvIf Remote_Addr "127.0.0.1" dontlog

ou avec IPv6 :

SetEnvIf Remote_Addr "::1" dontlog

Ensuite, à la fin de la ligne qui définit le CustomLog, nous allons ajouter une condition pour ignorer les requêtes associées à notre variable dontlog. Ceci prendra la forme suivante : env=!dontlog.

L'exemple complet avec IPv6 est le suivant :

SetEnvIf Remote_Addr "::1" dontlog
CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined env=!dontlog

Maintenant il suffit de redémarrer le serveur Apache et toutes les connexions locales, y compris les entrées « internal dummy connection », ne seront plus enregistrées.


Partager