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
...