|
soul^keeper |
 |
Administrateur 
Connecté
Niveau : 5 N° de Membre :
1
Ancienneté : 100%
Participation : 19%
Inscription: 22 Feb 2002
Localisation: La Défense
Age: 48
Messages: 16623
Sujets Lancés : 2412
|
[HOWTO] AIDE : Advanced Intrusion Detection Environment
Je viens de tomber sur cet article, je ne connais pas du tout, mais ça m'a l'air intéressant.
Dans le doute, je le poste ici... si certains connaissent, n'hésitez pas à me faire part de vos impressions.
-----------------
Citation:
Advanced Intrusion Detection Environment (AIDE)
par 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 modification 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 proté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'algorithmes 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 changements.
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 :
code: <small>=/ 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.</small>
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 configuration 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éclaration du répertoire.
Un fichier d'exemple peut par exemple être trouvé ici :
http://www.freebsd.org/cgi/cvsweb.c...de.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>
|
Signaler ce message à un modérateur | IP: Logguée Temps en ligne : 92 Jours, 20 Heures, 22 Minutes, 21 Secondes en ligne
|