
Mittelinteraktiver SSH/Telnet-Honeypot, erstellt mit Cowrie, Loki, Promtail und Grafana – bereitgestellt auf DigitalOcean über Terraform mit einer GitLab CI Validierungspipeline.
Ein SSH/Telnet-Honeypot-Stapel, der mithilfe von Terraform auf einem DigitalOcean-Droplet bereitgestellt wird. Angriffe werden von Cowrie erfasst, in Loki gespeichert und in Grafana mit einer Live-Weltkarte der Angriffsursprünge visualisiert.
honeypot/
├── cowrie/
│ └── etc/
│ ├── cowrie.cfg # Cowrie honeypot configuration
│ └── userdb.txt # Accepted and rejected fake credentials
├── geoip/
│ └── .gitkeep # Placeholder - MMDB files are gitignored
├── grafana/
│ ├── provisioning/
│ │ ├── dashboards/
│ │ │ ├── dashboards.yml # Provisioning: dashboard provider
│ │ │ └── honeypot-dashboard.json # Pre-built Attack Monitor dashboard
│ │ └── datasources/
│ │ └── loki.yml # Auto-provisioned Loki datasource
│ └── grafana.ini # Grafana server settings
├── loki/
│ └── config.yml # Loki single-binary config and retention
├── promtail/
│ └── config.yml # Promtail scrape and GeoIP pipeline
├── scripts/
│ ├── geoip-update.sh # Download or refresh GeoIP database
│ └── setup-firewall.sh # Host UFW rules for honeypot ports
├── terraform/
│ ├── templates/
│ │ ├── cloud-init.yaml.tftpl # Droplet first-boot script (Terraform-templated)
│ │ └── env.tftpl # .env lines embedded via Terraform
│ ├── backend.tf # Terraform backend config
│ ├── main.tf # Droplet, SSH key, firewall, cloud-init
│ ├── outputs.tf # IPs and helpful post-apply values
│ ├── terraform.tfvars.example # Example variable values (copy to terraform.tfvars)
│ ├── variables.tf # Terraform input variables
│ └── versions.tf # Terraform and provider version constraints
├── .env.example # Example environment file for manual setup
├── .gitignore # Ignored paths and files
├── .gitlab-ci.yml # CI/CD pipeline: fmt, validate, Checkov
├── docker-compose.yml # Docker Compose file for the honeypot stack
├── LICENSE # GPLv2 license
├── manual-deployment.sh # Legacy VM bootstrap without Terraform
└── README.md # Project documentation
## Hardware-Anforderungen
> Hinweis: Diese Anforderungen basieren auf dem DigitalOcean Basic Droplet-Plan vom Mai 2026 und sind die Mindestanforderungen für den Betrieb des Projekts.
- Provider: DigitalOcean
- Plan: Basic Droplet - 1 Intel vCPU
- RAM: 1 GB (+2 GB Swap)
- Storage: 35 GB NVMe SSD
- OS: Ubuntu 24.04 LTS
## Installation & Einrichtung
>Hinweis: Nach der Installation wird empfohlen, ein neues Terminal zu öffnen und zu überprüfen, ob Sie sich weiterhin über SSH auf `ADMIN_SSH_PORT` (Standard: 2022) anmelden können, bevor Sie Ihre ursprüngliche Sitzung schließen.
### Terraform-Bereitstellung (Empfohlen)
1. Erstellen Sie einen DigitalOcean-API-Token mit Lese-/Schreibberechtigungen:
- Melden Sie sich bei DigitalOcean an und navigieren Sie zu Account > API > Tokens > Generate New Token.
- Benennen Sie Ihren Token (z. B. „Cowrie Honeypot“) und wählen Sie die Berechtigung „Full Access“ aus.
- Klicken Sie auf „Generate Token“ und kopieren Sie den Token-Wert an einen sicheren Ort (Sie werden ihn nicht wieder sehen können).
2. Erstellen Sie ein SSH-Schlüsselpaar auf Ihrem lokalen Rechner und kopieren Sie den Pfad des öffentlichen Schlüssels.
3. Wechseln Sie in das Verzeichnis `terraform`, kopieren Sie dann die Variablendatei und bearbeiten Sie sie:
> Hinweis: `do_token`, `ssh_public_key_path` und `grafana_admin_password` müssen mindestens in `terraform.tfvars` konfiguriert werden, bevor `apply` ausgeführt wird.```bash
cd terraform
cp terraform.tfvars.example terraform.tfvars
Hinweis: Terraform muss auf Ihrem lokalen Rechner installiert sein. Besuchen Sie die Terraform Installationsanleitung für Anweisungen.```bash terraform init # Initialize Terraform and download providers terraform apply
5. Falls Testen - Redeploy mit Ersatz:```bash
terraform apply -replace="digitalocean_droplet.honeypot"
### Manuelle Bereitstellung (Legacy)
1. Erstellen Sie einen DigitalOcean-Droplet mit den oben genannten Hardwareanforderungen und Ihrem SSH-Schlüssel.
2. SSH in den Droplet oder verwenden Sie die DigitalOcean-Webkonsole und führen Sie die folgenden Befehle aus:```bash
ssh root@<your-droplet-ip> # If using DigitalOcean web console, skip this command
git clone https://gitlab.com/Oseguera12/cowrie-honeypot-digitalocean.git /opt/honeypot
cd /opt/honeypot
cp .env.example .env
nano .env
bash manual-deployment.sh
Hinweis: Standardmäßig schreibt Terraform den Zustand in
terraform/terraform.tfstateauf Ihrem lokalen Rechner. Diese Datei enthält sensible Ausgabewerte (Droplet-IP, Grafana-Passwort, SSH-Schlüssel-Fingerabdruck) und darf niemals committet werden..gitignoredeckt*.tfstateund*.tfstate.*ab.
Risiken des lokalen Zustands:
apply können die Datei beschädigenFür alles, das über ein persönliches Labor hinausgeht, wechseln Sie zu einem entfernten Backend. terraform/backend.tf enthält eine auskommentierte DigitalOcean Spaces-Konfiguration (S3-kompatibel).
Um das entfernte Backend zu aktivieren: