But :
Chrooter le bot Newsyndrome pour une meilleur sécurité du serveur même si le bot n'est pas un élement critique et que sa sécurité est excellent.
Pré-requis/infos :
- Toute la manipulation est à effectuer avec le super-utilisateur (root).
- Les lignes commencant par $ sont les lignes à exécuter dans le shell.
Principe :
1.) Créez un répertoire dédié (ici : /choot/newsyndrome) et un utilisateur dédié bot appartenant au groupe bot :
$ adduser bot --shell /sbin/nologin
$ mkdir -pv /chroot/newsyndrome
2.) Compiler
NewSyndrome dans un répertoire a part (par exemple : /home/bot/newsyndrome).
3.) Créez les répertoires nécessaires :
$ install -dv /chroot/newsyndrome/bin/
$ install -dv /chroot/newsyndrome/conf/bases
$ install -dv /chroot/newsyndrome/dev/
$ install -dv /chroot/newsyndrome/etc/
$ install -dv /chroot/newsyndrome/lib/
$ install -dv /chroot/newsyndrome/modules/
$ install -dv /chroot/newsyndrome/proc/
$ install -dv /chroot/newsyndrome/tmp/
$ install -dv /chroot/newsyndrome/var/log/
$ mknod -m 666 /chroot/newsyndrome/dev/null c 1 3
4.) Copiez le binaire et les modules de
NewSyndrome, ils se trouvent respectivement dans le sous-repertoire bin et le sous répertoire modules du répertoire dédié (/home/bot/newsyndrome).
$ cp /home/bot/newsyndrome/
NewSyndrome /chroot/newsyndrome/bin
$ cp -a modules/* /chroot/newsyndrome/modules
$ cp /home/bot/newsyndrome/tdbrowser /chroot/newsyndrome/bin
5.) Copiez les quelqes binaires externes :
$ cp /bin/{sh,cat,uname} /chroot/newsyndrome/bin
$ cp /usr/bin/uptime /chroot/newsyndrome/bin
6.) Copiez les librairies nécessaires :
$ cp /lib/{libtermcap.so.2,libdl.so.2,libc.so.6,ld-linux.so.2} /chroot/newsyndrome/lib
Je sais que sur certaines distributions (des vieilles mdk essentiellement) si on copie uniquement ces libs tous les modules avec des sockets ne fonctionneront pas. Une solution possible est de copier toutes les libs du système dans le repertoire /chroot/newsyndrome/lib, de faire tourner le bot pendant une semaine puis de regarder les derniers accès au libs (à l'aide de find). Celle n'ayant pas été accédée pendant la semaine peuvent être supprimées.
7.) Quelques scripts, liens à ajouter :
$ touch /chroot/newsyndrome/var/log/
NewSyndrome.log
$ ln -s /chroot/newsyndrome/var/log/
NewSyndrome.log /chroot/newsyndrome/
NewSyndrome.log
Copiez et configurer selon vos besoin le fichier de configuration (
NewSyndrome.conf dans le repertoire /chroot/newsyndrome/conf ) :
$ cp
NewSyndrome.conf /chroot/newsyndrome/conf/
Il faut modifier le paramètre log_path pour le faire pointer vers /var/log/. Tous les logs de conversation sur les channels et en pv seront dans ce repertoire.
Si vous chooter un bot déjà en fonctionnement il vous foudra copier les bases admins et channels dans le repertoire /chroot/newsyndrome/conf/bases et recréez le fichier ns.lock :
$ cp bases/{admins,channels} /chroot/newsyndrome/conf/bases/
$ touch /chroot/newsyndrome/conf/ns.lock
Créez le script de lancement du bot (nous prenons l'option de ne pas modifier les variables d'environnement) :
$ cat > /chroot/newsyndrome/lance.sh << "EOF"
mount -vt proc proc /chroot/newsyndrome/proc
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib
chroot /chroot/newsyndrome/ /bin/
NewSyndrome --conf /conf/
NewSyndrome.conf -d
EOF
$ chmod u+x /chroot/newsyndrome/lance.sh
Changez le propriétaire et le groupe de tous les fichiers :
$ chown -R bot.bot *
"Setuidez" le binaire :
$ chow u+s /chroot/newsyndrome/bin/
NewSyndrome
Lancez le bot :
$ ./lance.sh
8.) Voilà c'est fini vous pouvez verifier que votre bot tourne bien sous l'utilisateur bot avec la commande :
$ ps -edf | grep bot qui devrait vous affichez une ligne proche de celle-ci : /bin/NewSyndrome --conf /conf/NewSyndrome.conf -d
Aide/Contacts :
N'hésitez pas à me contacter en cas de problèmes, questions, critiques, etc ...