Un collègue a récemment remarqué que, bien que mon dernier message donnait une explication valable sur la manière dont un 408 pourrait être associé à une mesure de sécurité, il n'offrait aucune solution.
Le journal d'accès pipé est ma solution personnelle.
Le suivant devrait fonctionner directement sur la plupart des configurations Ubuntu, et avec peu de bidouillage sur d'autres configurations Apache. J'ai choisi PHP car c'est le plus facile à comprendre. Il y a deux scripts : le premier empêche qu'un 408 soit écrit dans votre journal d'accès. Le deuxième script envoie tous les 408 à un fichier journal séparé. Dans les deux cas, le résultat est plus de 408 dans votre journal d'accès. C'est à vous de choisir quel script implémenter.
Utilisez votre éditeur de texte préféré, j'utilise nano. Ouvrez le fichier où vous avez vos directives 'LogFormat' et 'CustomLog'. Mettez les originaux en commentaire avec le # habituel et ajoutez les éléments suivants. Vous pourriez trouver ces directives dans le fichier ci-dessous.
sudo nano /etc/apache2/sites-available/default
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" AccessLogPipe
CustomLog "|/var/log/apache2/PipedAccessLog.php" AccessLogPipe env=!dontlog
REMARQUE : Je ne journalise pas les images dans mon journal d'accès. Dans mon fichier etc/apache2/httpd.conf, j'inclus la ligne
SetEnvIfNoCase Request_URI ".(gif)|(jpg)|(png)|(css)|(js)|(ico)$" dontlog
Si cela ne vous intéresse pas, supprimez le env=!dontlog
de la directive CustomLog
.
Créez maintenant l'un des scripts PHP suivants (#!/usr/bin/php
est une référence à l'emplacement de l'interpréteur, assurez-vous que l'emplacement est correct pour votre système - vous pouvez le faire en tapant à l'invite $; whereis php
- cela devrait renvoyer quelque chose comme php: /usr/bin/php /usr/bin/X11/php /usr/share/man/man1/php.1.gz
. Comme vous le voyez, #!/usr/bin/php
est correct pour ma configuration).
sudo nano /var/log/apache2/PipedAccessLog.php
#!/usr/bin/php
sudo nano /var/log/apache2/PipedAccessLog.php
#!/usr/bin/php
Ayant sauvegardé le script PipedAccessLog.php
, assurez-vous que root en est le propriétaire en exécutant ce qui suit à l'invite $.
sudo chown -R root:adm /var/log/apache2/PipedAccessLog.php
Le script PipedAccessLog.php
aura besoin des autorisations de lecture/écriture et d'exécution, donc exécutez ce qui suit à l'invite $.
sudo chmod 755 /var/log/apache2/PipedAccessLog.php
Enfin, pour que tout fonctionne, vous devez redémarrer le service Apache. Exécutez ce qui suit à l'invite $.
sudo service apache2 restart
Si vos journaux Apache sont situés ailleurs, modifiez les chemins pour correspondre à votre configuration. Bonne chance.
0 votes
blog.spiderlabs.com/2011/07/…