Mise en place d’un Honeypot SSH à domicile (kippo)

L’Honeypot SSH qui a été mis en place est Kippo.

Pourquoi choisir kippo ?

  • écrit en python
  • moyenne interaction avec l’attaquant.
  • possibilité d’ajouter des fonctions pour encore plus d’interaction !
  • une petite communauté derrière assez sympa !

Le Système hôte est mon serveur personnel; celui-ci est basé sur OpenBSD. Pour mes épreuves de BTS, j’avais déjà mis en place un Honeypot. Celui-ci avait tourné plus de 2mois. Après une nouvelle configuration sur mon serveur, je n’avais pas remis en place l’Honeypot. Cependant, je gardais les IP bannis soit 1379 en 10 mois, pour un serveur personnel n’hébergeant rien de particulier je trouve ça assez conséquent.

Installation des dépendances :

pkg_add -i subversion apr-util cyrus-sasl py-twisted-core py-twisted-conch py-asn1 py-twisted-web py-mysql

Une fois les dépendances installées, on récupère Kippo.

svn checkout http://kippo.googlecode.com/svn/trunk/ honeypots/

Kippo n’étant pas configuré au départ, il faut renommer son fichier de configuration :

mv kippo.cfg.dist kippo.cfg

Pour l’instant, dans ce fichier nous changeons le nom de la machine visible par l’attaquant. (hostname = simple)

De plus, on peut changer le port de l’honeypot, par défaut, port 2222.

Si on désire mettre le port 22, qui est le port SSH par défaut, il faut exécuter kippo en root… ou simplement rediriger le port 22 vers le port 2222 avec packet-filter. C’est cette option que nous allons adopter pour son élégance.

Éditons le fichier de configuration packet-filter :

pass in quick on $ext proto tcp from any to ($ext) port 22 rdr-to ($ext) port 2222

$ext correspond a mon interface réseau.

Après cette étape, si on désire on peut déja rendre disponible Kippo :

start.sh

Cependant, nous allons mettre en place une base de données MySQL afin de réaliser des statistiques sur les différentes attaques.

create database kippo;

use kippo;

source honeypot/doc/sql/mysql.sql

Créer l’utilisateur avec le minimum de droit (SELECT, INSERT, UPDATE) :

GRANT SELECT, INSERT, UPDATE ON kippo.* TO ‘kippo’@’localhost’ IDENTIFIED BY ‘mot de passe’;

La base de données étant configurée, modifier les lignes dans le fichier de configuration de Kippo afin que celui-ci utilise la base MySQL.

 [database_mysql]

host = IP Du Serveur MySQL

database = kippo

username = kippo

password = mot de passe

De plus, on peut modifier le fichier de configuration :

sensor_name=serveurMaison

Afin que dans la base de données, on puisse apercevoir le nom de l’honeypot utilisé. Cela peut être utile, si un jour on décide d’ajouter un autre kippo sur un autre serveur SSH. Il faudra juste configurer la base de données !

Démarrons Kippo est attendons les attaques !

$ tail -f log/kippo.log
2012-05-05 17:54:11+0200 [-] Log opened.
2012-05-05 17:54:11+0200 [-] twistd 11.0.0 (/usr/local/bin/python2.7 2.7.1) starting up.
2012-05-05 17:54:11+0200 [-] reactor class: twisted.internet.selectreactor.SelectReactor.
2012-05-05 17:54:11+0200 [-] kippo.core.honeypot.HoneyPotSSHFactory starting on 2222
2012-05-05 17:54:11+0200 [-] Starting factory <kippo.core.honeypot.HoneyPotSSHFactory instance at 0x84e3e46c>

En attendant voici un aperçu des différents répertoires de kippo :

  • dl : Fichiers téléchargés par les attaquants (wget).
  • log/kippo.log : Permet de debugger en cas de problème ou de voir en direct les attaques.
  • log/tty : Répertoire contenant les différentes sessions des attaquants. Possible de le visionner avec : utils/playlog.py
  • honeyfs : Contient les différents fichiers pour le fakesystem !

 

It’s over simple, isn’t it?