Webserver / Mailserver Statistiken mit Awstats

Aus Laub-Home Wiki

Einleitung

Wer sieht nicht gerne was auf seinem Webserver oder Mailserver los ist. Genau dafür ist das kleine Perl Programm awstats da. Ich will hier eine kleine Beschreibung erstellen wie man awstats zum Laufen bekommt. Homepage

Installation Awstats

Debian Linux

Wir installieren zuerst das normale AWSTATS Paket der Stable Version:

aptitude update
aptitude install awstats

Da diese Version Recht betagt ist und nicht die aktuellen Browser oder Betriebssysteme erkannt werden, holen wir uns die aktuellste unstable/sid Version. Wer dies nicht möchte kann den Restlichen Teil überspringen.
Als erstes die Datei /etc/apt/sources.list editieren:
Aus lenny oder stable wird sid oder unstable:

#web mirrors
deb http://ftp.de.debian.org/debian/ lenny main
deb-src http://ftp.de.debian.org/debian/ lenny main

-->

#web mirrors
deb http://ftp.de.debian.org/debian/ sid main
deb-src http://ftp.de.debian.org/debian/ sid main

nun Paket Listen aktualisieren

aptitude update

und awstats Paket herunterladen und installieren bzw. auf die Unstable Version updaten:

aptitude install awstats -d
dpkg -i /var/cache/apt/archives/awstats_6.9.5~dfsg-4_all.deb

Nun wieder von SID auf Lenny bzw. UNSTABLE auf STABLE switchen:

#web mirrors
deb http://ftp.de.debian.org/debian/ lenny main
deb-src http://ftp.de.debian.org/debian/ lenny main

und Paket Liste aktualisieren:

aptitude update

Awstats 7 installieren unter Debian Squeeze

Um den neusten Awstats Release 7 unter Debian Squeeze zu installieren, kann das Paket einfach aus dem Wheeze Repository installiert werden. Hierzu einfach in der /etc/apt/sources.list alle squeeze Einträge durch wheezy Einträge ersetzten:

#

# deb cdrom:[Debian GNU/Linux 6.0.0 _Squeeze_ - Official i386 NETINST Binary-1 20110205-14:34]/ squeeze main

#deb cdrom:[Debian GNU/Linux 6.0.0 _Squeeze_ - Official i386 NETINST Binary-1 20110205-14:34]/ squeeze main

deb http://ftp.de.debian.org/debian/ wheezy main
deb-src http://ftp.de.debian.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main

deb http://ftp.de.debian.org/debian/ wheezy-updates main
deb-src http://ftp.de.debian.org/debian/ wheezy-updates main

# Non-Free Repo
deb http://ftp.de.debian.org/debian/ wheezy non-free
deb-src http://ftp.de.debian.org/debian/ wheezy non-free

nun das awstats Paket installieren bzw. updaten:

aptitude update
aptitude install awstats

Red Hat Linux

Konfiguration Awstats

Die Konfigurations Dateien befinden sich unter /etc/awstats. Ich benenne die bestehende awstats.conf in awstats.template um, diese Datei für die einzelnen Statistiken einfach zu kopieren, z.B.:

cp awstats.template awstats.wiki.laub-home.de.conf

Achtung, die aktivierten Dateien müssen die Dateiendung .conf haben!

Apache Webserver

Hier die Änderungen die zum Überwachen eines Apache Logfiles gemacht werden müssen:
awstats.wiki.laub-home.de

#fuer das lokale access.log
LogFile="/var/log/apache2/access.log"
#mehrere Files zusammeuehren, diese muessen vorher lokal kopiert werden
#LogFile="/usr/bin/logresolvemerge.pl /srv/awstats/wiki.laub-home.de/wiki.laub-home.de*.log |"
#fuer alle gzip logfiles
#LogFile="ssh -l root 192.168.x.x zcat /var/log/apache2/archive/wiki.laub-home.de/wiki.laub-home.de-access*.log.gz |"
#nur fuer das aktuellste gz
#LogFile="ssh -l root 192.168.x.x zcat /var/log/apache2/archive/wiki.laub-home.de/wiki.laub-home.de-access.%YYYY-24-%MM-24-%DD-24.log.gz |"

LogFormat=1
SiteDomain="wiki.laub-home.de"
AllowFullYearView=3

Mail Server

Hier die angepassten Parameter einer Awstats Konfigurationsdatei zur Auswertung von Mail Logs:

LogFile="cat /var/log/mail.log > /tmp/mail.log; perl /usr/share/doc/awstats/examples/maillogconvert.pl standard < /tmp/mail.log |"
LogType=M
LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"
SiteDomain="mail"
LevelForBrowsersDetection=0         # 0 disables Browsers detection.
LevelForOSDetection=0               # 0 disables OS detection.
LevelForRefererAnalyze=0            # 0 disables Origin detection
LevelForRobotsDetection=0           # 0 disables Robots detection.
LevelForSearchEnginesDetection=0    # 0 disables Search engines detection.
LevelForFileTypesDetection=0        # 0 disables File types detection.
ShowSummary=HB
ShowMonthStats=HB
ShowDaysOfMonthStats=HB
ShowDaysOfWeekStats=HB
ShowDomainsStats=0
ShowHostsStats=HBL
ShowRobotsStats=0
ShowEMailSenders=HBML
ShowEMailReceivers=HBML
ShowSessionsStats=0
ShowPagesStats=0
ShowFileTypesStats=0
ShowOSStats=0
ShowBrowsersStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=1

Squid Logfiles auswerten

Um Logfiles des Squids auswerten zu können muss zuerst das Logging des Squids angepasst werden:
/etc/squid/squid.conf

access_log /var/log/squid3/access.log combined
emulate_httpd_log on

Nun die Einstellungen im awstats: awstats.squid.conf

LogFile="/var/log/squid/access.log.1"
LogType=W
LogFormat=4
SiteDomain="localhost"

LevelForBrowsersDetection=0
LevelForOSDetection=0
LevelForRefererAnalyze=0
LevelForRobotsDetection=0
LevelForSearchEnginesDetection=0
LevelForKeywordsDetection=0
LevelForFileTypesDetection=2
LevelForWormsDetection=2
ShowDomainsStats=0
ShowRobotsStats=0
ShowWormsStats=HBL
ShowFileSizesStats=0
ShowOSStats=0
ShowBrowsersStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0

Installation und Konfiguration GeoIP Plugin

Zuerst braucht man die GeoIP Datenbanken, die mit folgendem kleinen Skript heruntergeladen werden:
/usr/local/sbin/getgeoip.sh

#!/bin/sh
#
# GeoIP Databases Update
# Script Updates GeoIP Databases
# by A.Laub andreas@laub-home.de

GEOIPLOCATION="/usr/local/share/GeoIP"

if [ ! -d $GEOIPLOCATION ]; then
        mkdir -p $GEOIPLOCATION
fi
cd $GEOIPLOCATION
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz
gunzip -f *.gz
chown root.root *.dat

Dem Skript noch das Ausführ Rechte geben:

chmod +x /usr/local/sbin/getgeoip.sh

und starten:

/usr/local/sbin/getgeoip.sh

nun sollte der GeoIP Ordner angelegt worden sein und folgenden Inhalt haben:

ls -l /usr/local/share/GeoIP/
total 33732
-rw-r--r-- 1 root root  2811170 2010-09-03 13:24 GeoIPASNum.dat
-rw-r--r-- 1 root root  1072630 2010-09-02 19:18 GeoIP.dat
-rw-r--r-- 1 root root 30605325 2010-09-03 04:27 GeoLiteCity.dat

Dann noch die Perl Abhängigkeiten installieren:

aptitude install libgeo-ip-perl

Und rein ins CPAN:

cpan

hier bitte folgenden Befehl absetzten:

install Geo::IP::PurePerl

Nun können die Datenbanken im Awstats verwendet werden. Um das Plugin für alle Webstatistiken zu aktivieren konfiguriert man am besten folgende Globale Konfigurationsdatei: awstats.conf.local

Achtung!!! Unter Red Hat Linux muss diese Datei angelegt werden und in den einzelnen Webstatistik Konfigurationsdateien inkludiert werden. Dazu bitte folgende Zeile am Ende der Konfigurationsdateien anhängen:

Include "/etc/awstats/awstats.conf.local"

awstats.conf.local

#Enable GeoIP
LoadPlugin="geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/local/share/GeoIP/GeoLiteCity.dat"
LoadPlugin="geoip_org_maxmind GEOIP_STANDARD /usr/local/share/GeoIP/GeoIPASNum.dat"

Um wöchentlich zu aktualisieren, einfach dem cron.weekly hinzufügen:

ln -s /usr/local/sbin/getgeoip.sh /etc/cron.weekly/getgeoip

Hostinfo Plugin

Das Hostinfo Plugin ermöglicht es eine whois-Abfrage für jeden Hosteintrag in der Statistik zu machen. Voraussetzung hierfür ist das Perl Modul XWhois, welches auf zwei Arten installiert werden kann. 1. via Repository unter Ubuntu/Debian

aptitude install libnet-xwhois-perl

2. via cpan:

cpan Net::XWhois

Aktiviert wird das Plugin in der Awstats Konfiguration durch folgenden Parameter:

# PLUGIN: HostInfo
# REQUIRED MODULES: Net::XWhois
# PARAMETERS: None
# DESCRIPTION: Add a column into host chart with a link to open a popup window that shows
# info on host (like whois records).
#
LoadPlugin="hostinfo"

Leider gibt es ein kleine Problem mit dem Perl Modul in Version 0.90 und der deutschen Denic whois Abfrage. Klickt man auf das Fragezeichen bei den Whois Abfragen eines Deutschen DNS Eintrages, poppt ein leeres Whois Fenster auf, bei dem nur die Beiden folgenden Zeilen beschrieben sind:
Full Whois Field
Domain: domain.de
Status: connect

Die Oberen Einträge beim Common Whois Fields sind komplett leer. Das Problem kommt daher, das bei der Denic der Parameter -T dn mitgeliefert werden muss um eine komplette whois Ausgabe zu bekommen. Gefixt wird das ganze im Perl Modul selbst:
/usr/share/perl5/Net/XWhois.pm ca. Zeile 428

my %ARGS = (
    'whois.nic.ad.jp'            => { 'S' => '/e' },
    'whois.internic.net'         => { 'P' => '=' },
    'whois.networksolutions.com' => { 'P' => '=' },
    # Add this Line for denic to work.
    'whois.denic.de' => { 'P' => '-T dn ' },
);

Nun wird zu mindest mal das Full Whois Field ausgefüllt.

Benutzer Management

Man kann einzelne Statistiken Passwortschützen. Will man zum Beispiel das nur die Webseiten verantwortlichen Zugriff auf ihre Webseiten Statistik bekommen und nicht auf andere, für Sie unwichtigen Seiten, kann man dies mit einer simplen Passwort Authentifikation und ein paar Anpassungen in den einzelnen Awstats Konfigurationen einrichten.

Als erstes muss die awstats.pl passwortgeschützt werden. Dies kann durch die einfache Konfigurationserweiterung folgender Datei geschehen:
/etc/apache2/conf.d/awstats.conf

Alias /awstats-icon /usr/share/awstats/icon/

<Files awstats.pl>

    Order deny,allow
    Deny from all
    Allow from 127.0.0.1

    AuthType Basic
    AuthName "HTTP Access"
    AuthUserFile  /etc/apache2/httpduser.pwd
    Require user statuser1 statuser2 statuser3

    Satisfy Any

</Files>

<Directory /usr/share/awstats/icon/>
    Options +FollowSymLinks
    AllowOverride None
    order allow,deny
    allow from all
</Directory>

Nun muss noch die Passwort Datei /etc/apache2/httpduser.pwd mit den gewünschten Benutzern (hier statuser1, statuser2 und statuser3) erstellt und die Passwörter vergeben werden:

htpasswd -c /etc/apache2/httpduser.pwd statuser1
htpasswd /etc/apache2/httpduser.pwd statuser2
htpasswd /etc/apache2/httpduser.pwd statuser3

Nun ist die gesamte Awstats Statistik Passwort geschützt und jeder user der sich einloggt hat zugriff auf alle Statistiken. Um Benutzern nun einer Statistik zu zuweisen müssen folgende Parameter in der Statistik Konfigurationsdatei angepasst werden:

AllowAccessFromWebToAuthenticatedUsersOnly=1
AllowAccessFromWebToFollowingAuthenticatedUsers="statuser1 statuser2"

Somit dürfen auf die Statistik nur der "statuser1" und "statuser2" zugreifen. "Statuser3" bekommt eine Fehlermeldung beim versuch die Statistik zu öffnen.