Parselog LDAP
Getting started
Le programme parselog-ldap permet de construire des logs LDAP lisibles et exploitables. Il doit se lancer sur le serveur LDAP. Il ne peut pas recevoir les logs de plusieurs serveurs LDAP car il pourrait y avoir plusieurs fois le même numéro de connexion et donc des logs inconsistants.
Le programme prend en entrée un port sur lequel il va écouter en TCP sur 127.0.0.1 et va renvoyer les logs construits sur local5.info les logs qui ne sont pas des opérations sur local5.debug. Il faudra passer en argument du programme le port d'écoute TCP:
parselog-ldap --listen=8080
Il faudra ensuite indiquer au rsyslog local d'envoyer les log LDAP sur le port d'écoute du démon et traiter les logs envoyés sur local5.info et local5.debug. Avec rsyslog, exemple d'un fichier /etc/rsyslog.d/ldap.conf:
local5.debug;local5.!info -/var/log/ldap/ldap.log
local5.info @@LOGHOST:PORT
local4.* @@127.0.0.1:8080
:programname, isequal, "slapd" stop
Le démon parselog-ldap ne doit pas tourner en tant que root, il faut donc lui créer un utilisateur sous lequel il sera exécuté.
Compilation
Installer rust puis: cargo build -r
Le binaire sera présent dans target/release
Fonctionnement
A la réception d'un log une première expression régulière va analyser la commande LDAP (BIND, ADD, DEL, SRCH...) et va envoyer le log dans la fonction adequat. Les logs sont construit en récupérant les info dans les logs et en utilisant le numéro de connexion et numéro d'opération. Tout est stocké dans des tables de hashage gérés dans le fichier hashmap.rs. Quand on tombe sur la commande RESULT, on va aller récupérer les infos préalablement stocké, construile la ligne de log à envoyer, l'envoyer avec la fonction sendlog() et nettoyer les tables de hashage.
License
Aucune
Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.