Implantation

Ce tutoriel développe la mise en place d'un détecteur d'intrusion (HIDS) qui envera ses rapports par mail ou non.

Tripwire est un outil de sécurité qui vérifie l'intégrité de votre système de fichiers et vous informe de toutes les modifications apportées sur des fichiers importants. Cela permet entre autre d'éviter les chevaux de Troie.
Tripwire est un produit payant, mais il existe toujours une version libre. C'est cette version qui sera présentée.
On peut aussi utiliser Tripwire pour surveiller son serveur Web et les pages qui s'y trouvent. Ainsi dès que Tripwire détecte un changement vous déclenchez un script qui remet en place les bonnes pages.

Important :
Mettez en place Tripwire
immédiatement après l'installation de la machine, avant de la brancher au réseau. Sinon vous risquez de compromettre l'intégrité de vos données.


Installation du package

tripwire-2.3.1.2-7mdk.i586.rpm

tripwire_2.3.1.2.0-2.2_i386.deb



















Fichiers Tripwire

tripwire

Permet de créer la base, de vérifier l'intégrité du système et mettre à jour la base.

twadmin

Permet de créer les clefs (site et local).
Permet de créer les fichiers cryptés tw.pol et tw.cfg à partir de leur version texte.
Permet de signer des fichiers.

twprint

Permet d'afficher un rapport ou la base en texte clair.

/etc/tripwire/twcfg.txt

Fichier de configuration des variables où vous indiquez l'emplacement et le nom des différents fichiers utilisées par tripwire.
Il se transforme une fois crypté en tw.cfg.

/etc/tripwire/twpol.txt

Fichier dans lequel se trouve la politique à appliquer.
Il faut l'adapter avec beaucoup de soin.
Il se transforme en tw.pol une fois crypté.

/etc/tripwire/twinstall.sh

Un script qui s'occupe de créer les clefs si elles n'existent pas, et de crypter les deux fichiers précédents. Vous pouvez le réutiliser à chaque fois que vous faites une modification de l'un d'eux.



Démarche à suivre

  1. Création de la clef du site et local :
    Générée par l'assistant d'installation sous Debian.
    Lancez manuellement un script sous Mandrake.

  2. Adaptez le fichier de configuration.

  3. Adaptez le fichier de politiques :
    Vous indiquez les fichiers ou répertoires que vous souhaitez surveiller.
    On ne surveille pas de la même façon un fichier de log et un binaire.
    L'un change tout le temps (pour la taille, pas les droits), l'autre ne doit jamais être modifié, ni changé de propriétaire, de droits ...

  4. Cryptez les fichiers policy et configuration afin qu'ils ne soient pas modifiables.

  5. Construire la base Tripwire de référence (tripwire --init) et gardez une copie sur un autre serveur ou sur CD.

  6. Vérifiez l'intégrité de vos fichiers et répertoires fréquemment (crontab).


Chaque fois que vous allez changer un fichier vous devez remettre à jour votre base et éventuellement votre fichier policy.


Configuration de Tripwire

Vous devez lancer le script d'initialisation et répondre aux questions :
[root@pc user]# /etc/tripwire/twinstall.sh


Adaptez le fichier
/etc/tripwire/twcfg.txt à vos besoins :

# Chemin vers le binaire tripwire.
ROOT =/usr/sbin
# Les variables nécessaire au bon fonctionnement de Tripwire.
POLFILE =/etc/tripwire/tw.pol
DBFILE =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE =/etc/tripwire/site.key
LOCALKEYFILE =/etc/tripwire/$(HOSTNAME)-local.key
# Pour Mandrake :
EDITOR =/bin/vi
# Pour Debian :
# EDITOR =/usr/bin/vi
#
# Pour réduire le temps de stockage de la passphrase en mémoire.
LATEPROMPTING =false
# Pour l'optimisation des rapports.
LOOSEDIRECTORYCHECKING =true
# Pour que Tripwire envoi un rapport même s'il n'y a pas d'alertes.
MAILNOVIOLATIONS =true
# Déactive l'envoi d'alertes vers syslog. Nous utilisons les mails.
SYSLOGREPORTING =false
# Les niveaux de rapport.
EMAILREPORTLEVEL =3
REPORTLEVEL =3
# Indique le protocole pour l'envoi de mails : SENDMAIL ou SMTP.
MAILMETHOD =SMTP
# Adresse IP ou FQDN du serveur SMTP et le port.
# (mettez localhost si la machine a son propre serveur SMTP)
SMTPHOST =smtp.alex.fr
SMTPPORT =25

Une fois ce fichier modifié, vous devez le signer par la commande :
root@pc:/etc/tripwire#
twadmin --create-cfgfile -S site.key /etc/tripwire/twcfg.txt
Please enter your site passphrase:
Wrote configuration file: /etc/tripwire/tw.cfg

Adaptez le fichier /etc/tripwire/twpol.txt à vos besoins :

Le fichier /etc/tripwire/twpol.txt fourni dans le package Mandrake à été écrit pour la distribution Red Hat de l'année 2001 ! Il n'est donc pas adapté car il va générer beaucoup d'erreurs.
De plus il est composé d'une multitude de sections pointant vers des fichiers et non vers des répertoires système. (très bonne configuration sur mesure mais très lourde à mettre en place ...)
Pour ces raisons que je vous conseil d'utiliser le fichier twpol.txt de la Debian, voici un exemplaire.


Vous devez indiquer quels fichiers et répertoires tripwire doit surveiller.
Indiquez un niveau de "sévérité" selon leur importance afin de les classer.

twpol.txt est composé de 2 sections (@@section) :

- GLOBAL = Variables globales.
Normalement vous n'avez rien à changer, sauf le HOSTNAME sous Mandrake si vous utilisez le fichier d'origine.
- FS = Fichiers systèmes.
On définit des noms de variables pour faciliter la configuration, et ne pas avoir à retaper chaque fois le masque correspondant.

Certaines règles existent par défaut, vous pouvez donc les utiliser :



Comme vous le constatez les règles utilisées sont un peu complexes. Chaque lettre est documentée dans le tableau ci-dessous. Le signe + indique que l'on doit tester ce critère. Le moins qu'on ne doit pas le tester (équivaut à ne pas mettre la lettre).

Par exemple +pi-u donne : vérifier les permissions du fichier et l'inode mais pas le propriétaire -u.




Exemples de personnalisation :

La première partie qui est entre parenthèses est importante, car elle vous permet de trier les fichiers en fonction d'un nom : rulename
Par la suite vous pouvez avec la commande suivante, "tripwire --check --rule-name exemple1", générer le rapport d'intégrité sans vérifier les autres paragraphes du fichier twpol.txt.
Cela permet par exemple, de vérifier certaines parties toutes les heures et d'autres toutes les semaines. De même avec severity on peut vérifier certains fichiers en fonction du nombre indiquer, par exemple vérifier tous les fichiers dont le niveau de sévérité est supérieur à 50 : "tripwire --check --severity 50".
On peut aussi indiquer dans cette partie, recurse (pour indiquer la profondeur) et emailto (pour envoyer un mail).

#
# Exemple avec emailto pour toute la règle.
#
(
# Le nom de la règle.
rulename = "exemple1",
# La sévérité pour chaque objets de cette règle.
severity = 50,
# Un mail sera envoyé à ces 2 comptes en cas d'alerte
# sur un des objets suivants.

emailto = "arnofear@alex.fr;root@alex.fr"
)
{

# Je teste ici un répertoire (droits et propriétaire) mais pas
# ce qui se trouve dedans.
/home -> +tpug (recurse = 0 ) ;
# Ici j'utilise une variable pré-définie et je ne teste
# qu'un fichier.
/sbin/fdisk -> $(ReadOnly) ;
# Je teste tous les fichiers et sous répertoires qui sont dans /etc.
/etc -> $(Dynamic) ;
# Je ne teste pas le fichier /etc/hosts.
!/etc/hosts ;
}



#
# Exemple avec emailto pour 2 objets.
#
(
rulename = "exemple2",
severity = $(SIG_MED)
)
{
/usr/local/sbin -> $(SEC_BIN) ;
/usr/local/bin -> $(SEC_BIN) ;
/usr/sbin -> $(SEC_BIN) ;
/usr/bin -> $(SEC_BIN) ;
# Un mail sera envoyé à cette adresse en cas de
# modification de ces 2 fichiers.

/etc/passwd -> $(ReadOnly) (emailto = root@alex.fr) ;
/etc/shadow -> $(ReadOnly) (emailto = root@alex.fr) ;
}


Une fois ce fichier modifié, vous devez le signer par la commande :
root@pc:/etc/tripwire# twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt
Please enter your site passphrase:
Wrote policy file: /etc/tripwire/tw.pol



Construction de la base Tripwire de référence par la commande :

root@pc:/etc/tripwire# tripwire –init
Please enter your local passphrase:
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
### Warning: File system error.
### Filename: /var/lib/tripwire/pc.alex.fr.twd
### Aucun fichier ou répertoire de ce type
### Continuing...
The object: "/dev/pts" is on a different file system...ignoring.
The object: "/dev/shm" is on a different file system...ignoring.
### Warning: File system error.
### Filename: /proc/4689/fd/5
### Aucun fichier ou répertoire de ce type
### Continuing...
Wrote database file: /var/lib/tripwire/pc.alex.fr.twd
The database was successfully generated.


Important :
A chaque fois que vous modifiez le fichier /etc/tripwire/twcfg.txt ou /etc/tripwire/twpol.txt vous devez reconstruire la base Tripwire pour quelle soit à jour.
Effacez d'abord l'ancienne base (rm -f /var/lib/tripwire/pc.alex.fr.twd) avant de reconstruire la nouvelle.


Vérifiez l'intégrité de vos données :

Si vous avez configuré Tripwire pour qu'il n'envoie pas de rapports par mails :
root@pc:/etc/tripwire# tripwire –check
Parsing policy file: /etc/tripwire/tw.pol
*** Processing Unix File System ***
Performing integrity check...
The object: "/dev/pts" is on a different file system...ignoring.
The object: "/dev/shm" is on a different file system...ignoring.
### Warning: File system error.
### Filename: /proc/7868/fd/3
### Aucun fichier ou répertoire de ce type
### Continuing...
Wrote report file: /var/lib/tripwire/report/pc.alex.fr-20050206-143455.twr


Si vous avez configuré Tripwire pour qu'il envoie ses rapports par mails :
root@pc:/etc/tripwire# tripwire --check -M > /dev/null 2> /dev/null

L'option "-M" pour l'envoi par mail (selon votre configuration) et "> /dev/null 2> /dev/null" pour ignorer le texte affiché après la commande (si vous utilisez un crontab par exemple).


Pour visualiser le contenu de votre base ou des rapports cryptés :

La base :
[root@pc user]# twprint -m d --print-dbfile > base_en_claire

Un rapport :
[root@pc user]# twprint -m r --twrfile /var/lib/tripwire/report/pc.alex.fr-20050205-170256.twr > rapport_en_clair


Vous pouvez mettre à jour votre base de données d'après les informations du rapport d'intégrité. La commande ci-dessous ouvre un rapport dans l'éditeur vi.
Pour que certain fichiers n'apparaissent plus dans les prochain rapports, il suffit de les décocher. Sauvegardez et quittez vi avec :wq!

srv1:/etc/tripwire# tripwire --update --twrfile /var/lib/tripwire/report/srv1.alex.fr-20050206-144542.twr

Tripwire(R) 2.3.0 Integrity Check Report

Report generated by: root
Report created on: dim 06 fév 2005 14:45:42 CET
Database last updated on: Never

==========================
Report Summary:
==========================

Host name: srv1.alex.fr
Host IP address: 192.168.0.1
Host ID: None
Policy file used: /etc/tripwire/tw.pol
Configuration file used: /etc/tripwire/tw.cfg
Database file used: /var/lib/tripwire/srv1.alex.fr.twd
Command line used: tripwire --check -M

==========================
Rule Summary:
==========================

--------------------------
Section: Unix File System
--------------------------

Rule Name Severity Level Added Removed Modified

  Invariant Directories        66    0    0    0
* Tripwire Data Files          100   1    0    0
  Other binaries               66    0    0    0
  Tripwire Binaries            100   0    0    0
  Other libraries              66    0    0    0
  Root file-system executables 100   0    0    0
  System boot changes          100   0    0    0
  Root file-system libraries   100   0    0    0
  (/lib)
  Critical system boot files   00    0    0    0
  Other configuration files    66    0    0    0
  (/etc)
  Boot Scripts                 100   0    0    0
  Security Control             66    0    0    0
* Root config files            100   0    0    2
* Devices & Kernel information 100   114  165  0

Total objects scanned: 38208
Total violations found: 282

==========================
Object Summary:
==========================

--------------------------
# Section: Unix File System
--------------------------

--------------------------
Rule Name: Tripwire Data Files (/var/lib/tripwire/srv1.alex.fr.twd)
Severity Level: 100
--------------------------

Remove the "x" from the adjacent box to prevent updating the database
with the new values for this object.

Added:
[x] "/var/lib/tripwire/srv1.alex.fr.twd"

--------------------------
Rule Name: Root config files (/root)
Severity Level: 100
--------------------------

Remove the "x" from the adjacent box to prevent updating the database
with the new values for this object.

Modified:
[x] "/root/.viminfo"

...

--------------------------
*** End of report ***

Tripwire 2.3 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY; for details use --version. This is free software which may be redistributed or modified only under certain conditions; see COPYING for details. All rights reserved.




Source (lien mort sur ce site) :
http://www.ac-creteil.fr/reseaux/systemes/linux/Welcome.html



Dernière modification : 11/02/05

 

Copyright © 04/02/2004, Arnofear

Contrat Creative Commons Ce document est publié sous licence Creative Commons
Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique :
http://creativecommons.org/licenses/by-nc-sa/3.0/deed.fr