Déploiement¶
Comment déployer HYDRA sur un VPS public pour la capture d'attaquants réels.
Prérequis VPS¶
| Ressource | Minimum | Recommandé |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 1 Go | 2 Go |
| Disque | 10 Go | 20 Go |
| OS | Ubuntu 22.04+ | Ubuntu 24.04 |
| Réseau | IP publique, port 22 ou 2222 ouvert | IP dédiée |
HYDRA utilise l'API Groq pour l'inférence LLM — pas de GPU nécessaire sur le VPS.
Installation¶
1. Préparation du serveur¶
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip python3-venv -y
sudo useradd -m -s /bin/bash hydra
sudo su - hydra
2. Installer HYDRA¶
git clone https://github.com/grizzly2005/hydra-pdx.git
cd hydra-pdx/hydra-honeypot
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# Éditez .env avec votre clé API Groq
3. Configuration des ports¶
Ne remplacez pas le vrai SSH
Exécutez HYDRA sur le port 2222 et gardez le vrai SSH sur le port 22. N'exposez jamais votre SSH de management sur le même port que le honeypot.
# Option A : Exécuter sur le port 2222 directement
SSH_PORT=2222
# Option B : Utiliser iptables pour rediriger 22 → 2222
# (déplacez d'abord le vrai SSH sur un autre port !)
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
4. Exécuter comme service¶
Créez /etc/systemd/system/hydra.service :
[Unit]
Description=HYDRA SSH Honeypot
After=network.target
[Service]
Type=simple
User=hydra
WorkingDirectory=/home/hydra/hydra-pdx/hydra-honeypot
ExecStart=/home/hydra/hydra-pdx/hydra-honeypot/venv/bin/python src/main.py
Restart=always
RestartSec=10
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
5. Tunnel Cloudflare (optionnel)¶
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x cloudflared
sudo mv cloudflared /usr/local/bin/
cloudflared tunnel create hydra
cloudflared tunnel route dns hydra ssh.votredomaine.com
cloudflared tunnel run hydra
6. Variables d'environnement¶
Les UIs (hydra_ui.py) et le launcher unifié (launcher.py) lisent leur configuration de déploiement depuis des variables d'environnement, pour ne rien coder en dur dans le code.
| Variable | Défaut | Rôle |
|---|---|---|
HYDRA_VPS_IP | 127.0.0.1 | IP publique ou DNS de ton instance HYDRA |
HYDRA_VPS_USER | hydra | Utilisateur SSH sur le VPS |
HYDRA_VPS_PATH | /home/$HYDRA_VPS_USER/hydra | Chemin absolu de l'install HYDRA sur le VPS |
GROQ_API_KEYS | (aucune) | Clés Groq séparées par des virgules |
Recommandé : fichier .env
Crée un .env à la racine du repo (gitignoré par défaut) :
HYDRA_VPS_IP=1.2.3.4
HYDRA_VPS_USER=hydra
HYDRA_VPS_PATH=/home/hydra/hydra
GROQ_API_KEYS=gsk_xxx,gsk_yyy
Source-le avant de lancer le UI ou le launcher :
Wrappers pratiques
Pour éviter de sourcer à chaque fois :
cat > run-ui.sh << 'EOF'
#!/bin/bash
cd "$(dirname "$0")"
set -a; [ -f .env ] && source .env; set +a
exec python3 hydra_ui.py "$@"
EOF
chmod +x run-ui.sh
Pareil pour run-launcher.sh avec launcher.py. Ensuite, juste ./run-ui.sh ou ./run-launcher.sh sync download.
Warning
Ne commit jamais le .env. Il est dans .gitignore par défaut.
Collecte des données¶
# Depuis votre machine locale
rsync -avz hydra@votre-vps:/home/hydra/hydra-pdx/hydra-honeypot/logs/ ./logs/
# Traiter avec PDX
cd pdx
python -m pdx.training.data_router split --logs-dir ../logs
python -m pdx.training.data_router generate --all
Considérations de sécurité¶
Divulgation éthique
Tous les credentials leurres (clés AWS, keypairs Solana, mots de passe de base de données) sont fictifs et non fonctionnels. Ils ne peuvent être utilisés pour accéder à aucun système réel. C'est obligatoire pour une opération responsable de honeypot.
- Ne stockez jamais de vrais credentials dans les fichiers de persona
- Changez régulièrement les clés API Groq
- Surveillez l'utilisation des ressources du VPS (coûts API LLM)
- Gardez le port SSH de management réel protégé par firewall vers votre IP uniquement