Hids en python

Description

Voilà je me suis amusé à écrire un petit HIDS en Python.
Pour l'instant il ne fait pas grand chose. Il calcul simplement les hash d'un certain nombre de fichiers et détecte si un hash a été modifié.
Par contre il ne fonctionne que sous Linux. En effet il va chercher dans /etc/ entre autre ... Donc comme il peut y avoir beaucoup de fichier, il est threadé.
De plus, les logs sont sauvegardés dans un fichier crypté, via ce module :
http://stuvel.eu/rsa

Quelques explications :

Pour tester, saisissez les commandes :

python genKeys.py
python genBase.py
python pyHids.py

La première ligne génère les paires de clés RSA et les enregistre (via le module pickle de Python) dans deux fichiers distincts :
  • cle_priv : la paire de clés privés que le programme connait pour décrypter le fichier de log ;
  • cle_pub : la paire de clés publiques permettant de générer la base de hachage. Cette paire de clés ne doit pas rester sur la machine...


La deuxième ligne génère la base contenant les valeurs de hachages. C'est ce fichier qui est donc crypté.

La troisième ligne peut être exécutée périodiquement par cron, par exemple. Chez moi le script s'exécute toutes les heures. Mes logs font déjà plus de 3 Mo ...

Exemple d'exécution :

[cedric@localhost pyHIDS]$ python genKeys.py
Generating 256 bits RSA keys ...
Dumping Keys
Done.
[cedric@localhost pyHIDS]$ python genBase.py
Loading public key
Generating data base...
442 files in the base.
[cedric@localhost pyHIDS]$ python pyHIDS.py
[08/01/09 17:29:34] HIDS starting.
[08/01/09 17:29:39] [notice] /etc/X11/xorg.conf.mdv1227283295 ok
[08/01/09 17:29:39] [notice] /etc/sane.d/stv680.conf ok
[08/01/09 17:29:39] [notice] /etc/X11/xorg.conf.mdv1227084349 ok
[08/01/09 17:29:39] [notice] /etc/gconf/gconf.xml.defaults/%gconf-tree-nl.xml ok
[08/01/09 17:29:39] [notice] /etc/sane.d/matsushita.conf ok
[08/01/09 17:29:39] [notice] /etc/avahi/avahi-daemon.conf ok
[08/01/09 17:29:39] [notice] /etc/fonts/conf.avail/10-sub-pixel-bgr.conf ok
[08/01/09 17:29:39] [notice] /etc/security/time.conf ok
[08/01/09 17:29:39] [notice] /etc/X11/xorg.conf.mdv1229172361 ok
.
.
.
[08/01/09 17:29:40] [notice] /etc/dbus-1/session.conf ok
[08/01/09 17:29:40] [notice] /etc/fonts/conf.avail/70-yes-bitmaps.conf ok
[08/01/09 17:29:40] Error(s) : 0
[08/01/09 17:29:40] Warning(s) : 0
[08/01/09 17:29:40] HIDS finished.
[cedric@localhost pyHIDS]$

Après changement d'un caractère dans un fichier :

[cedric@localhost pyHIDS]$ python pyHIDS.py
[08/01/09 17:46:59] HIDS starting.
[08/01/09 17:47:05] [notice] /etc/sane.d/stv680.conf ok
.
.
.
[08/01/09 17:47:34] [warning] /etc/ssh/ssh_config hash has changed : b4889441ab35878c38cdc9fb422363680701a7d7 != 53139ec94a540688da2755a13344dd36d2eed740
.
.
.
[08/01/09 17:47:34] [notice] /etc/dbus-1/session.conf ok
[08/01/09 17:47:34] [notice] /etc/fonts/conf.avail/70-yes-bitmaps.conf ok
[08/01/09 17:47:34] Error(s) : 0
[08/01/09 17:47:34] Warning(s) : 1
[08/01/09 17:47:34] HIDS finished.
[cedric@localhost pyHIDS]$

Conclusion :


TODO : remplacer cette implémentation de RSA http://stuvel.eu/rsa par une perso un peu plus rapide. Si tel est le cas...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.