Outils pour utilisateurs

Outils du site


tuto:linux:logwatch

Logwatch

Description

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

Installation

Je vais donc détaillé 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és 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.

Exemple de rapport

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 #########################
tuto/linux/logwatch.txt · Dernière modification : 2009/03/15 12:17 de root