Comment faire : Vérifier les connexions sur votre serveur Apache

Voici une methode qui permet de voir rapidement les adresses IP publiques qui se sont connectées sur votre serveur Apache:

Tout d’abord, regardons le fichier access.log:

cat /var/log/apache2/access.log

Seules les adresses IP qui nous intéressent, nous allons donc afficher seulement celles-ci. toutes les ligne du fichier access.log commencent par une adresse IP, nous allons donc utiliser ‘awk’ pour afficher le premier ‘mot’ de chaque ligne:

cat /var/log/apache2/access.log | awk '{print $1}'

Ensuite, il faut éliminer les entrées qui concernent notre réseaux local. Pour  mon exemple, l’adresse réseaux local est 192.168.1.0/24:

cat /var/log/apache2/access.log | awk '{print $1}' | grep -v '192\.168\.1\.[0-9]*'

Enfin, nous allons éliminer les doublons. La commande ‘sort permet de trier les ligne par ordre alphabétique et la commande ‘uniq’ supprime les doublons consécutifs (d’ou l’interret de trier dans un premier temps). le paramètre -c ajoute le nombre de doublons qui a été supprimer:

cat /var/log/apache2/access.log | awk '{print $1}' | grep -v '192\.168\.1\.[0-9]*' | sort | uniq -c

On peut trier une fois de plus, de manière à obtenir les IP ayant le plus occurrences à la fin

cat /var/log/apache2/access.log | awk '{print $1}' | grep -v '192\.168\.1\.[0-9]*' | sort | uniq -c | sort

 

Pour aller plus loin, on peut ajouter les fichiers de log compressés pour obtenir un résultat plus complet :

Voici le petit script qui va bien :

#!/bin/bash
cat /var/log/apache2/access.log | awk '{print $1}' | grep -v '192\.168\.1\.[0-9]*' > tmp.txt
zcat /var/log/apache2/access.log*.gz | awk '{print $1}' | grep -v '192\.168\.1\.[0-9]*' >> tmp.txt
cat tmp.txt | sort | uniq -c | sort
rm tmp.txt

 

Tags: , ,

2 Responses to “Comment faire : Vérifier les connexions sur votre serveur Apache”

  1. Max says:

    Awk fait le cat et le grep inversé d’un coup.
    Par exemple:
    awk ‘/TA_REGEX/ {print $1}’ /var/log/apache2/access.log | sort | uniq -c

    Donc, pareil pour plus de lisibilité dans le code ;)

    Certes, le zcat ne semble pas substituable par awk.

Leave a Reply