Script de détection de modification d'un fichier

Description

Un petit script d'automatisation de la surveillance d'une modification éventuelle d'un fichier et prévient l'administrateur grâce à un mail. Ce script peut-être utilisé pour surveiller si une personne mal intentionnée modifie un fichier de configuration.

Le code

Dans l'exemple ci-dessous, nous allons surveiller la date de dernière modification du fichier /etc/resolv.conf car nous voulons être informer si une personne non autorisée modifie ce fichier en vue d'un acte mal intentionné.

#! /bin/bash
# modif-fichier.sh
# montuy337513 - CHG-WEB
# Version 1.00
 
# Configuration
 
#Nom du fichier à surveiller
NOM_FICHIER="/etc/resolv.conf"
# Date de la dernière modification du fichier ci-dessus
DERNIERE_MODIF=$(date -r ${NOM_FICHIER} '+%d/%m/%Y %H:%M')
# Adresse mail de l'administrateur ou de la personne à prévenir
MAIL_ADMIN="miel@chg-web.com"
# Date a laquelle le fichier à bien été modifié par vos soins
DATE_MODIF="14/12/2014 11:50"
# Test si les deux dates sont identiques
if [ "${NOM_FICHIER}" != "${DATE_MODIF}" ]; then
   # Si différente, envoi du mail d'alerte
   CORPS_MESSAGE="Alerte, le fichier ${NOM_FICHIER} a été modifié le ${DERNIERE_MODIF}";
   echo "$CORPS_MESSAGE" | mail -s "Alerte surveillance modification de fichier" "${MAIL_ADMIN}";
fi

Les commentaires sont sensés être suffisamment fournis pour que vous puissiez comprendre le code ci-dessus.

Utilisation du code

Pour ce faire, vous copiez/collez le code ci-dessus dans un fichier que vous appellerez modif-fichier.sh (vous pouvez créer ce fichier dans le répertoire root, dans l'exemple ci-après, ce sera ce cas de figure qui sera utilisé).

Un fois le fichier créé, on s'occupe de lui attribuer les droits d'exécution, pour l'utilisateur root

chmod 700 /root/modif-fichier.sh

Ensuite, on lance l'exécution du fichier pour voir si il n'y a pas d'erreur.

/root/modif-fichier.sh

Et pour terminer, on programme une tâche cron avec la commande

crontab -e

Nous rajoutons la ligne suivante pour lancer le script de façon automatique. Dans l'exemple ci-dessous, on fait le test toute les heures. Vous pouvez consulter la fiche sur CRON pour personnaliser la commande.

1/* * * * * /root/modif-fichier.sh

Pour aller plus loin

C'est un exemple simple, mais vous pouvez très bien le modifier pour rendre le script plus autonome avec par exemple les fonctionnalités suivantes :

  • Au premier lancement, la date du fichier en question est stocké dans un fichier texte, et ensuite à chaque lancement, le script compare la date présent dans le fichier texte à la date de dernière modification actuelle.
  • Un seul et même script qui vérifie les dernières modifications de plusieurs fichiers, cette liste étant stockée dans un fichier texte.
  • L'envoi d'un SMS d'alerte en complément du mail
  • etc…

Auteurs et sources