Sacrés chinois !
Le serveur Linux qui héberge le domaine burdet.cc, est protégé par SSHGuard depuis son installation. Ayant le port SSH ouvert sur Internet, il subit un pillonage quotidien de tentatives d’intrusion.
SSHGuard est un service qui surveille les logs d’authentification SSH et qui détecte les adresses IP ayant un comportement s’apparentant à une tentative d’intrusion. Les IP au comportement suspect sont d’abord bannies quelques minutes automatiquement par une règle de firewall, puis de plus en plus longtemps. Les plus assidus se retrouvent dans une liste noire.
De quel pays viennent en priorité les IP en liste noir ?
Cet article propose d’y répondre … et pour ceux n’ayant pas le temps de lire jusqu’au bout, un indice se trouve dans le titre !
La solution proposée se base sur un script en Python (librairies Pandas et matplotlib) et un peu de plomberie Git, que l’on va exécuter sur une machine Linux, en l’occurence Arch Linux.
Création de la source de données
Pour publier les données du log des adresses IP black-listées en provenance du serveur de manière sécurisée, je vais utiliser le repository Git du présent blog pour y créer une branche Git orpheline dédiée. Une tâche quotidienne sur le serveur mettra à jour le repository avec la donnée source.
La configuration a lieu sur le serveur, dans le compte d’un user disposant des droits d’accès au repository Git ainsi que des droits en lecture sur /var/db/sshguard/blacklist.db
Mise en place interactive initiale :
Ensuite, sur le serveur, je lance un cron job quotidiennement :
Du coup, le fichier de données contenant les IP actuellement bloquées est atteignable depuis https://dev.burdet.cc/git/jfburdet/blog/raw/stats_orion/ssh/blacklist.txt et quotidiennement mise à jour. C’est merveilleux.
Génération des statistiques
De retour sur un PC de développement (le vôtre par exemple) on va pouvoir consommer les données disponibles depuis l’URL sus-mentionnée. Premièrement on s’assure que les packages système nécessaires soient présents:
Puis on crée un répertoire de travail dans ~tmp, et on y configure un environnement python3 avec les packages nécessaires :
Cela lance le navigateur pour afficher iPython, on crée un nouveau notebook python3 et on colle le code suivant dedans :
On exécute la cellule du notebook iPython (ctrl-enter) et on obtient :
Sacrés chinois !