Aller au contenu

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
sudo systemctl enable hydra
sudo systemctl start hydra
sudo systemctl status hydra

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 :

set -a; source .env; set +a
python3 hydra_ui.py
# ou
python3 launcher.py

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