Skip to content

Instantly share code, notes, and snippets.

@ljamel
Last active June 3, 2023 18:50
Show Gist options
  • Save ljamel/6a77afe3a71cd2de65d79b9823d7a74f to your computer and use it in GitHub Desktop.
Save ljamel/6a77afe3a71cd2de65d79b9823d7a74f to your computer and use it in GitHub Desktop.
simple web SIEM bash
#!/bin/bash
# Chemin du fichier de journalisation Apache
logfile="/var/log/apache2/access.log.1"
# Liste des pages sensibles pour détecter les attaques
sensitive_pages=("admin.php" "phpmyadmin" ".env")
#codes_errors=("404" "403" "500" "400")
# Analyse du fichier de journalisation
if [ -f "$logfile" ]; then
echo "Analyse du fichier de journalisation : $logfile"
# Nombre de requêtes par adresse IP
# echo "Nombre de requêtes par adresse IP :"
# awk '{print $1}' "$logfile" | sort | uniq -c | sort -nr
# Vérification des pages sensibles
echo "Détection d'attaques sur les pages sensibles :"
for page in "${sensitive_pages[@]}"; do
ip=$(grep "$page" "$logfile" | awk '{print " : " $1}' | uniq -c)
#if [[ $(echo $ip | awk '{print $1}') -ne "1" ]];
#then
count=$(grep -c "$page" "$logfile")
echo -e "Page $page : $count attaques détectées :\n Nombres : Adresse IP \n $ip"
#fi
done
# Statistiques de code de réponse HTTP
echo "Statistiques de code de réponse HTTP :"
echo " Nombres : Adresse IP : Code"
grep "500\|400\|403\|401\|405\|404" "$logfile" | awk '{print $1," : " $9}' | uniq -c
# Statistiques de taille de réponse
echo "Statistiques de taille de réponse :"
awk '{sum+=$10} END {print "Total :", sum/1024, "KB"}' "$logfile"
else
echo "Le fichier de journalisation $logfile n'existe pas."
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment