Logo Khaganat

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:apache [2025/06/26 09:14] – Logs apache zatalyzfr:apache [2025/06/26 20:41] (Version actuelle) – [Faire des pages d'erreurs personnalisées] zatalyz
Ligne 644: Ligne 644:
 On peut se faire un fichier de configuration appelant diverses modifs sur tous les sites, par exemple dans ''/etc/apache2/conf-available/bidouilles.conf''. On peut se faire un fichier de configuration appelant diverses modifs sur tous les sites, par exemple dans ''/etc/apache2/conf-available/bidouilles.conf''.
  
-Ensuite on peut l'appeler dans chaque config de site en ajoutant la ligne suivante (dans ''/etc/apache2/sites-enabled/monsite-ssl.conf'', entre les balises ''VirtualHost'') :+Ensuite on peut l'appeler partout de cette façon :   
 +  sudo a2enconf bidouilles 
 +  sudo systemctl reload apache2 
 +Cela évite de réécrire les mêmes règles partout. 
 + 
 +On peut aussi l'inclure dans chaque vhost en ajoutant la ligne suivante (dans ''/etc/apache2/sites-enabled/monsite-ssl.conf'', entre les balises ''VirtualHost'') :
   Include /etc/apache2/conf-available/bidouilles.conf   Include /etc/apache2/conf-available/bidouilles.conf
 +Mais attention, suivant ce qu'on met dedans, cela peut mettre un peu de bazar (genre, la partie sur les logs plus bas, je ne sais pas trop comment les logs seront écrits avec l'include, si un vhost va écraser les logs du copain d'à côté ou si ça se combinera).
  
-Cela évite de réécrire les mêmes règles partout. 
  
 ==== Virer le tracker de Facebook ==== ==== Virer le tracker de Facebook ====
Ligne 732: Ligne 737:
  
 Doc : https://httpd.apache.org/docs/2.4/fr/custom-error.html Doc : https://httpd.apache.org/docs/2.4/fr/custom-error.html
 +
 +=== Partager les pages entre serveurs ===
 +Là, je ne sais pas si c'est la bonne idée. Mais le plus efficace serait de monter le dossier des pages d'erreurs via un partage réseau (genre NFS), ainsi apache peut pointer localement vers un truc qui est en réalité ailleurs. Cependant, avant de mettre ça en place, on va vérifier avec les pros de la sécurité : on brise un peu l'isolement entre les serveurs en faisant ça. Vu qu'on a juste des pages html pur, les exploits me semblent complexes, mais j'ai un doute. 
 +
 +Une autre solution est de faire un rsync, un truc Ansible... C'est sans doute aussi bien.
 +
  
 ==== Personnaliser les logs d'erreur et d'accès ==== ==== Personnaliser les logs d'erreur et d'accès ====
Ligne 772: Ligne 783:
  
 Ainsi par exemple, pour ''vhost_combined'', les arguments seront : Ainsi par exemple, pour ''vhost_combined'', les arguments seront :
-  * ''%v''le nom déclaré par ServerName (donc le domaine visité) +  * ''%v''Le nom déclaré par ServerName (donc le domaine visité) 
-  * ''%p''le port +  * ''%p''Le port 
-  * ''%h''l'ip de la visiteuse +  * ''%h''L'ip de la visiteuse 
-  * ''%l''  +  * ''%l'' : "Identité de l'utilisateur selon identd" (un vieux protocole réseau que plus personne n'utilise). Presque toujours ''-'' donc assez inutile. 
-  * ''%u''  +  * ''%u'' : Nom d'utilisateur si connecté via HTTP (sinon ''-''), généralement inutile puisqu'on identifie côté applicatif. 
-  * ''%t''  +  * ''%t'' : l'heure et la date 
-  * ''%r''  +  * ''%r'' : la requête (GET/POST etc) 
-  * ''%>s''  +  * ''%>s'' : Code de statut HTTP final, après d'éventuelles redirections 
-  * ''%O''  +  * ''%O'' : Taille de la réponse envoyée (en octets) 
-  * ''%{Referer}i''  +  * ''%{Referer}i'' : En-tête Referer envoyé par le client (URL de la page d’origine, parfois vide) 
-  * ''%{User-Agent}i''+  * ''%{User-Agent}i'' : En-tête User-Agent du client (navigateur, bot, rien...)
  
 +La proposition pratique sera épurée par rapport à ce modèle.
 === Et un exemple pratique === === Et un exemple pratique ===
 +Alors, on met quoi, dans nos logs ?
  
 +Oublions les logs déclarés dans les vhosts, on va faire ça de façon générale, dans notre ''bidouilles.conf''.
  
-  +<code> 
 +# Logs au format comme on veut 
 +LogFormat "%h ☆ %v ☆ %t ☆ %>s ☆ %O ☆ \"%r\" ☆ \"%{User-Agent}i\" ☆ \"%{Referer}i\" " vhost_maison 
 +CustomLog ${APACHE_LOG_DIR}/access.log vhost_maison 
 +</code>
  
 +  * l'ip en premier, c'est ainsi super facile d'écrire les regex et de la cibler en variant les motifs derrière. Puis Servername, la date, le code http, le poids de la requête.
 +  * ☆ pour séparer les arguments (ou tout autre caractère unicode). Aucun risque que ce soit utilisé dans les logs, sauf à la limite le Referer ou l'User-Agent (si le bot est vraiment chelou). Et c'est ainsi une base assez simple à détecter dans les regex. Attention ça n'empêche pas de devoir déclarer finement le reste, justement pour le cas où on tomberait sur un bot chelou. Mais techniquement les premiers sont forcément ceux qu'on attends. 
 +  * Je garde la requête en format long. Une alternative serait :
 +    * ''%m %U%q'' (méthode de la requête type GET/POST/etc, chemin sans les arguments, les arguments). Ça ne me semble pas forcément utile actuellement de détailler de cette façon, le résultat sera assez similaire.
 +  * Je garde l'User-Agent, qui permet de bannir facilement des bots de GAFAM ou des bots vraiment mal fichus. Mais attention, ça piste aussi assez bien les utilisatrices légitimes. 
 +  * Le Referer n'a pas forcément d'utilité dans la lutte anti-bot, mais peut en avoir quand on débugue les sites. 
  
 +Attention, ce format de log n'a rien de classique ; il ne sera pas facilement interprété par les logiciels à moins d'indiquer les bonnes regex. Justement dans mon cas j'ai besoin de les créer pour Reaction, mais suivant les outils, c'est peut-être un plan foireux !
 ==== Could not reliably determine the server's fully qualified domain name ==== ==== Could not reliably determine the server's fully qualified domain name ====
 À chaque modif du serveur, vous avez sans doute droit à ce message d'erreur : À chaque modif du serveur, vous avez sans doute droit à ce message d'erreur :
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/apache.1750929262.txt.gz · Dernière modification : de zatalyz

Licences Mentions légales Accueil du site Contact Inclusion