IDS : mise en oeuvre de Tripwire pour WordPress
Tripwire fait partie de la grande famille des IDS Intruder Detection System. Mais, là où Snort scanne l’activité réseau à partir de signatures, Tripwire contrôle les modifications apportées au système de fichiers. AIDE et Afick sont des offres concurrentes à Tripware. Le paquet AIDE disponible sur le Fedora 27, hélas, ne fonctionne pas du fait d’un problème de version de la libraire gcrypt. Quant à Afick, j’aurais bientôt l’occasion de vous en parler !
Le gros reproche que l’on peut faire à Tripwire est de ne pas permettre de restreindre la surveillance à partir de masques de fichiers ou d’expressions régulières. Contrairement à AIDE, il ne dispose pas non plus de règles d’exception. L’exemple ci-dessous concerne un site WordPress. Dans ce cadre, je voudrais indiquer qu’il est difficile de surveiller l’activité du dossier /wp-content/plugins de WordPress du fait d’extensions qui écrivent dans les répertoires !
Installation de Tripwire
Sous Red Hat / CentOS / Fedora, l’installation de Tripwire se fait très simplement :
yum install tripwire
Génération des clés
La génération des clés se réalise par la commande tripwire-setup-keyfiles. Elles sont sauvegardées dans le dossier /etc/tripwire sous les noms site.key et hostname-local.key, où hostname désigne le nom de votre machine. Les fichiers de règles tw.pol et twpol.txt sont générés par la commande. twcfg.txt est, quant à lui, le fichier de configuration générale.
Fichier de configuration
Vous devez éditer le fichier /etc/tripwire/twpol.txt, en ayant pris la précaution, d’en faire une copie préalable.
@@section GLOBAL TWWWW=/home/www/dsfc; SIG_HI=100; HOSTNAME=vmfedora; @@section FS SEC_WP = +bcdgimnpsu; ( rulename = "WordPress", severity = $(SIG_HI), emailto = votre@email.com ) { # $(TWWWW) -> $(SEC_WP) (recurse=-1;emailto="votre@email.com",severity=100); $(TWWWW) -> $(SEC_WP) (recurse=0); $(TWWWW)/wp-admin -> $(SEC_WP) (recurse=-1); $(TWWWW)/wp-includes -> $(SEC_WP) (recurse=-1); $(TWWWW)/wp-theme/themes -> $(SEC_WP) (recurse=-1); }
Dans la section FS, vous pouvez définir des variables disposant utilisant la codification de Tripwire :
- Ignore the following properties + Record and check the following properties a Access timestamp b Number of blocks allocated c Inode timestamp (create/modify) d ID of device on which inode resides g File owner's group ID i Inode number l File is increasing in size (a "growing file") m Modification timestamp n Number of links (inode reference count) p Permissions and file mode bits r ID of device pointed to by inode (valid only for device objects) s File size t File type u File owner's user ID C CRC-32 hash value H Haval hash value M MD5 hash value S SHA hash value
Vous devez ensuite le convertir au format .pol à l’aide de la commande twadmin :
cd /etc/tripwire twadmin -m P twpol.txt
Initialisation de la base Tripwire
Il faut disposer d’un snapshot préalable des dossiers à surveiller :
tripwire --init
En cas de modification de votre système de fichiers, vous devrez réexécuter cette commande.
Surveillance par tâche planifiée
Vous devez exécuter, par tâche planifiée, la commande suivante :
/usr/sbin/tripwire --check --email-report