Configurer Awstats de manière plus sécurisé suite aux failles découvertes

Cette version du tutorial sur Awstats vient d’une récente nouvelle montrant que des failles de sécurité importantes existaient. Nous allons donc maintenant utiliser la version statique d’Awstats et ne plus rien laisser traîner dans notre répertoire cgi.

Pour plus d’informations : Awstats.

Nous allons étudier une installation multi domaine vous permettant d’avoir des statistiques séparés pour chaque domaine de votre serveur.

Nous supposons que vous êtes connecté en ligne de commande avec SSH.

Installation

Tout d’abord on récupère le fichier avec une commande wget.

wget http://umn.dl.sourceforge.net/sourceforge/awstats/awstats-6.3.tgz

On décompresse ensuite le fichier compressé en tar et en gzip

tar xvfz awstats-6.3.tgz

Pour des raisons de sécurité, on laisse tout en place, si vous avez installé votre awstats dans un répertoire particulier veuillez en noter le chemin (commande pwd pour savoir où on est).

Nous dirons que vous avez installé awstats dans le répertoire /root

Configuration

La configuration de awstats se trouve dans le fichier awstats.model.conf, en fait Awstats accepte autant de configurations que l’on souhaite. Il suffit de créer autant de fichiers de configuration que de configurations nécessaires. Nous allons donc créer un fichier par domaine voulu, vous pourriez aussi vouloir avoir 2 domaines dans les mêmes statistiques et cela est tout à fait possible.

On se déplace dans /root/awstats-6.3/wwwroot/cgi-bin/

cd /root/awstats-6.3/wwwroot/cgi-bin/
cp  awstats.model.conf  awstats.votredomaine.com.conf

Maintenant, éditer le fichier awstats.votredomaine.com.conf pour changer quelques paramètres

vi awstats.votredomaine.com.conf

Tout d’abord nous allons indiquer à Awstats où trouver les logs de Apache. Trouvez la ligne LogFile.

LogFile="/var/log/apache/access.log"

Nous allons ensuite dire quel domaine principal est concerné par les statistiques, ce paramètre n’est pas forcement nécessaire nous allons voir après pourquoi.

SiteDomain="votredomaine.com"

En effet, nous allons indiquer dans HostAliases et de manière identique les domaines que l’on souhaite inclure dans ce fichier de configuration. Awstats va rechercher le nom de ces domaines dans les logs d’Apache. Notez que le terme est sous forme régulière.

HostAliases="REGEXvotredomaine\.com$"

Enfin le plus délicat, le format des Logs. Ici il faut mettre d’accord Apache et Awstats. Si vous hébergez plusieurs domaines sur votre serveur vous avez alors choisi peut être de séparer les logs d’Apache, si ce n’est pas le cas il faut ajouter dans Apache le paramétre %v dans LogFormat indiquant à Apache que les Logs doivent aussi contenir le nom du domaine (virtualname). Je vous renvoi au tutorial d’installation d’Apache en multi domaine pour plus d’informations.

Danes apache

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{forensic-id}n\" %v" combined

Dans Awstats, la ligne LogFormat doit être « identique » dans le sens ou chaque variable indiqué doit correspondre.

LogFormat = "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %otherquot %virtualname"

Une fois cela réglé, faire ./awstats.pl -config= votredomaine.com –update pour voir si tout se passe bien. Si c’est le cas, vous aurez une réponse de ce genre :

Update for config "./awstats. votredomaine.com.conf"

With data in log file "/var/log/apache/access.log"...

Phase 1 : First bypass old records, searching new record...

Searching new records from beginning of log file...

Jumped lines in file: 0

Parsed lines in file: 74

Found 0 dropped records,

Found 0 corrupted records,

Found 0 old records,

Found 74 new qualified records.

Si vous avez des dropped records et aucun new qualified records alors il y a des problèmes dans le format des logs

Construire les pages statistiques

Nous allons pour des raisons de sécurité, construire les pages en statiques. Awstats va donc générer des pages HTML dans un répertoire spécifié. Pour cela nous allons utiliser le script awstats_buildstaticpages.pl qui se trouve dans le répertoire tools de awstats.

On doit indiquer plusieurs paramètres à ce script. Tout d’abord le fichier de configuration qu’il doit utiliser avec

–config=votredomaine.com

Ensuite la langue utilisé

-lang=fr

Ainsi que où se trouve le script awstats.pl, comme on l’a laissé à sa place, il se trouve dans awstats à l’adresse suivante

-awstatsprog=/root/awstats-6.3/wwwroot/cgi-bin/awstats.pl

Enfin on doit dire dans quel répertoire awstats va copier le résultat final en fichier html. Pour cela nous allons créer un répertoire awstats dans notre /var/www (la racine de notre serveur WEB)

Ensuite pour chaque domaine nous créons un nouveau répertoire par exemple votredomaine.com, c’est celui-ci que l’on indiquera dans le paramétre dir

-dir=/var/www/awstats/votredomaine.com/

Voici la commande finale

perl /root/awstats-6.3/tools/awstats_buildstaticpages.pl -config=votredomaine.com -update -lang=fr -awstatsprog=/root/awstats-6.3/wwwroot/cgi-bin/awstats.pl -dir=/var/www/awstats/ votredomaine.com/

Définir une actualisation des statistiques avec cron

Nous allons maintenant dire au système d’exécuter régulièrement awstats pour qu’il mette à jour les statistiques. Nous allons utiliser le CRON pour cela, ce daemon permet d’exécuter à intervalle régulier certaines tâches.

Editer votre CRON (utilisateur root)

Crontab –e

Entrez la ligne suivante

1-51/10 * * * * perl /root/awstats-6.3/tools/awstats_buildstaticpages.pl -config=votredomaine.com -update -lang=fr -awstatsprog=/root/awstats-6.3/wwwroot/cgi-bin/awstats.pl -dir=/var/www/awstats/ votredomaine.com/

Pour exécuter l’actualisation des statistiques toutes les 10 minutes. L’explication de cette ligne est simple. Les nombres indiquent à quelle minute doivent être lancé la tâche. Les 4 étoiles indiquent : toutes les heures, tous les jours, tous les mois, toutes les années. Ensuite vient la ligne de commande (la tâche)

Rotation des logs.

Il faut savoir aussi qu’une rotation des fichiers logs s’opèrent sur le système, lors de l’installation d’apache, celui-ci a aussi installé une rotation de ses fichiers logs. Pour ne pas perdre de visiteurs pendant la rotation on doit ajouter des instructions.

Allez dans /etc/logrotate.d/

cd /etc/logrotate.d/

Editer le fichier apache

pico apache

Entrez les lignes suivantes avant la ligne postrotate.

prerotate

                su - root -c "/usr/lib/cgi-bin/awstats.pl -config=cederoms.com -update > /dev/null"

endscript

Voilà, normalement tout est en ordre