Surveillance de l'integrite de son systeme Linux


yellow eye
Cet article explique comment surveiller l'intégrité d'un système d'exploitation Linux, afin d'être prévenu rapidement d'une intrusion sur une machine.

Pour bien comprendre l'intérêt de la surveillance de l'intégrité de son système, je vais prendre plusieurs exemples d'actions effectuées par un pirate informatique, lorsque ce dernier a réussi à s'introduire sur une machine, par le biais d'une faille de sécurité par exemple.

1. Exemple de modification du système

Pour chacun de ces cas, une surveillance de l'intégrité permettra de détecter très rapidement, les mouvements de l'intrus.

Cas n°1 : modification du fichier /etc/passwd

Notre pirate a réussi, par une méthode ou une autre, à accéder en écriture, au fichier /etc/passwd. Afin de pouvoir passer en root sur la machine, il y a ajouté la ligne suivante :

system::0:0:system:/:/bin/bash

On notera ici, qu'il a simplement créé un utilisateur nommé système, sans mot de passe, qui a le même ID que root. L'intrus pourra ainsi, à tout moment passer root sur la machine, via un simple compte utilisateur, en utilisant la commande "su - system".

Ce type de backdoor est assez difficile à repérer, étant donné que l'on ne consulte pas le fichier /etc/passwd tous les jours et qu'en plus, le nom system pourrait paraître normal.

Cas n°2 : le bit SUID

Là encore, notre intrus à obtenu les droits root et il voudrait être sêr de pouvoir revenir sous cette identité, à sa guise et même après un changement du mot de passe de ce dernier par l'administrateur. Pour se faire, il pourra positionner un bit SUID, sur les commandes qu'il désire, afin de pouvoir les exécuter ensuite en tant que root :

$ cat /etc/shadow
cat: /etc/shadow: Permission denied
$ su -
Password:
# chmod a+s /bin/cat
# exit
$ cat /etc/shadow
root:xxxxx:13449:0:99999:7:::

Encore une fois, pour repérer ce genre de manipulation, cela reste difficile, car il faudra régulièrement regarder les bons droits sur les fichiers (avec la commande "find / -perm +4000" par exemple).

2. La solution

Pour éviter ce genre d'action, on pourra mettre en place un logiciel comme Tripwire ou encore AIDE sur la machine. Ce dernier a pour but de s'assurer l'intégrité des répertoires et des fichiers importants en identifiant tous changements apportés à ces derniers.

Pour ma part, je n'ai pas trouvé de version gratuite de Tripwire et je me suis donc rabattu sur AIDE (Advanced Intrusion Detection Environment). Voici la commande à lancer pour l'installer sur une distribution à base de rpm :

yum install aide

Ou celle-ci pour une distribution à base de Debian :

apt-get install aide

On initialisera ensuite la base de données (environ 15 minutes de traitement) :

aide --init

Puis on placera la base de données dans un lieu sûr (média accessible qu'en lecture, DVD par exemple). Pour faire simple ici, je vais laisser la base dans le dossier où elle se trouve initialement, en la renommant afin d'être exploitable par la commande aide :

mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

On pourra ainsi vérifier l'intégrité du système via la commande suivante (environ 10 minutes de traitement) :

aide --check

Dans notre cas ici, j'avais pris le soin de construire une base, avant la mis en pratique des différents cas cités plus haut. Et voici ce que donne la commande aide --check après vérification :

...
changed: /etc/passwd
changed: /bin/cat
...

Les modifications système ont donc bien été détectées. On pourra bien sûr rendre ce genre de procédure automatique, en ajoutant cette commande à une crontab et lui faisant retourner le résultat par mail.

Dans le cas d'une mise à jour du système, ou de changement de configuration, l'administrateur pourra a tout moment mettre lui même AIDE à jour, en utilisant le paramètre update :

aide --update

3. Conclusion

On pourra aller beaucoup plus loin dans la configuration AIDE, en modifiant le fichier /etc/aide.conf. On pourra par exemple, rajouter la surveillance des fichiers de son site web, afin d'être prévenu rapidement en cas de "défaçage ".


6 Commentaires pour "Surveillance de l'integrite de son systeme Linux"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    C'est pas mal comme logiciel, mais tout dépends de la fréquence d'exécution du aide --check.

    En effet, si tu considère qu'un temps résonnable est 5mn, cela laisse assez de temps à un intrus pour passer root, et aller désactiver le check dans la crontab, ou bien pour modifier le /etc/aide.conf pour qu'il n'envoie pas d'email, et ensuite d'exécuter un aide --update.

    C'est donc un bon début, mais il faudrait un autre mécanisme pour protéger aide lui-même.

    RépondreRépondre
    matao , le 14 janvier 2007 à 12:09
  •  

    Sûr, si il passe root il fait ce qu'il veut. Il peut même désinstaller aide ...

    Néamoins la solution reste pas mal pour connaître exactement les modifications système qui ont été faite par un hacker, dans le cas ou la base de données à été placé en lieu sûr.

    RépondreRépondre
    pti-seb , le 14 janvier 2007 à 14:20
  •  

    Dans le cas ou l'attaquant installe une LKM, dans une grande majoritée des cas, le fichier etc/passwd ne changerai pas. Il existe des méthodes plus ou moins efficace pour la détection des LKM, peut ˆtre cela pourrait l'objet d'un nouveau billet ? :p

    Bonne continuation

    RépondreRépondre
    Julien , le 18 avril 2007 à 17:17
  •  

    Merci pour les infos je ne connaissais pas et je vais essayer ça de toute urgence ! ;)

    RépondreRépondre
    Winsa , le 9 août 2007 à 09:04
  •  

    Très intéressant, faudrait que je me penche un peu dessus!

    À part ça, quelques fautes d'orthographe...
    On devra ensuite placer la base de données dans un lieu sêr [sûr] (media accessible quand [qu'en] lecture, DVD par exemple)

    RépondreRépondre
    Johnny Bravo , le 23 novembre 2007 à 10:36
  •  

    @Johnny Bravo : les fautes sont corrigés.

    RépondreRépondre
    pti-seb , le 23 novembre 2007 à 13:01
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum