Monitoring
Sécurité

Mettre en place un honeypot SSH avancé avec Cowrie et ELK

2 juillet 2025

3 min de lecture

Un honeypot SSH permet de simuler un serveur vulnérable et d'attirer les attaquants afin d'analyser leurs tactiques. Cowrie, écrit en Python, offre un honeypot SSH/Telnet complet, tandis que la stack ELK (Elasticsearch, Logstash, Kibana) permet de centraliser et visualiser 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

  1. Accédez à http://<IP_SERVEUR>:5601
  2. Créez un index pattern cowrie-*
  3. Explorez les données sous Discover
  4. Créez des dashboards pour suivre tentatives de connexion, commandes exécutées, IP sources

Conclusion

Avec Cowrie et la stack ELK, vous disposez d'un honeypot SSH performant, capable de collecter et visualiser les tactiques des attaquants en temps réel. C'est un outil essentiel pour renforcer votre posture sécurité et comprendre les menaces.

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.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets d'infrastructure et d'infogérance.

Contactez-nous

Articles similaires