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

Publié le 2 juillet 2025

Sécurité
Supervision
Honeypot

Un honeypot SSH permet de simuler un serveur vulnérable et d'attirer les attaquants afin d'analyser leurs tactiques. Cowrie, écrite 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 :

version: '3.7'
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
    restart: always

Lancez Cowrie :

docker-compose up -d

Centralisation des logs avec ELK

Déploiement de la stack ELK

Créer un dossier elk et un docker-compose.yml :

version: '3.7'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
    environment:
      - discovery.type=single-node
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata:/usr/share/elasticsearch/data

  logstash:
    image: docker.elastic.co/logstash/logstash:7.17.0
    volumes:
      - ./logstash/pipeline:/usr/share/logstash/pipeline

  kibana:
    image: docker.elastic.co/kibana/kibana:7.17.0
    ports:
      - "5601:5601"

volumes:
  esdata:

Configuration de Logstash pour Cowrie

Dans elk/logstash/pipeline/cowrie.conf :

input {
  file {
    path => "/opt/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.

Besoin d'aide sur ce sujet ?

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

Contactez-nous

Articles similaires qui pourraient vous intéresser