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