Quelques éléments au sujet des analyseurs de log.
Le syslog (log système) étant rapidement illisible sur un serveur un outil comme logwatch peut s’avérer très utile.
Par défaut il va se lancer tous les jours et envoyer le résultat de l’analyse des logs de la veille par mail à l’administrateur de la machine.
On peut également le lancer à la main et lui demander de changer la période d’analyse : le jour même, la semaine…
Le résultat est clair et concis.
Exemple pour un serveur : http, messagerie, ftp, ssh
################### Logwatch 7.3.6+cvs20080702-debian (07/02/08) ####################
Processing Initiated: Sun May 9 06:25:02 2010
Date Range Processed: yesterday
( 2010-May-08 )
Period is day.
Detail Level of Output: 10
Type of Output/Format: mail / text
Logfiles for Host: host
##################################################################
--------------------- Cron Begin ------------------------
Commands Run:
User root:
cd / && run-parts --report /etc/cron.hourly: 17 Time(s)
[ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm: 35 Time(s)
/usr/local/bin/unoutilamoi: 1 Time(s)
/usr/local/bin/unautreoutilamoi >> /dev/null: 17 Time(s)
---------------------- Cron End -------------------------
--------------------- Dovecot Begin ------------------------
Dovecot restarted 2 time(s).
[Dovecot IMAP and POP3] Connections:
====================================
Host | POP3 | IMAP | Total
-------------------------------------- | --------- |--------- | ---------
127.0.0.1 | 0 | 44 | 44
ipentrantes | 0 | 38 | 38
-------------------------------------------------------------------------
0 | 82 | 82
Dovecot IMAP and POP3 Successful Logins:
User user1@domain: (5 IMAP)
From 127.0.0.1: 5 Time(s)
User user2@domain: (7 IMAP)
From add_ip: 7 Time(s)
User user3@domain: (10 IMAP)
From add_ip: 10 Time(s)
User user4@domain: (45 IMAP)
From add_ipp: 6 Time(s)
From 127.0.0.1: 39 Time(s)
Total: 45 Time(s)
User user5@domain: (12 IMAP)
From add_ip: 12 Time(s)
User user6@domain: (3 IMAP)
From add_ip: 3 Time(s)
Total: 82 successful logins
Dovecot disconnects:
Logged out: 44 Time(s)
in IDLE: 34 Time(s)
no reason: 1 Time(s)
**Unmatched Entries**
dovecot: IMAP(user6@domain): Connection closed: 2 Time(s)
---------------------- Dovecot End -------------------------
--------------------- dpkg status changes Begin ------------------------
Installed:
fetchmail 6.3.9~rc2-4+lenny2
---------------------- dpkg status changes End -------------------------
--------------------- httpd Begin ------------------------
0.25 MB transferred in 94 responses (1xx 0, 2xx 70, 3xx 16, 4xx 8, 5xx 0)
15 Images (0.17 MB),
74 Content pages (0.08 MB),
5 Redirects (0.00 MB),
Requests with error response codes
404 Not Found
/favicon.ico: 8 Time(s)
---------------------- httpd End -------------------------
--------------------- Kernel Begin ------------------------
1 Time(s): imklog 3.18.6, log source = /proc/kmsg started.
---------------------- Kernel End -------------------------
--------------------- pam_unix Begin ------------------------
cron:
Sessions Opened:
root: 98 Time(s)
sshd:
Sessions Opened:
user: 3 Time(s)
su:
Sessions Opened:
root -> root: 4 Time(s)
root -> nobody: 3 Time(s)
---------------------- pam_unix End -------------------------
--------------------- Postfix Begin ------------------------
****** Summary *************************************************************************************
50 Reject warnings (warn_if_reject)
259.015K Bytes accepted 265,231
7.356K Bytes sent via SMTP 7,533
255.928K Bytes delivered 262,070
193.757K Bytes forwarded 198,407
======== ================================================
45 Accepted 97.83%
1 Rejected 2.17%
-------- ------------------------------------------------
46 Total 100.00%
======== ================================================
1 5xx Reject unknown user 100.00%
-------- ------------------------------------------------
1 Total 5xx Rejects 100.00%
======== ================================================
50 Warn Reject HELO/EHLO 100.00%
-------- ------------------------------------------------
50 Total Warn Rejects 100.00%
======== ================================================
38 Connections made
38 Disconnections
51 Removed from queue
40 Delivered
11 Sent via SMTP
2 Forwarded
3 Resent
4 Deliverable (address verification)
7 SASL authenticated messages
****** Detail **************************************************************************************
1 5xx Reject unknown user -----------------------------------------------------------------
1 Virtual mailbox table
1 domain
1 user
1 add_ip host
50 Warn Reject HELO/EHLO -------------------------------------------------------------------
25 Host not found
25 127.0.0.1 localhost
25 host
25 Need fully-qualified hostname
25 127.0.0.1 localhost
25 host
40 Delivered -------------------------------------------------------------------------------
40 domain
11 Sent via SMTP ---------------------------------------------------------------------------
11 free.fr
2 Forwarded -------------------------------------------------------------------------------
2 host
4 Deliverable (address verification) ------------------------------------------------------
3 delivers to maildir
1 user1@domain
1 user2@domain
1 user3r@domain
1 250 2.1.5 Ok
1 bounce-debian-user-french=user2=domain@lists.debian.org
7 SASL authenticated messages -------------------------------------------------------------
7 user1@domain
7 CRAM-MD5
7 ip host
======================================================================================================================
Delays Percentiles 0% 25% 50% 75% 90% 95% 98% 100%
----------------------------------------------------------------------------------------------------------------------
1: Pre qmgr 0.000 0.030 0.040 0.050 0.298 3.000 3.088 6.100
2: In qmgr 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.010
3: Connection setup 0.000 0.000 0.000 0.000 0.270 0.290 0.290 3.000
4: Xmit time 0.000 0.000 0.000 0.010 0.260 0.310 0.310 2.400
======================================================================================================================
---------------------- Postfix End -------------------------
--------------------- Connections (secure-log) Begin ------------------------
New Users:
fetchmail (115)
Changed users password:
fetchmail changed password: 1 Time(s)
Changed password expiry for users:
fetchmail : 1 Time(s)
---------------------- Connections (secure-log) End -------------------------
--------------------- SSHD Begin ------------------------
Users logging in through sshd:
user:
add_ip: 3 times
---------------------- SSHD End -------------------------
--------------------- vsftpd-messages Begin ------------------------
Failed FTP Logins:
(61.75.175.137): backup - 3 Time(s)
(69.80.227.51): www-data - 2 Time(s)
---------------------- vsftpd-messages End -------------------------
--------------------- Disk Space Begin ------------------------
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 327M 122M 189M 40% /
/dev/sda9 216G 80G 126G 39% /home
/dev/sda8 373M 11M 343M 3% /tmp
/dev/sda5 4.6G 833M 3.6G 19% /usr
/dev/sda6 2.8G 803M 1.9G 30% /var
---------------------- Disk Space End -------------------------
###################### Logwatch End #########################
Voilà, c’est quand même lisible non ?
A noter que lorsque vous avez des tentatives de connexions sur ssh ça vous liste tout ça. Bon sur les attaques en force brute ça fait quelques lignes.
Les logs de mail : très touffu et illisibles (avec postfix/dovecot c’est mail.log).
L’outil pflogsumm débrouille tout ça relativement bien. Moi je le lance avec cron.
Petit exemple d’analyse sur la semaine précédente (/var/log/mail.log.1->cf. le fonctionnement de logrotate):
Grand Totals
------------
messages
166 received
171 delivered
14 forwarded
0 deferred
0 bounced
7 rejected (3%)
60 reject warnings
0 held
0 discarded (0%)
21169k bytes received
21177k bytes delivered
18 senders
12 sending hosts/domains
14 recipients
4 recipient hosts/domains
Per-Day Traffic Summary
date received delivered deferred bounced rejected
--------------------------------------------------------------------
May 2 2010 17 17 0 0 2
May 3 2010 19 18 0 0 3
May 4 2010 20 20
May 5 2010 33 34 0 0 7
May 6 2010 20 19
May 7 2010 9 9 0 0 2
May 8 2010 45 51 0 0 51
May 9 2010 3 3 0 0 2
Per-Hour Traffic Daily Average
time received delivered deferred bounced rejected
--------------------------------------------------------------------
0000-0100 1 1 0 0 0
0100-0200 0 0 0 0 0
0200-0300 0 0 0 0 0
0300-0400 0 0 0 0 0
0400-0500 0 0 0 0 0
0500-0600 0 0 0 0 0
0600-0700 4 4 0 0 0
0700-0800 0 0 0 0 0
0800-0900 0 0 0 0 1
0900-1000 1 1 0 0 0
1000-1100 1 1 0 0 0
1100-1200 0 0 0 0 0
1200-1300 1 1 0 0 0
1300-1400 0 0 0 0 0
1400-1500 2 2 0 0 0
1500-1600 0 0 0 0 0
1600-1700 1 1 0 0 0
1700-1800 2 3 0 0 2
1800-1900 3 4 0 0 5
1900-2000 1 1 0 0 0
2000-2100 0 0 0 0 1
2100-2200 2 2 0 0 0
2200-2300 1 1 0 0 0
2300-2400 0 0 0 0 0
Host/Domain Summary: Message Delivery
sent cnt bytes defers avg dly max dly host/domain
-------- ------- ------- ------- ------- -----------
ici la liste des domaines à qui on a envoyé des mails
Host/Domain Summary: Messages Received
msg cnt bytes host/domain
-------- ------- -----------
ici la liste des domaines qui nous ont envoyé des mails
Senders by message count
------------------------
Liste des "envoyeurs" classés par nombre de message
Recipients by message count
---------------------------
Liste des destinaitaies par nombre de message
Senders by message size
-----------------------
classement par taille
Recipients by message size
--------------------------
idem
message deferral detail: none
message bounce detail (by relay): none
message reject detail
---------------------
détails des messages rejetés - dépend de la config de postfix
message reject warning detail
-----------------------------
détails des alertes - dépend aussi de la config de postfix
message hold detail: none
message discard detail: none
smtp delivery failures: none
Warnings
--------
toutes les alertes
Fatal Errors: none
Panics: none
Master daemon messages
----------------------
1 reload configuration /etc/postfix
Voilà, après on peut générer des graphes de l’activité en utilisant mailgraph, script cgi couplé à une base de donnée round-robin.
Pour continuer sur les graphes : les outils webaliser et awstats sont très pratiques pour suivre le trafic sur une serveur http.
Une dernière petite chose : pour ceux qui veulent regarder leurs logs depuis une interface http, il est possible de générer une page web avec coloration syntaxique à partir d’un fichier de log. Je vous laisse réfléchir à comment faire pour récupérer le log et sortir un fichier html mis au bon endroit pour le serveur apache (ou autre) sans faire de trou de sécu.
Le résultat ressemble à ça :