Surveillance du système
Fichiers de journalisation
Toutes les activités et commandes mises en œuvre jusqu’à présent ont généré des informations que le système Debian a conservé pour partie et que l’on nomme des « logs ». Ils constituent la base informative pour tout administrateur et adoptent une spécificité propre à Linux, suivi par Debian bien sûr. Le répertoire par défaut de ces fichiers de journalisation est /var/log.
Avec Zeitgeist, service pour l’enregistrement des activités et des événements de l’utilisateur, on dépasse le domaine de la surveillance pour flirter avec celui de la sécurité. Ce service sera donc étudié dans le prochain chapitre.
Citons parmi les informations :
-
L’activité du système.
-
Les comportements anormaux (tentative de connexion en root).
-
Les messages émis par les services.
-
Etc.
1. Démon rsyslogd
Le paquet logiciel rsyslog, à l’aide du service (daemon) rsyslogd, s’occupe de l’ensemble des messages système et applicatifs sous Debian GNU/Linux. Ce service se paramètre par son fichier de configuration situé dans /etc/rsyslog.conf. À noter que certaines applications ou services gèrent par défaut leurs propres messages de logs, comme le service web Apache, le service de messagerie Postfix, etc.
Exemple de fichiers de logs présent dans /var/log sur Serinux :
alternatives.log btmp.1 faillog samba user.log
alternatives.log.1 daemon.log installer syslog user.log.1
apt daemon.log.1 kern.log syslog.1 user.log.2.gz
aptitude daemon.log.2.gz kern.log.1 syslog.2.gz
vboxadd-install.log
aptitude.1.gz debug kern.log.2.gz syslog.3.gz
vboxadd-install-x11.log
auth.log debug.1 lastlog syslog.4.gz
VboxGuestAdditions.log
auth.log.1 debug.2.gz messages...
Traitement des logs
1. Colorisation des fichiers de logs
Un bon administrateur Debian lit les fichiers de logs régulièrement, aussi toute aide est la bienvenue. Pour faciliter son travail, la colorisation des lignes rendra ces fichiers plus lisibles.
Installez le paquet logiciel correspondant :
root@serinux:~# aptitude install ccze
La commande fonctionne avec une redirection de l’entrée standard. De plus certains formats de données obligent à complexifier l’ensemble de la commande en y intégrant un « tube » et des options. Concrètement, voyons les deux ensembles de commandes les plus utilisés :
Visualisation d’un fichier de log pour y rechercher une information :
root@serinux:~# ccze -A < /var/log/syslog | less -R
Affichage d’un fichier de log avec visualisation en temps réel :
root@serinux:~# tail -f /var/log/syslog | ccze -A
Bien sûr, rien n’empêche l’administrateur de construire un raccourci de ces commandes...
2. Analyse des fichiers de logs
L’administrateur bénéficie aussi d’une aide pour l’analyse des fichiers logs par le paquet logiciel logwatch constitué d’un ensemble de scripts écrits en PERL. Classiquement, le paramétrage de la commande passe par un fichier de configuration (/usr/share/logwatch/default.conf/logwatch.conf).
La commande se lance sans arguments auquel cas tous les logs sont analysés, ou bien pour un terme bien précis comme par exemple sudo :
root@serinux:~# logwatch -service sudo
################### Logwatch 7.4.3 (12/07/16) ####################
Processing Initiated: Tue Mar 21 14:32:39 2017
Date Range Processed: yesterday
( 2017-Mar-20 )
Period is day.
Detail Level of Output: 0
Type of Output/Format: stdout / text
Logfiles for Host: serinux
##################################################################
--------------------- Sudo (secure-log) Begin ------------------------
adminux => root
--------------- ...
Exécution automatique
Sous Debian, la cohérence du système entraîne la réalisation périodique d’un grand nombre de tâches : vérification des systèmes de fichiers, sauvegarde des données utilisateur ou analyse des fichiers journaux du système.
En parallèle, d’autres tâches ponctuelles et répétitives interviennent qui ne doivent pas interférer avec le fonctionnement de l’entreprise, c’est pour cela qu’elles sont généralement effectuées de nuit afin garantir la continuité du service.
1. Cron ou la planification des tâches
Cron automatise l’exécution des tâches répétitives par l’intermédiaire d’un processus démon nommé crond, consignant les travaux à effectuer suivant la période d’exécution associée dans des fichiers spécifiques, appelés crontab, que l’on distingue en deux catégories : utilisateur et système.
a. Table Cron utilisateur
Le répertoire /var/spool/cron contient les fichiers crontab des utilisateurs, éditables par la commande crontab -e et exécutables avec les droits liés au propriétaire. La liste des crontab enregistrées se consulte par crontab -l. L’administrateur peut lister celles des autres utilisateurs par l’ajout de -u <nom de l’utilisateur>.
Syntaxe du fichier crontab
Le fichier crontab utilisateur se compose de deux types de lignes :
-
L’initialisation de variables d’environnement (facultatives) pour fixer l’environnement d’exécution.
-
La commande ou le script pour le travail périodique à lancer par le démon crond.
Syntaxe d’une commande Cron
Classiquement, sous Linux, on aura :
<période> <utilisateur> <commande>
Où la période est constituée de cinq données : minutes, heures, jours dans le mois, mois et jours de la semaine. Voici un exemple pour l’utilisateur debinux désireux de lancer un script Bash chaque jour de la semaine à 9 heures du matin :
00 09 * * * debinux /home/debinux/bin/monscript.sh
Attention : la syntaxe de la commande impose des chemins absolus et non relatifs. Même dans le cas d’une crontab utilisateur...
« Monitoring » du système
Le « monitoring » étend la notion de surveillance d’un système en lui ajoutant la mesure quantitative de certains paramètres.
Les outils sur Debian :
-
top (ou sa variante couleur à installer htop) : donne des renseignements globaux ou par processus sur la mémoire occupée, la part CPU utilisée, la commande, etc.
-
iftop (à installer) : visualise le trafic entre la machine et l’extérieur avec affichage des hôtes distants et des ports ; à coupler avec la commande netstat -antu.
-
ifstat : variante montrant des statistiques d’activités des interfaces réseau.
-
tload : montre un graphe de la charge moyenne du système (il faut patienter un peu).
D’autres commandes plus spécialement employées pour la maintenance du système seront vues dans un autre chapitre. Sur le système Burinux, le gestionnaire des tâches montre aussi diverses informations pour le suivi des ressources :
1. NetData : un exemple de monitoring en temps réel
Pour des serveurs nécessitant un suivi de performances en temps réel, l’outil de monitoring NetData, utilisable sur Debian, offre plusieurs fonctionnalités répondant à ce besoin. Le site du projet (https://github.com/firehol) montre en plus d’autres outils intéressants :