Logwatch : recevez un mail quotidien résumant l'utilisation de votre serveur - Betaphile.net : Amoureux des versions Beta...

Betaphile.net : Amoureux des versions Beta...

Linux, Développement, Administration, Logiciels Libres ...

Aller au contenu - Aller au menu - Aller à la recherche



Logwatch est un analyseur de logs systèmes pour Unix entièrement personnalisable. Il permet aux possesseurs de serveurs dédiés (à domicile, serveur web, en entreprise ...) de recevoir chaque jour un mail récapitulatif de l'utilisation du serveur obtenu en analysant les logs dans /var/log, comme par exemple :

  • les paquets installés, désinstallés, ou mis à jour
  • les mails envoyés par Exim ou autre
  • un récapitulatif des requêtes Apache (ou Apache2) : en volume, en nombre de pages, les requêtes ayant échouées
  • les logins/logouts des différents users via SSHD ou encore ProFTPD
  • l'utilisation des disques durs
  • Les attaques potentielles reçues par le serveur

Je vais donc détailler l'installation et la configuration de ce petit logiciel.

Installation

(note : toutes les commandes suivantes ont été réalisées sur la distribution Linux Debian 4.0 « Etch ». Cependant, la plupart des commandes et fichiers doivent être identiques ou quelque peu adaptés selon les paquets présents pour fonctionner sur une autre distribution)

Logwatch est un paquet disponible sur la plupart des distributions Linux, il suffit donc de l'installer via son gestionnaire de paquets préféré, apt par exemple : apt-get install logwatch , et l'installation est déjà terminée !

Configuration

Dès l'installation, logwatch va créer un répertoire /etc/logwatch/ et un autre /usr/share/logwatch/, et nous allons pour l'instant nous occuper de ce dernier. On va travailler plus précisément dans le sous-répertoire default.conf/. Commençons par le plus gros du travail, c'est à dire le fichier /usr/share/logwatch/default.conf/logwatch.conf.

Les options par défaut vont nous convenir pour le moment, à part le champ

MailTo = foo@bar.com

que l'on va changer en renseignant notre adresse email bien sûr. Attention : si votre serveur dédié est hébergé à domicile par exemple, il se peut que l'email soit considéré comme du spam par votre messagerie, car c'est un mail envoyé automatiquement, avec une adresse mail forgée par le champ

MailFrom = logwatch@foobar.com

(que l'on peut changer également). Les gens utilisant un serveur dédié chez un hébergeur ne devrait pas avoir ce soucis.

On va déjà vérifier que le programme fonctionne sans encombre en utilisant

logwatch --range=Today --print

qui va afficher sur la sortie standard (stdout) le logwatch de la journée. Si cette sortie a fonctionné, vous pouvez tester maintenant sans le --print afin de tester l'envoi d'email : logwatch --range=Today (on peut aussi faire --range=Yesterday ;-)). Si vous avez bien reçu le mail, c'est cool. Sinon, il va falloir vérifier le champ

mailer

et adapter selon la machine. Pour ma part, j'utilise sendmail (après m'être bagarré un bout de temps avec les autres, c'est celui ci que j'ai retenu), donc la configuration donne :

mailer = "sendmail -t"

Si tout s'est bien passé jusqu'içi, on va pouvoir affiner un peu les réglages, et entre autre choisir les services que l'on désire analyser, ainsi que le niveau de détails. Pour cela, toujours dans le fichier : /usr/share/logwatch/default.conf/logwatch.conf, on va tout d'abord régler le champ :

Detail = High

On peut utiliser les valeurs Low, Medium ou encore un chiffre entre 1 et 10, du moins détaillé au plus détaillé.

Pour ce qui est du choix des services, le plus simple est de commencer par les sélectionner tous :

Service = All

, de réutiliser la commande logwatch, et de noter les services que vous ne désirez pas voir apparaitre dans votre logwatch, puis de les soustraire de cette manière :

Service = "-zz-network"
Service = "-zz-eximstats"

par exemple.

Voici maintenant un récapitulatif de la configuration que j'utilise, dont j'ai enlevé les commentaires par défaut, et rajouté les miens à la place :

########################################
# Fichier de configuration de Logwatch #
########################################

# Les logs de cette machine sont stockés sur /var/log
LogDir = /var/log

# Le répertoire temporaire de logwatch
TmpDir = /var/cache/logwatch

# La liste des adresses emails à qui le logwatch sera envoyé, 
# séparées par des espaces
MailTo = moi@chezmoi.com mespotes@chezeux.com

# L'adresse email qui s'affichera lorsque je recevrais le mail
# Foireux, pour une raison inconnue, donc écrasé par 
# /etc/logwatch/conf/logwatch.conf
MailFrom = "logwatch\@cyber116.fr"

# La sortie se fait par email, et non sur la sortie standard
Print = No

# Le mail que je reçois le jour N concerne le jour N-1
Range = yesterday

# Les détails au maximum
Detail = High

# Choix des services
Service = All

Service = "-zz-network"
Service = "-zz-sys"  
Service = "-eximstats"
Service = "-cron"
Service = "-iptables"

# Utilisation de sendmail pour envoyer les emails
mailer = "sendmail -t"

A noter que les fichiers disponibles dans /etc/logwatch/conf vont venir écraser la configuration disponible dans /usr/share/logwatch/default.conf/, je m'en sers juste pour remettre le champ MailFrom comme il faut, car aussi bizarre que cela puisse paraître, il n'est pas pris en compte dans la configuration de départ.

Et voici un exemple de ce que ça donne dans la vie de tous les jours, un logwatch pris au hasard dans mes archives :


 ################### Logwatch 7.3.6 (05/19/07) ####################
       Processing Initiated: Sun Feb 17 06:25:22 2008
       Date Range Processed: yesterday
                             ( 2008-Feb-16 )
                             Period is day.
     Detail Level of Output: 5
             Type of Output: unformatted
          Logfiles for Host: kiwi
 ##################################################################

 --------------------- dpkg status changes Begin ------------------------

 Upgraded:
   evolution-data-server-common 1.12.2-1 => 1.12.3-1
   libedataserver1.2-9 1.12.2-1+b1 => 1.12.3-1
   libegroupwise1.2-13 1.12.2-1+b1 => 1.12.3-1
   libgnome-pilot2 2.0.15-2+b1 => 2.0.15-2.1
   libjack0 0.109.0-1 => 0.109.2-1
   libjack0.100.0-0 0.109.0-1 => 0.109.2-1
   libpq-dev 8.3~rc2-1+b1 => 8.3.0-1
   libpq5 8.3~rc2-1+b1 => 8.3.0-1
   libpulse0 0.9.8-2 => 0.9.9-1
   libsdl1.2-dev 1.2.13-1 => 1.2.13-2
   libsdl1.2debian 1.2.13-1 => 1.2.13-2
   libsdl1.2debian-all 1.2.13-1 => 1.2.13-2
   mktemp 1.5-5 => 1.5-7
   modconf 0.3.5 => 0.3.6

 ---------------------- dpkg status changes End -------------------------


 --------------------- EXIM Begin ------------------------


 --- Queue Runners ---
  Start queue run: 120 Time(s)
  End queue run: 120 Time(s)

 ---------------------- EXIM End -------------------------


 --------------------- httpd Begin ------------------------

 4902.75 MB transferred in 1722 responses  (1xx 0, 2xx 1234, 
3xx 3, 4xx 485, 5xx 0)
    350 Images (0.17 MB),
      4 Documents (0.03 MB),
      7 Movies files (4900.66 MB),
   1177 Content pages (1.78 MB),
      3 Redirects (0.00 MB),
    181 Other (0.12 MB)

 Attempts to use known hacks by 1 hosts were logged 1 time(s) from:
   127.0.0.1: 1 Time(s)


 A total of 1 sites probed the server
   127.0.0.1

 A total of 1 possible successful probes were detected (the following URLs
 contain strings that match one or more of a listing of strings that
 indicate a possible exploit):

   null HTTP Response 200

 Requests with error response codes
   400 Bad Request
      /cgi-bin/firmwarecfg: 3 Time(s)
   401 Unauthorized
      /: 3 Time(s)
      /index.php?p=obj-rss,/: 1 Time(s)
   404 Not Found
      /favicon.ico: 311 Time(s)
      /films: 1 Time(s)
      /plugins/clickheat/libs/js/clickheat.js: 8 Time(s)
      /robots.txt: 2 Time(s)

 A total of 1 ROBOTS were logged

 ---------------------- httpd End -------------------------


 --------------------- pam_unix Begin ------------------------

 cron:
   Sessions Opened:
      root: 769 Time(s)
      munin: 289 Time(s)
      netmrg: 288 Time(s)
      tab: 144 Time(s)
      smmsp: 72 Time(s)

 proftpd:
   Unknown Entries:
      session closed for user arnaud: 26 Time(s)
      session opened for user arnaud by (uid=0): 24 Time(s)
      session closed for user blacklagoon: 22 Time(s)
      session opened for user blacklagoon by (uid=0): 21 Time(s)
      session closed for user guilou: 5 Time(s)
      session opened for user guilou by (uid=0): 5 Time(s)
      authentication failure; logname= uid=0 euid=0 tty= 
ruser=ftp rhost=lists.unitedprint.com  user=ftp: 2 Time(s)
      authentication failure; logname= uid=0 euid=0 tty= 
ruser=mysql rhost=lists.unitedprint.com  user=mysql: 2 Time(s)

 ssh:
   Unknown Entries:
      session closed for user arnaud: 2 Time(s)
      session closed for user kisscoolman: 2 Time(s)
      session opened for user arnaud by (uid=0): 2 Time(s)
      session closed for user guilou: 1 Time(s)
      session opened for user guilou by (uid=0): 1 Time(s)
      session opened for user kisscoolman by (uid=0): 1 Time(s)

 su:
   Sessions Opened:
      root -> root: 1 Time(s)


 ---------------------- pam_unix End -------------------------


 --------------------- proftpd-messages Begin ------------------------


 **Unmatched Entries**
 pam_unix(proftpd:session): session opened for user arnaud by (uid=0)
 pam_unix(proftpd:session): session closed for user arnaud
 pam_unix(proftpd:session): session closed for user arnaud
 pam_unix(proftpd:session): session closed for user arnaud
 pam_unix(proftpd:session): session opened for user arnaud by (uid=0)
 pam_unix(proftpd:session): session opened for user arnaud by (uid=0)
 pam_unix(proftpd:auth): authentication failure; 
logname= uid=0 euid=0 tty= ruser=ftp rhost=lists.unitedprint.com  user=ftp
 pam_unix(proftpd:auth): authentication failure; 
logname= uid=0 euid=0 tty= ruser=ftp rhost=lists.unitedprint.com  user=ftp
 pam_unix(proftpd:auth): authentication failure; 
logname= uid=0 euid=0 tty= ruser=mysql rhost=lists.unitedprint.com  user=mysql
 pam_unix(proftpd:auth): authentication failure; 
logname= uid=0 euid=0 tty= ruser=mysql rhost=lists.unitedprint.com  user=mysql
 pam_unix(proftpd:session): session closed for user arnaud
 pam_unix(proftpd:session): session opened for user arnaud by (uid=0)
  pam_unix(proftpd:session): session opened for user arnaud by (uid=0)
 pam_unix(proftpd:session): session closed for user arnaud
 pam_unix(proftpd:session): session opened for user arnaud by (uid=0)
 pam_unix(proftpd:session): session opened for user arnaud by (uid=0)
 pam_unix(proftpd:session): session opened for user guilou by (uid=0)
 pam_unix(proftpd:session): session opened for user guilou by (uid=0)
 pam_unix(proftpd:session): session closed for user arnaud
 pam_unix(proftpd:session): session opened for user arnaud by (uid=0)
 pam_unix(proftpd:session): session closed for user guilou
 pam_unix(proftpd:session): session closed for user arnaud
 pam_unix(proftpd:session): session opened for user arnaud by (uid=0)
 pam_unix(proftpd:session): session closed for user arnaud
 pam_unix(proftpd:session): session opened for user arnaud by (uid=0)
 pam_unix(proftpd:session): session closed for user arnaud
 pam_unix(proftpd:session): session opened for user blacklagoon by (uid=0)
 pam_unix(proftpd:session): session closed for user blacklagoon
 pam_unix(proftpd:session): session opened for user blacklagoon by (uid=0)
 pam_unix(proftpd:session): session closed for user blacklagoon
 pam_unix(proftpd:session): session opened for user blacklagoon by (uid=0)
 pam_unix(proftpd:session): session closed for user blacklagoon
 pam_unix(proftpd:session): session opened for user blacklagoon by (uid=0)
 pam_unix(proftpd:session): session closed for user blacklagoon
 pam_unix(proftpd:session): session closed for user blacklagoon
 pam_unix(proftpd:session): session opened for user blacklagoon by (uid=0)

 ---------------------- proftpd-messages End -------------------------


 --------------------- SSHD Begin ------------------------


 Users logging in through sshd:
   arnaud:
      83.153.75.xxx (dyn-83-153-75-xxx.ppp.tiscali.fr): 2 times
   guilou:
      192.168.0.1: 1 time
   kisscoolman:
      62.147.159.XXX (xxx-xxx-48f-62-147-159-xxx.adsl.proxad.net): 1 time

 **Unmatched Entries**
 reverse mapping checking getaddrinfo for 86-121-210-217.rdsnet.ro 
[86.121.210.217] failed - POSSIBLE BREAK-IN ATTEMPT! : 1004 time(s)

 ---------------------- SSHD End -------------------------


 --------------------- Disk Space Begin ------------------------

 Filesystem            Size  Used Avail Use% Mounted on
 /dev/hda1             4.9G  3.3G  1.4G  71% /
 /dev/hda2              67G   49G   15G  77% /home
 /dev/hdb1             147G   84G   57G  60% /pub


 ---------------------- Disk Space End -------------------------


 ###################### Logwatch End #########################

N'hésitez pas à poser des questions si des points restent encore flous, et je complêterais l'article si besoin est.

Trackbacks

Aucun trackback pour le moment.

Les trackbacks pour ce billet sont fermés.

Commentaires

Le mardi 29 avril 2008 à 21:13, Dimitri a écrit :

Bonjour,

Je suis un administrateur du dimanche d'un petit serveur dédié. Je dois avouer que vos tutoriels m'aident beaucoup. Ils sont limpides et complets.

Merci beaucoup et continuez comme ça, vous êtes dans mes favoris. :)

Dimitri

Le mardi 29 avril 2008 à 21:32, Dimitri a écrit :

Ah petit ajout peut-être, ça coule sûrement de source pour la majorité, mais il faut installer la tâche CRON pour effectivement recevoir le mail tous les jours non ?

Le mardi 29 avril 2008 à 21:36, KissCoolMan a répondu :

merci pour ton commentaire Dimitri !

Pas besoin d'installer la tâche cron, ca se fait tout seul avec le .deb ;-) !

Enfin, sinon, il suffit de créer un fichier /etc/cron.daily/logwatch et de mettre dedans la commande de logwatch.

Le mardi 29 avril 2008 à 22:38, Dimitri a écrit :

J'avais hésité à poster, peur de dire une bêtise (le point d'interrogation en témoigne ;)) et j'aurais dû suivre mon instinct. :)

Merci pour la précision !

Le mercredi 13 août 2008 à 23:47, Florent a écrit :

Bonjour,

tout d'abord merci pour ce tuto, juste pour signaler que sur mon serveur sous ubuntu, logwatch ne semble pas prendre en compte le fichier de conf situé dans /usr/share/logwatch/default.conf/logwatch.conf.

j'ai du le copier dans /etc/logwatch pour que ca marche. Tu semble avoir le même problème car ton exemple de mail précise :

Detail Level of Output: 5

alors que tu as demandé le niveau High dans ton fichier de conf...

Le mardi 7 octobre 2008 à 10:21, F4jr a écrit :

Oui pareil pour moi, le fichier de conf n'est pas pris en compte.

Ajouter un commentaire