Surveillance système sous FreeBSD
FreeBSD accounting : Surveillance système sous FreeBSD
Pour effectuer une surveillance accrue du système et déterminer d'eventuelles tentatives de piratage ou tout simplement le suivi de l'utilisation des ressources d'une machine sous FreeBSD, il existe la commande accton (accounting). Cette commande permet d'activer la comptabilité des utilisations et exécution sur la machine surveillée.
Activation du service
accton active/desactive le processus qui analyse l'utilisation des ressources de la machine qui écrit le résultat dans un fichier.
Il faut tout d'abord créer le fichier qui va servir au stockage des informations accounting :
touch /var/account/acct
Puis démarrer le service :
accton /var/account/acct
Vous pourrez constater que le fichier commence à se remplir.
Si l'on désire que le service se lance au démarrage, il faudra ensuite ajouter la ligne suivante dans /etc/rc.conf :
accounting_enable="YES"
Consultation des activités
Les informations collectées par acctn peuvent être consultées de deux façons : sa et lastcomm.
sa (system accounting) est un processus bien connu du monde UNIX sous l'autre dénomination sar. Il permet de consulter l'utilisation des ressources machines par les différents processus.
lastcomm (last command) permet de consulter les dernière commandes passés sur la machine.
sa
Une fois accton activé, on peut exécuter la commande sa :
# sa
1041 294.63re 2.27cp 1avio 553k
5 1.46re 1.44cp 0avio 56k bzip2
3 0.78re 0.77cp 253avio 101k clamscan
70 0.06re 0.02cp 0avio 2185k psql
13 0.59re 0.01cp 2avio 914k ***other
70 0.02re 0.01cp 2avio 52727k postgres*
117 9.04re 0.01cp 0avio 9885k sh
72 3.00re 0.00cp 0avio 12709k sh*
9 0.01re 0.00cp 0avio 1493k lastcomm
3 1.60re 0.00cp 1avio 944k ftpd
6 10.04re 0.00cp 0avio 2862k smtpd
12 20.00re 0.00cp 0avio 4928k flush
3 0.67re 0.00cp 0avio 1664k man
3 0.30re 0.00cp 0avio 1376k ntpdate
2 198.00re 0.00cp 0avio 1744k pickup
3 5.98re 0.00cp 9avio 3328k cleanup
3 0.00re 0.00cp 0avio 165461k file
3 5.08re 0.00cp 0avio 2304k proxymap
3 5.98re 0.00cp 0avio 2069k smtp
3 6.04re 0.00cp 0avio 2453k trivial-rewrite
3 1.97re 0.00cp 0avio 2176k newsyslog
12 0.00re 0.00cp 0avio 8704k sa
3 10.02re 0.00cp 0avio 6656k anvil
3 5.00re 0.00cp 5avio 9408k local
40 0.00re 0.00cp 0avio 101600k atrun
9 0.02re 0.00cp 0avio 35100k awk
79 5.34re 0.00cp 0avio 312000k cron*
3 0.00re 0.00cp 1avio 0k csh*
112 0.02re 0.00cp 0avio 269400k cut
14 0.00re 0.00cp 0avio 28000k date
19 0.00re 0.00cp 0avio 42400k dd
4 0.05re 0.00cp 0avio 6800k df
22 0.00re 0.00cp 0avio 112800k ftpd*
4 0.00re 0.00cp 0avio 2700k head
19 0.00re 0.00cp 0avio 48000k jot
3 0.00re 0.00cp 0avio 5200k ls
2 0.66re 0.00cp 0avio 6000k more
133 0.00re 0.00cp 0avio 346400k mv
56 2.88re 0.00cp 0avio 178100k ping
35 0.00re 0.00cp 0avio 86200k rm
57 0.01re 0.00cp 0avio 134000k tail
3 0.00re 0.00cp 0avio 7200k who
3 0.00re 0.00cp 0avio 8600k zcat
Pour chaque processus (dernière colonne) on dispose du temps d'utilisation réel (re, en minutes), de la charge moyenne de la cpu (cp), le nombre moyen d'entrée-sortie par exécution (avio), l'utilisation moyenne de la mémoire par le processus (k) et le nombre d'utilisation (première colonne).
Le manuel de sa vous donnera des options concernant l'affichage des résultats.
lastcomm
Une fois accton activé, on peut exécuter la commande lastcomm :
# lastcomm
cron -F root __ 0.00 secs Sat Aug 25 15:35
sh - root __ 0.00 secs Sat Aug 25 15:35
atrun - root __ 0.00 secs Sat Aug 25 15:35
cron -F root __ 0.00 secs Sat Aug 25 15:33
sh - operator __ 0.00 secs Sat Aug 25 15:33
sh - operator __ 0.02 secs Sat Aug 25 15:33
dd - operator __ 0.00 secs Sat Aug 25 15:33
mv - operator __ 0.00 secs Sat Aug 25 15:33
mv - operator __ 0.00 secs Sat Aug 25 15:33
mv - operator __ 0.00 secs Sat Aug 25 15:33
mv - operator __ 0.00 secs Sat Aug 25 15:33
mv - operator __ 0.00 secs Sat Aug 25 15:33
mv - operator __ 0.00 secs Sat Aug 25 15:33
mv - operator __ 0.00 secs Sat Aug 25 15:33
rm - operator __ 0.00 secs Sat Aug 25 15:33
jot - operator __ 0.00 secs Sat Aug 25 15:33
sa - root ttyp0 0.02 secs Sat Aug 25 15:31
cron -F root __ 0.00 secs Sat Aug 25 15:30
sh - root __ 0.00 secs Sat Aug 25 15:30
sh - root __ 0.00 secs Sat Aug 25 15:30
...
Pour chaque commande exécutée (première colonne), nous avons les options (deuxième colonne), l'utilisateur à l'origine de la commande (troisième colonne), la console utilisée pour exécuter la commande (quatrième colonne), la durée de l'exécution de la commande (cinquième colonne, en secondes) et la date d'exécution. Le résultat est trié dans lordre descendant de la date, l'exécution la plus récente se trouve en première ligne.
En passant une option à lastcomm, nous pouvons filtrer la commande, l'utilisateur ou la console qui nous intéresse (équivalent à grep) :
# lastcomm cron
cron -F root __ 0.00 secs Sat Aug 25 16:05
cron -F root __ 0.00 secs Sat Aug 25 16:00
cron -F root __ 0.00 secs Sat Aug 25 16:00
cron -F root __ 0.00 secs Sat Aug 25 16:00
cron -F root __ 0.00 secs Sat Aug 25 16:00
cron -F root __ 0.00 secs Sat Aug 25 16:00
...
ou encore :
# lastcomm operator
mv - operator __ 0.00 secs Sat Aug 25 12:33
mv - operator __ 0.00 secs Sat Aug 25 12:33
mv - operator __ 0.00 secs Sat Aug 25 12:33
mv - operator __ 0.00 secs Sat Aug 25 12:33
rm - operator __ 0.00 secs Sat Aug 25 12:33
jot - operator __ 0.00 secs Sat Aug 25 12:33
sh - operator __ 0.00 secs Sat Aug 25 12:22
sh - operator __ 0.02 secs Sat Aug 25 12:22
dd - operator __ 0.00 secs Sat Aug 25 12:22
mv - operator __ 0.00 secs Sat Aug 25 12:22
mv - operator __ 0.00 secs Sat Aug 25 12:22
mv - operator __ 0.00 secs Sat Aug 25 12:22
mv - operator __ 0.00 secs Sat Aug 25 12:22
mv - operator __ 0.00 secs Sat Aug 25 12:22
mv - operator __ 0.00 secs Sat Aug 25 12:22
mv - operator __ 0.00 secs Sat Aug 25 12:22
rm - operator __ 0.00 secs Sat Aug 25 12:22
jot - operator __ 0.00 secs Sat Aug 25 12:22
...