Installeur Honeypot SSH + HTTP (Docker + Systemd) – 2025
Ce script Bash interactif permet de configurer automatiquement un environnement de honeypot sécurisé et dockerisé, incluant :
- Déplacement du vrai serveur SSH vers le port
2200 - Redirection du port 22 vers un faux serveur SSH (honeypot)
- Déploiement du honeypot SSH/HTTP dans Docker
- Intégration systemd (optionnelle) pour lancement automatique
- Logs & analyse IP centralisés
Ce script est destiné à des utilisateurs avancés ayant un accès root à leur serveur.
Fonctionnalités du script
Sécurisation du SSH :
- Déplacement du SSH vers le port
2200 - Option de désactivation des connexions par mot de passe (clé SSH obligatoire)
- Vérification que la connexion SSH sur le nouveau port fonctionne avant de modifier les règles
- Configuration de iptables pour rediriger le port
22vers un honeypot (2222par défaut)
Déploiement Docker du Honeypot :
- Vérifie et installe :
DockerDocker Compose
- Monte un conteneur avec :
- Un faux serveur SSH (
honeypot_ssh.py) - Un faux serveur HTTP (
honeypot_http.py)
- Un faux serveur SSH (
- Analyse les IPs avec
analyse_ip.pyet génère un fichiermalicious_ips.json - Création des dossiers :
logs/rapports/
Intégration systemd (optionnelle) :
- Création d’un service
honeypot.service - Lancement automatique au démarrage
Lancement du script :
chmod +x install_honeypot.sh
./install_honeypot.sh
Le script vous posera des questions interactives à chaque étape critique (déplacement SSH, installation Docker, etc.).
Pré-requis :
> Serveur Debian/Ubuntu avec accès root (sudo)
> Connexion SSH fonctionnelle
> Port 2200 libre (ou un autre pour SSH réel)
Le projet contient :
> docker-compose.yml
>Un dossier app/ avec les fichiers :
> main.py
> honeypot_ssh.py
> honeypot_http.py
> analyse_ip.py
> requirements.txt
Intégration avec AbuseIPDB (API de détection d’IP malveillantes) :
Le honeypot peut automatiquement interroger et signaler les IPs malveillantes en utilisant l’API AbuseIPDB
Fonctionnalités :
> Analyse en temps réel des IPs détectées par le honeypot
> Calcul du niveau de dangerosité (abuseConfidenceScore)
> Sauvegarde des IPs dangereuses dans : rapports/malicious_ips.jsonl
> Signalement automatique à AbuseIPDB via l’API /report
Configuration requise
Pour activer cette intégration, il faut :
> Créer un compte sur AbuseIPDB.com
> Récupérer votre clé API personnelle
> Définir la variable d’environnement suivante : export ABUSEIPDB_API_KEY="votre_cle_api_ici"
Ajoutez cette ligne à votre ~/.bashrc ou ~/.zshrc pour la rendre permanente :
echo 'export ABUSEIPDB_API_KEY="votre_cle_api_ici"' >> ~/.bashrc
source ~/.bashrc
Fichiers concernés :
> app/rapport.py — Génère un rapport CSV à partir des données JSON
> Autres scripts utilisant la fonction analyze_ip() (ex. honeypot_ssh.py, main.py, etc.)
Score de confiance
Le honeypot considère une IP comme dangereuse si son score est supérieur à 50 :
Score Interprétation
0-50 IP probablement bénigne
51-100 IP potentiellement malveillante
Exemple de ligne dans malicious_ips.jsonl :
{
"ipAddress": "203.0.113.42",
"abuseConfidenceScore": 89,
"countryCode": "RU",
"isp": "MaliciousHoster",
"domain": "evil.example.com"
}
Remarques :
> Ne publiez jamais votre clé API dans un dépôt public
> L’API a des limites selon votre plan (gratuit ou payant)
> En cas d'erreur API, le script affiche un message clair
Arborescence :
.
├── install_honeypot.sh # Script d'installation principal
├── docker-compose.yml # Configuration Docker du honeypot
├── logs/ # Dossier où sont stockés les logs du honeypot
├── rapports/ # Dossier des rapports IP (JSONL + CSV)
│ ├── malicious_ips.jsonl # IPs malveillantes détectées (brut)
│ └── malicious_ips_report.csv # Rapport CSV analysé depuis le JSONL
├── app/ # Code source Python du honeypot
│ ├── main.py # Lanceur principal du honeypot
│ ├── honeypot_ssh.py # Faux serveur SSH
│ ├── honeypot_http.py # Faux serveur HTTP
│ ├── analyse_ip.py # (Ancien nom) Analyse IP - (optionnel)
│ └── rapport.py # Script de génération de rapport CSV
└── README.md # Documentation du projet
Résultat attendu après exécution :
> SSH réel accessible via : ssh -p 2200 utilisateur@ip
> Honeypot SSH actif sur le port 22 (redirigé vers 2222 par défaut)
> Honeypot HTTP actif sur : http://localhost:8080
> Logs dans ./logs/
> IPs malveillantes dans ./rapports/malicious_ips.json
> Conteneur Docker actif nommé honeypot
_____________________________________________
>>> Génération de rapports d'IPs malveillantes (rapport.py)
Ce script Python optionnel permet d’analyser les IPs enregistrées par le honeypot et de produire un rapport CSV filtré et trié selon leur score de dangerosité.
Fonctionnalités :
- Lecture du fichier rapports/malicious_ips.jsonl
- Tri des IPs selon leur abuseConfidenceScore (seuil configurable)
- Ignorer les IPs peu suspectes (score ≤ 50 par défaut)
- Génération d’un rapport CSV lisible : rapports/malicious_ips_report.csv
- Affichage des IPs à risque directement dans le terminal
> Exécution manuelle: python3 app/rapport.py
Assure-toi que le fichier malicious_ips.jsonl existe et contient des lignes valides au format JSON.
Fichier de sortie :
> Chemin : rapports/malicious_ips_report.csv
> Colonnes :
> ipAddress
> abuseConfidenceScore
> countryCode
> usageType
> isp
> domain
Exemple de sortie terminal :
Rapport - IPs malveillantes détectées : 89
IPs à risque (score > 50) : 12
IP : 45.33.32.156 | Score : 100 | Pays : US
IP : 103.21.244.0 | Score : 85 | Pays : IN
Rapport CSV exporté vers : rapports/malicious_ips_report.csv
Automatisation possible (optionnelle) :
Tu peux automatiser ce rapport :
> Via une tâche cron pour une exécution quotidienne
> Ou avec un timer systemd si tu veux éviter cron
Auteur: Herve-mtp