Exécution événementielle de script avec inotify et incron
Disponible dès la version 2.6.12 du noyau Linux, le mécanisme inotify permet d’être notifié des actions sur le système de fichiers et d’exécuter, au besoin, une action automatique. Vous pouvez ainsi surveiller, entre autres, l’accès au fichier, la modification et la suppression de fichiers. Sa mise en oeuvre se fait à l’aide du paquet incron, disponible dans les principales distributions Linux. Ce mécanisme permet de renforcer la sécurité de vos systèmes et applications en étant informé d’actions suspectes.
Mise à jour du chroot_list de Vsftpd en fonction des modifications dans /etc/passwd
Je me suis rendu compte hier que j’avais permis à partir d’un compte Linux présent sur l’un de mes serveurs de se connecter via Vsftpd en mode non chrooté. Mon erreur tient au fait que j’ai oublié d’actualiser le fichier /etc/vsftpd/chroot_list en y ajoutant le compte utilisateur que j’avais créé.
Afin d’automatiser la mise à jour de ce fichier, j’ai conçu un script Bash /root/chrootvsftpd reprenant les utilisateurs présents dans le fichier /etc/passwd, écrasant le contenu du fichier /etc/vsftpd/chroot_list :
#!/bin/bash # #Initialisation des variables # REP=/etc/vsftpd FIC=/etc/passwd # #Traitement des chroot_list,ftpusers,user_list # cat $FIC|grep -P ":x:[0-9]{4}:"|cut -d ':' -f 1 > $REP/chroot_list cat $FIC|grep -P ":x:[0-9]{1,3}:"|cut -d ':' -f 1 > $REP/ftpusers cat $FIC|grep -P ":x:[0-9]{5,}:"|cut -d ':' -f 1 > $REP/ftpusers cat $FIC|grep -P ":x:[0-9]{1,3}:"|cut -d ':' -f 1 > $REP/user_list cat $FIC|grep -P ":x:[0-9]{5,}:"|cut -d ':' -f 1 > $REP/user_list systemctl restart vsftpd
J’ai ensuite installé le paquet incron sur CentOS :
yum install incron
J’ai configuré ensuite le démon incrond à l’aide de la commande incrontab -e de manière à ce que toute modification du fichier /etc/passwd déclenche l’exécution du script /root/chrootvsftpd , rendu exécutable et présenté ci-dessus :
/etc/passwd IN_MODIFY /root/chrootvsftpd
Enfin, j’ai lancé le démon incrond :
systemctl enable incrond systemctl start incrond