Bonjour à tous …
[la traduction du terme analyse dans le texte est GREP ^^ faut pas s'attendre à une analyse mathématique !!]
Bé voilà, comme j’adore raconter ma vie, voici un petit truc sympa :
Aujourd’hui on a eu droit à un cours … le premier depuis des mois!!! L’ennui se faisant sentir (un cours sur les tests … déjà vu en DUT), je me connecte à mon serveur et après un petit tour du proprio … comme d’hab koi ^^ Je lis les logs de mon serveur … (c’est grave docteur ??) et là horreur plein de ligne du ModSecurity m’indiquant pleins de tentatives diverses et variées (XSS, SQL Injection, …).
Un petit aperçu d’une ligne du log :
-
[msg "Remote File Access Attempt"]
-
[severity "CRITICAL"] [tag "WEB_ATTACK/FILE_INJECTION"]
-
[hostname "blog.gaetan-grigis.eu"]
-
[unique_id "Sg1981diuFsAADJ2ypYAAAAC"]
Le genre du truc qu’en terminal on aime pas trop lire (surtout sur l’écran du téléphone portable) … et pis y’en avais une bonne cinquantaine … et là mes venu la superbe idée (j’imagine que plein d’admins l’on déjà fait, mais bon ^^ au cas où si ça vous intéresse), j’ai crée un petit script qui analyse le log d’erreur d’apache (par grep quoi ^^) et envoi un mail avec les lignes incriminées, ce qui donne donc (il vous faudra bien sûr le mod_security d’installé … cf. mon blog
)
-
LOG_ERROR="/var/log/apache2/error.log"
-
LOG_MODSEC=`cat $LOG_ERROR |grep ModSecurity | wc -l`
-
if [ $LOG_MODSEC -gt 0 ]
-
then
-
SEVERITY_ALERT=`cat $LOG_ERROR | grep "severity \"ALERT\"" | wc -l`
-
SEVERITY_CRITI=`cat $LOG_ERROR | grep "severity \"CRITICAL\"" | wc -l`
-
if [ $SEVERITY_ALERT -gt 0 ]
-
then
-
cat $LOG_ERROR | grep "severity \"ALERT\"" |mail -s "[LOG]HTTP ALERT" addr@gmail.com
-
echo "NB ALERT : $SEVERITY_ALERT"
-
fi
-
-
if [ $SEVERITY_CRITI -gt 0 ]
-
then
-
cat $LOG_ERROR |grep "severity \"CRITICAL\"" | mail -s "[LOG]HTTP CRITICAL" addr@mail.com
-
echo "NB CRITICAL : $SEVERITY_CRITI"
-
fi
-
fi
et voila passionnante ma vie ^^, en ASM ça se résumerait ainsi : (MOV al,1 XOR ebx,ebx, int 0×80), reste plus qu’à exécuter le script avant le rotatelog histoire d’avoir le résumé des attaques de la journée/semaine …
Je vais peut être en profiter pour faire des graphiques suivant les types d’attaque, leurs nombres, leurs provenances, … ou pas
Petit ajout du 17 mai … pour rajouter un script du genre celui donné plus haut, il faut aller voir dans le fichier /etc/logrotate.d/apache2 et ajouter les lignes suivantes :
-
sh /scripts/logAnalyzer.sh > /dev/null
-
endscript
après la ligne sharedscripts et hop, on envoi les mails avant la rotation des logs, comme ça on passe pas pour le nolife-ki-li-ses-logs-apache-pendant-les-cours devant ses camarades de classe.
Voilà … bon we
