Après le mise à jour hebdomadaire apache refuse de démarrer ...
Un examen des logs (systemd ne donne, comme d'habitude, aucun renseignement utile !), je vois que c'est "modsec2" qui se plaint d'un problème de version de la bibliothèque "pcre" :
ModSecurity: Loaded PCRE do not match with compiled!
Debian ne fournissant pas (pas encore ?) de nouvelle versions (2.9.7) il me faut télécharger les sources (https://github.com/SpiderLabs/ModSecurity/releases) et passer par la case "compilation".
La compilation demande, comme à l'habitude, quelques librairies "-dev" qui ne figurent pas dans cette machine, mais, les messages sont clairs et un petit coup de "apt install la_librairie_manquante-dev" résout rapidement le problème. Par exemple il manque "apache2-dev" qui déclenche l'installation de plein de dépendances (dont libpcre2 et son "pcre2.h") qui suffisent à peu près.
L'ajout de "libpcre3-dev" (l'include "pcre.h" est partie de libpcre3), "libxml2-dev", "pkg-config" termine la préparation.
PS : pour Bookworm ne pas intégrer libcurl-dev qui déclenche une erreur de compilation.
Mais le premier essai de lancement n'est pas concluant, nouveau refus de démarrage avec un message :
Invalid command 'SecAuditLogFormat', perhaps misspelled or defined by a module not included in the server configuration
En cherchant où est déclarée cette information je trouve dans /etc/modsecurity le fichier de config "modsecurity.conf" qui contient le mot recherché : "SecAuditLogFormat JSON". Après quelques recherches sur Internet je trouve que "JSON" ne figure pas dans les options standard et que modsecurity utilise une librairie JSON peu connue : "yajl". Comme j'utilise le format JSON pour les logs (modsec_audit.log) il me faut donc récupérer "libyajl-dev" et recompiler avec la bonne option dans le petit script suivant, bien sûr précédé d'un "make clean" :
#!/bin/bash
cd /usr/src/PGM/BUILD/ModSecurity-2.9.7
OPTIONS=''
OPTIONS=${OPTIONS}' --enable-large-stream-input '
OPTIONS=${OPTIONS}' --with-yajl=/usr/lib/x86_64-linux-gnu '
#
./configure ${OPTIONS} 2>&1 | tee LOG.configure
ret=$?
if [ $ret -ne 0 ]
then
echo 'Erreur configure code:'$ret
exit
fi
#
make 2>&1 | tee LOG.make
La compilation est toujours OK et le "make install" installe comme il se doit la librairie "mod_security2.so" dans le répertoire adéquat "/usr/lib/apache2/modules". Et ..., ça marche au premier clancement, Apache démarre sans se plaindre, les sites sont de nouveau accessibles et les logs de Modsec bien en JSON comme prévu par le petit programme Python qui exploite les données.