HSC
Network Security Consulting Agency Since 1989 - Specialized in Unix, Windows, TCP/IP and Internet
Text mode: access to the page content
Hervé Schauer Consultants
You are here: Home > Resources > Tips > Advanced Intrusion Detection Environment (AIDE)
Go to: HSC Trainings
Télécharger le catalogue des formations
Search:  
Version française
   Services   
o Skills & Expertise
o Consulting
o ISO 27001 services
o Audit & Assessment
o Penetration tests
o Vunerability assessment (TSAR)
o Forensics
o ARJEL
o Training courses
o E-learning
   Conferences   
o Agenda
o Past events
o Tutorials
   Resources   
o Thematic index
o Tips
o Lectures
o Courses
o Articles
o Tools (download)
o Vulnerability watch
   Company   
o Hervé Schauer
o Team
o Job opportunities
o Credentials
o History
o Partnerships
o Associations
   Press and
 communication
 
 
o HSC Newsletter
o Bulletin juridique HSC
o Press review
o Press releases
o Publications
   Contacts   
o How to reach us
o Specific inquiries
o Directions to our office
o Hotels near our office
|>|Advanced Intrusion Detection Environment (AIDE)  

by Nicolas Jombart (09/01/2002)



              AIDE : Advanced Intrusion Detection Environment


-= Pourquoi utiliser AIDE =-

AIDE est un HIDS : Host-based Intrusion Detection System. Il s'agit d'un
clone amélioré (et ne disposant que d'un seul type de license) du logiciel
de scellement de fichiers bien connu qu'est Tripwire.

Le principe de ce logiciel est simple. Il s'agit de construire une base de
signatures (utilisant des algorithmes d'empreinte cryptographique) de fichiers
que l'on désire surveiller, et de re-calculer ces empreintes périodiquement ou
au besoin, en les confrontant à la base.
Si les empreintes sont différentes (au niveau du fichier, de sa date, de ses
droits d'accès, de son inode ...), le logiciel aura ou pas détecté une modi-
fication de fichiers.

Ces logiciels sont très utiles en cas d'intrusion, afin de découvrir ce qui
a été changé (journaux modifiés, fichiers ajoutés à certains endroits, 
binaires comme netstat, lsof, who, sshd modifiés, fichiers de configuration,
pages web, etc.). Cependant, ce type de logiciel n'est pas à voir comme pro-
tégeant le système. AIDE ne fera rien pour améliorer la sécurité d'un systè-
me Unix (AIDE n'existe que pour ces systèmes). C'est le dernier logiciel que
vous avez à installer sur votre système.

Parallèlement, AIDE peut s'avérer très utile pour l'administration. En effet,
il sera capable de détecter des erreurs commises (fichiers de configuration
changés, ajoutés ou effacés, modifications de binaires).


-= Configurer AIDE =-

Le site officiel d'AIDE est http://www.cs.tut.fi/~rammer/aide.html

Il est nécessaire d'avoir quelques programmes GNU indispensables : flex, gmake
et yacc, ainsi que la bibliothèque mhash pour bénéficier de plus d'algori-
thmes d'empreinte (http://mhash.sourceforge.net/ ).

Voici la façon dont j'ai installé AIDE, en plaçant le fichier de configuration
(et plus tard la base) dans /var/adm/aide :

$ ./configure --with-mhash --with-zlib --with-config_file=/var/adm/aide/aide.conf

(renseignez au besoin la variable LIBS avec "-L/usr/local/lib"
suivi des traditionnels make et make install (ou gmake ...)

AIDE doit être placé sur un support non-inscriptible. Une partition en RO ne
suffit pas, il est nécessaire d'utiliser une disquette protégée mécaniquement
en écriture ou de graver un CD-ROM. La disquette étant AMHA plus pratique pour
la plupart des situations, sur mon système ça donne :

# mkdir -p /var/adm/aide/db
# chmod 0700 /var/adm/aide
# mount /dev/fd0 /var/adm/aide

Bien sûr on la montera avec l'option -r dès que la configuration et la base
initiale seront créées.

Il nous reste à créer le fichier de configuration. Si vous avez un fichier
de configuration Tripwire, il sera facilement réutilisable avec peu de change-
ments.

J'ai les variables suivantes définies :
database=file:///var/adm/aide/db/aide.db
database_out=file:///var/adm/aide/db/aide.db.new

éventuellement :
gzip_dbout=true

Notez que les deux premières variables sont des URL. Il est possible d'utiliser
stdin, stdout, stderr, un fichier comme ici, ou un descripteur de fichier, et
bien d'autres choses encore plus tard dans l'évolution du logiciel.

On définit ensuite les fichiers à inclure dans la base de données :
fichier		Groupe

Un ! placé avant le fichier l'ignore, et un = rend le fonctionnement non-
récursif.
Les groupes d'éléments à inclure et à surveiller sont :
p : les permissions
i : l'inode
n : le nombre de liens
u : l'utilisateur auquel appartient le fichier
g : son groupe
s : sa taille
m : sa date de dernière modification des données
a : sa date de dernier accès
c : sa date de dernière modification de statut (droits, etc.)
S : vérifie que la taille augmente (fichier de log par exemple)
ainsi que les noms des algorithmes d'empreinte.

Plusieurs « méta-groupes » sont disponibles :
R équivaut à p+i+n+u+g+s+m+c+md5, L à p+i+n+u+g et > à p+u+g+i+n+S.

Il est conseillé d'utiliser plusieurs types d'algorithmes d'empreinte différents.

Il reste donc à définir ce qu'on veut surveiller, par exemple :

=/		L
/kernel		R-tiger-rmd160-sha
/bin		R-tiger-rmd160-sha1
!/etc/ntp.drift 
/etc/passwd	L
/etc/shadow	L
/etc		R-tiger-rmd160-sha1
/usr/sbin
/usr/bin
etc.

Attention, si un premier champ commence par /, il s'agit d'une expression 
régulière, donc /blah équivaut à /blah.*, vous voudrez peut-être utiliser /blah$

Il est important de bien prendre du temps à construire votre fichier de confi-
guration en fonction de vos besoins (système entier, arborescence web, utilisateur
particulier, etc.). Notez que le fichier /etc/ntp.drift est supprimé de la base,
car son contenu change sans-cesse; la négation doit être placée avant la déclara-
tion du répertoire.

Un fichier d'exemple peut par exemple être trouvé ici :
http://www.freebsd.org/cgi/cvsweb.cgi/ports/security/aide/files/aide.conf.freebsd



-= Utiliser AIDE de manière efficace =-

. L'initialisation

La première chose à faire est de créer une première base de signatures :

# aide --init

Cette commande va créer un fichier /var/adm/aide/db/aide.db.new, qu'il convient
de renommer en aide.db.
La base initiale de signatures est donc créée. Il s'agit d'un fichier texte 
qu'il est alors possible de lire afin de vérifier que tous les fichiers ont été
pris en compte, c'est-à-dire que les expressions régulières sont correctes.

. Vérifier la base périodiquement

Ensuite périodiquement, il est nécessaire de vérifier l'intégrité des fichiers.
Ce peut-être une fois par jour, ou par exemple toutes les 5 minutes si la base
contient uniquement les fichiers de votre site web; en cas de « defacement »,
AIDE préviendra donc en un maximum de 5 minutes.

Cela se fait simplement par :

# aide --check

Cette commande est silencieuse si AIDE ne trouve aucune différence. Elle peut
donc être placée telle-quelle dans une crontab.

Cependant, si des fichiers sont normalement modifiés (ajout d'un utilisateur,
modification de configuration, mise à jour du système, ...), certains retours
sont normaux. Deux choix s'offrent donc à nous :
. recréer la base entièrement lorsque des modifications sont faites.
. modifier cette base en incluant les changement trouvés

Cette deuxième solution est mise en oeuvre par la commande :

# aide --update

Un nouveau fichier aide.db.new est alors créé, il convient également de le
remplacer par aide.db. Voici donc l'utilité du suffixe .new lors d'une création
de base.
Avec cette commande en crontab, seuls les deltas apparaîtront. Bien entendu,
cette deuxième méthode n'est pas compatible avec l'utilisation (recommandée)
d'un support non-inscriptible, puisque nécessitant alors une intervention
humaine pour déprotéger la disquette ou graver un autre CD-ROM.


ecu@shiva:~> w3m -dump http://www.cs.tut.fi/~rammer/aide/manual.html | tail -2
 5. Paranoia is your friend

	-- Nicolas Jombart <ecu@hsc.fr>



Last modified on 12 November 2003 at 13:54:59 CET - webmaster@hsc.fr
Mentions légales - Information on this server - © 1989-2013 Hervé Schauer Consultants