Gentoo Logo

[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


13. Détection d'intrusion

Table des matières :

13.a. AIDE (Advanced Intrusion Detection Environment)

AIDE est un système de détection d'intrusion (« Host-Based Intrusion Detection System » (HIDS)) qui s'installe sur la machine à protéger. C'est une alternative gratuite à Tripwire. (Si vous connaissez déjà Tripwire, vous n'aurez aucune difficulté à configurer AIDE.) Les HIDS sont utilisés pour détecter des changements dans les fichiers importants du système (programmes binaires et fichiers de configuration), habituellement par calcul d'une somme de vérification cryptographique unique pour chaque fichier. Les sommes de vérification sont conservées dans un endroit sûr. Sur une base réguilière (par exemple une fois par jour), les sommes que l'on considère fiables sont comparées à celles générés à partir des fichiers présents à ce moment sur le système. On peut alors déterminer si des fichiers ont été modifiés. Les HIDS sont une excellente méthode de détection des changements non autorisés qui peuvent avoir lieu sur votre système. Leur mise en œuvre et leur utilisation nécessite toutefois quelques efforts.

Le fichier de configuration est basé sur des expressions rationnelles, des macros et des règles concernant les fichiers et répertoires. Nous avons les macros suivantes :

Macro Description Syntaxe
ifdef Si défini @@ifdef "nom"
ifndef Si non défini @@ifndef "nom"
define Définit une variable @@define "nom" "valeur"
undef Enlève la définition d'une variable @@undef "nom"
ifhost si "nom d'hôte" @@ifhost "nom hôte"
ifnhost si non "nom d'hôte" @@ifnhost "nom hôte"
endif Endif doit être utilisé après chacune des macros ci-dessus à part define et undef @@endif

Ces macros deviennent très pratiques si vous avez plus d'une machine Gentoo et désirez utiliser AIDE sur chacune d'entre elles, bien que toutes les machines n'aient pas les mêmes utilisateurs ou services.

Nous devons ensuite vérifier les indicateurs sur les fichiers ou les répertoires. Ils sont formés d'une combinaison de permissions, de propriétés de fichiers et de sommes de vérification.

Indicateur Description
p Permissions
i inode
n Nombre de liens
u Utilisateur
g Groupe
s Taille
b Nombre de blocs
m mtime
a atime
c ctime
S Vérifie si la taille augmente
md5 Somme de vérification md5
sha1 Somme de vérification sha1
rmd160 Somme de vérification rmd160
tiger Somme de vérification tiger
R p+i+n+u+g+s+m+c+md5
L p+i+n+u+g
E Groupe vide
> Taille du fichier journal en augmentation p+u+g+i+n+S

Et, si AIDE est compilé avec le support mhash, vous disposerez également de :

Indicateur Description
haval Somme de vérification haval
gost Somme de vérification gost
crc32 Somme de vérification crc32

Vous pouvez à présent créer vos propres règles en combinant les indicateurs de cette façon :

Exemple de code 1.1 : créer un ensemble de règles pour AIDE

All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160

La dernière chose dont nous avons besoin pour créer notre propre fichier de configuration est de comprendre comment ajouter une règle à un fichiers ou un répertoire. Pour ce faire, combinez le nom du fichier ou du répertoire et celui de la règle. AIDE ajoutera les fichiers récursivement à moins que vous ne précisiez une règle différente.

Indicateur Description
! Ne pas ajouter ce fichier ou répertoire.
= Ajouter ce répertoire mais sans récursion.

Regardons à présent l'exemple complet :

Exemple de code 1.2 : /etc/aide/aide.conf

@@ifndef TOP DIR
@@define TOPDIR /
@@endif

@@ifndef AIDEDIR
@@define AIDEDIR /etc/aide
@@endif

@@ifhost smbserv
@@define smbactive
@@endif

# L'endroit où lire la base de données.
database=file:@@{AIDEDIR}/aide.db

# L'endroit où inscrire la base de données.
database_out=file:aide.db.new

verbose=20
report_url=stdout

# Définition des règles
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160

@@{TOPDIR} Norm
!@@{TOPDIR}etc/aide
!@@{TOPDIR}dev
!@@{TOPDIR}media
!@@{TOPDIR}mnt
!@@{TOPDIR}proc
!@@{TOPDIR}root
!@@{TOPDIR}sys
!@@{TOPDIR}tmp
!@@{TOPDIR}var/log
!@@{TOPDIR}var/run
!@@{TOPDIR}usr/portage
@@ifdef smbactive
!@@{TOPDIR}etc/smb/private/secrets.tdb
@@endif
=@@{TOPDIR}home Norm

Dans l'exemple ci-dessus, nous spécifions avec quelques macros l'emplacement des répertoires racines et du répertoire de AIDE. AIDE consulte /etc/aide/aide.db lorsqu'il vérifie l'intégrité d'un fichier. Toutefois, lors de la mise à jour ou de la création d'un fichier, l'information est conservée dans /etc/aide/aide.db.new. Cela permet d'éviter d'écraser automatiquement le fichier de la base de données précédente. L'option report_URL n'est pas encore implémentée, mais l'intention de l'auteur était de permettre l'envoi d'un courriel ou l'exécution de scripts.

L'ebuild de AIDE contient une configuration par défaut, un script d'aide à la configuration et un script crontab. Le script d'aide à la configuration contient une interface plus facile à utiliser. Pour afficher les options, exécutez aide --help. Pour démarrer, il suffit de lancer aide -i et le script crontab devrait détecter la base de données et envoyer des courriels chaque jour. Il est recommandé de vérifier le contenu du fichier /etc/aide/aide.conf pour vous assurer qu'il correspond à votre système.

Note : en fonction des indicateurs que vous avez mis, de la puissance de votre processeur et de la rapidité d'accès à votre disque dur, cela peut prendre un certain temps d'exécution.

Note : rappelez-vous de paramétrer un alias pour le courrier électronique de root. Sinon, il y a des chances que vous ne receviez jamais ce qu'AIDE vous envoie.

Il existe des risques inhérents à l'utilisation d'une base de données locale. Si un attaquant sait qu'AIDE est installé, il essaiera de corrompre la base ou de modifier /usr/bin/aide. Vous devriez donc utiliser un CD (ou un autre média) pour y copier le fichier .db ainsi que les fichiers binaires d'AIDE.

Pour plus d'informations, consultez la page du projet AIDE.

13.b. Snort

Snort est un système de détection d'intrusion sur le réseau. Pour l'installer et le configurer, utilisez les exemples suivants.

Exemple de code 2.1 : /etc/conf.d/snort

PID FILE=/var/run/snort_eth0.pid
MODE="full"
NETWORK="10.0.0.0/24"
LOG DIR="/var/log/snort"
CO NF=/etc/snort/snort.Cong
SNORT_OPTS="-D -s -u snort -dev -l $LOGDIR -h $NETWORK -c $CONF"

Exemple de code 2.2 : /etc/snort/snort.conf

(Étape 1)
var HOME_NET 10.0.0.0/24
var EXTERNAL_NET any
var SMTP $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var DNS_SERVERS [10.0.0.2/32,212.242.40.51/32]
var RULE_PATH ./

(Étape 2)
preprocessor frag2
preprocessor stream4: detect_scans detect_state_problems detect_scans disable_evasion_alerts
preprocessor stream4_reassemble: ports all
preprocessor http_decode: 80 8080 unicode iis_alt_unicode double_encode iis_flip_slash full_whitespace
preprocessor rpc_decode: 111 32771
preprocessor bo: -nobrute
preprocessor telnet_decode

(Étape 3)
include classification.config

(Étape 4)
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/tftp.rules
include $RULE_PATH/web-cgi.rules
include $RULE_PATH/web-coldfusion.rules
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/x11.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/attack-responses.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/shellcode.rules
include $RULE_PATH/policy.rules
include $RULE_PATH/porn.rules
include $RULE_PATH/info.rules
include $RULE_PATH/icmp-info.rules
include $RULE_PATH/virus.rules
# include $RULE_PATH/experimental.rules
include $RULE_PATH/local.rules

Exemple de code 2.3 : /etc/snort/classification.config

config classification: not-suspicious,Not Suspicious Traffic,3
config classification: unknown,Unknown Traffic,3
config classification: bad-unknown,Potentially Bad Traffic, 2
config classification: attempted-recon,Attempted Information Leak,2
config classification: successful-recon-limited,Information Leak,2
config classification: successful-recon-largescale,Large Scale Information Leak,2
config classification: attempted-dos,Attempted Denial of Service,2
config classification: successful-dos,Denial of Service,2
config classification: attempted-user,Attempted User Privilege Gain,1
config classification: unsuccessful-user,Unsuccessful User Privilege Gain,1
config classification: successful-user,Successful User Privilege Gain,1
config classification: attempted-admin,Attempted Administrator Privilege Gain,1
config classification: successful-admin,Successful Administrator Privilege Gain,1

# NOUVELLES CLASSIFICATIONS
config classification: rpc-portmap-decode,Decode of an RPC Query,2
config classification: shellcode-detect,Executable code was detected,1
config classification: string-detect,A suspicious string was detected,3
config classification: suspicious-filename-detect,A suspicious filename was detected,2
config classification: suspicious-login,An attempted login using a suspicious username was detected,2
config classification: system-call-detect,A system call was detected,2
config classification: tcp-connection,A TCP connection was detected,4
config classification: trojan-activity,A Network Trojan was detected, 1
config classification: unusual-client-port-connection,A client was using an unusual port,2
config classification: network-scan,Detection of a Network Scan,3
config classification: denial-of-service,Detection of a Denial of Service Attack,2
config classification: non-standard-protocol,Detection of a non-standard protocol or event,2
config classification: protocol-command-decode,Generic Protocol Command Decode,3
config classification: web-application-activity,access to a potentially vulnerable web application,2
config classification: web-application-attack,Web Application Attack,1
config classification: misc-activity,Misc activity,3
config classification: misc-attack,Misc Attack,2
config classification: icmp-event,Generic ICMP event,3
config classification: kickass-porn,SCORE! Get the lotion!,1

Pour plus d'informations, consultez le site de Snort.

13.c. Détecter les logiciels malfaisants avec chkrootkit

Les HIDS tels que AIDE sont d'excellents outils pour détecter les changements apportés à votre système, mais disposer d'une ligne de défense supplémentaire ne peut pas vous nuire. chkrootkit est un utilitaire servant à scanner les fichiers système classiques pour y repérer des « rootkits » (des logiciels conçus pour dissimuler les actions d'un intrus et lui permettre de conserver son accès). chkrootkit scanne aussi votre système pour y repérer des logiciels malfaisants, par exemple des programmes servant à espionner vos entrées clavier. Bien que chkrootkit et ses alternatives (tel que rkhunter) soient des outils précieux à la fois pour la maintenance d'un système et pour le repérage des intrus après une attaque, ils ne peuvent garantir la sécurité de votre système.

La meilleure façon d'utiliser chkrootkit pour détecter une intrusion est de l'exécuter régulièrement à partir de cron. Tout d'abord, exécutez app-forensics/chkrootkit. chkrootkit peut être exécuté en tapant la commande du même nom, ou à partir de cron grâce à une entrée comme celle qui suit :

Exemple de code 3.1 : Planifier l'exécution de chkrootkit en tant que tâche cron

0 3 * * * /usr/sbin/chkrootkit

[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


Imprimer

Voir tout

Dernière mise à jour le 19 juillet 2010

Une version originale plus récente datée du 10 avril 2014 existe.

Résumé : Détectez les intrus.

Kim Nielsen
Auteur

John P. Davis
Correcteur

Eric R. Stockbridge
Correcteur

Carl Anderson
Correcteur

Jorge Paulo
Correcteur

Sven Vermeulen
Correcteur

Benny Chuang
Correcteur

Sune Jeppesen
Correcteur

Tiemo Kieft
Correcteur

Zack Gilburd
Correcteur

Dan Margolis
Correcteur

FRLinux
Traducteur

Matthieu Montaudouin
Traducteur

Olivier Fisette
Traducteur

Clément Varaldi
Traducteur

Xavier Neys
Traducteur

José Fournier
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.