Un honeypot SSH simule un serveur vulnérable et attire les attaquants pour analyser leurs tactiques. Cowrie, écrit en Python, expose un honeypot SSH/Telnet, tandis que la stack ELK (Elasticsearch, Logstash, Kibana) centralise et visualise les logs pour une réponse rapide.
Prérequis
- Serveur Linux (Debian, Ubuntu, Rocky, AlmaLinux) dédié
- Docker et Docker Compose installés
- 4 GB RAM minimum
- Accès root ou sudo
Déploiement de Cowrie en Docker
Clonage du dépôt officiel
git clone https://github.com/cowrie/cowrie.git /opt/cowrie
cd /opt/cowrie
Configuration de base
Copiez le fichier de configuration exemple :
cp etc/cowrie.cfg.dist etc/cowrie.cfg
Éditez etc/cowrie.cfg pour ajuster :
[ssh]port (par défaut 2222)- chemin des logs (par défaut
var/log/cowrie)
Déploiement via Docker Compose
Créez un fichier docker-compose.yml :
services:
cowrie:
image: cowrie/cowrie:latest
container_name: cowrie
ports:
- '2222:2222'
volumes:
- ./etc:/cowrie/etc
- ./var/lib/cowrie:/cowrie/var/lib/cowrie
- ./var/log/cowrie:/cowrie/var/log/cowrie
- cowrie_logs:/cowrie/var/log/cowrie
restart: always
Lancez Cowrie :
docker compose up -d
Redirection du port SSH (port 22)
Pour que les attaquants accèdent au honeypot sur le port SSH standard, redirigez le port 22 vers le port 2222 de Cowrie :
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222 -i eth0
Rendez la redirection persistante avec iptables-persistent :
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
Centralisation des logs avec ELK
Déploiement de la stack ELK
Créer un dossier elk et un docker-compose.yml :
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.13.0
environment:
- discovery.type=single-node
- xpack.security.enabled=false
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata:/usr/share/elasticsearch/data
logstash:
image: docker.elastic.co/logstash/logstash:8.13.0
volumes:
- ./logstash/pipeline:/usr/share/logstash/pipeline
- cowrie_logs:/cowrie/var/log/cowrie
kibana:
image: docker.elastic.co/kibana/kibana:8.13.0
ports:
- '5601:5601'
volumes:
esdata:
cowrie_logs:
Configuration de Logstash pour Cowrie
Dans elk/logstash/pipeline/cowrie.conf :
input {
file {
path => "/cowrie/var/log/cowrie/cowrie.json"
start_position => "beginning"
sincedb_path => "/dev/null"
codec => "json"
}
}
filter {
date { match => ["timestamp", "ISO8601"] }
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "cowrie-%{+YYYY.MM.dd}"
}
}
Lancer la stack
cd elk
docker compose up -d
Visualisation dans Kibana
- Accédez à
http://<IP_SERVEUR>:5601 - Créez un index pattern
cowrie-* - Explorez les données sous Discover
- Créez des dashboards pour suivre tentatives de connexion, commandes exécutées, IP sources
Conclusion
Avec Cowrie et la stack ELK, vous obtenez un honeypot SSH instrumenté, capable de collecter et visualiser les tactiques des attaquants en temps réel. De quoi durcir votre posture sécurité et comprendre les menaces qui frappent réellement vos serveurs.
Pour une véritable protection, combinez avec SSH sécurisé, CrowdSec pour le blocage automatique, ou redirigez le port 22 vers Cowrie avec iptables/nftables.


