Anstatt diese Angriffe lediglich zu blockieren, kann man sie auch beobachten. Genau dafür wurde Cowrie entwickelt.
Cowrie ist einer der bekanntesten Open-Source-Honeypots für Linux-Systeme. Er simuliert einen SSH- oder Telnet-Server und zeichnet sämtliche Aktivitäten von Angreifern auf. Dadurch erhält man wertvolle Informationen über verwendete Benutzernamen, Passwörter, Schadsoftware und typische Angriffsstrategien.
In diesem Beitrag zeige ich die Installation von Cowrie unter Debian 13 (Trixie), einschließlich der Einrichtung als Systemd-Dienst und dem Betrieb auf Port 22.
Was ist Cowrie?
Cowrie ist ein interaktiver Honeypot, der einen Linux-Server simuliert.
Ein Angreifer erhält den Eindruck, erfolgreich auf ein echtes System zuzugreifen, während sämtliche Aktionen protokolliert werden.
Cowrie zeichnet unter anderem auf:
- Login-Versuche
- Benutzernamen und Passwörter
- ausgeführte Befehle
- heruntergeladene Dateien
- komplette SSH-Sitzungen
- IP-Adressen
- Malware-Samples
Damit eignet sich Cowrie hervorragend für:
- Sicherheitsanalysen
- Forschung
- Incident Response
- Schulungszwecke
Voraussetzungen
Für die Installation werden benötigt:
- Debian 13 (Trixie)
- Root-Zugriff
- Ein bereits auf einen anderen Port verschobener produktiver SSH-Dienst
- Internetverbindung
Zunächst das System aktualisieren:
sudo apt update sudo apt upgrade -y
Benutzer anlegen
Cowrie sollte niemals als Root ausgeführt werden.
sudo adduser --disabled-password cowrie
Benötigte Pakete installieren
sudo apt install -y \ git \ python3 \ python3-venv \ python3-pip \ build-essential \ libssl-dev \ libffi-dev \ authbind
Cowrie herunterladen
Zum Cowrie-Benutzer wechseln:
sudo su - cowrie
Repository klonen:
git clone https://github.com/cowrie/cowrie.git cd cowrie
Virtuelle Python-Umgebung erstellen
python3 -m venv cowrie-env source cowrie-env/bin/activate
Paketmanager aktualisieren:
pip install --upgrade pip
Cowrie installieren:
pip install -e .
Konfigurationsdatei erstellen
Neuere Cowrie-Versionen speichern die Standardkonfiguration nicht mehr direkt im Verzeichnis etc.
Die Vorlage befindet sich unter:
src/cowrie/data/etc/cowrie.cfg.dist
Konfiguration erzeugen:
cp src/cowrie/data/etc/cowrie.cfg.dist etc/cowrie.cfg
SSH-Port konfigurieren
Datei öffnen:
nano etc/cowrie.cfg
Zum SSH-Abschnitt wechseln:
[ssh]
Dort den Port auf 22 setzen:
listen_endpoints = tcp:22:interface=0.0.0.0
Authbind für Port 22 einrichten
Da Cowrie nicht als Root läuft, darf es standardmäßig keine Ports kleiner 1024 öffnen.
Authbind löst dieses Problem.
Als Root:
sudo touch /etc/authbind/byport/22 sudo chown cowrie:cowrie /etc/authbind/byport/22 sudo chmod 500 /etc/authbind/byport/22
Kontrolle:
ls -l /etc/authbind/byport/22
Ausgabe:
-r-x------ 1 cowrie cowrie ...
Cowrie erstmals starten
Zurück zum Benutzer:
sudo su - cowrie cd ~/cowrie source cowrie-env/bin/activate
Starten:
authbind --deep cowrie start
Status prüfen:
cowrie status
Logs prüfen
Die wichtigsten Informationen befinden sich in:
tail -f ~/cowrie/var/log/cowrie/cowrie.log
Typische Ausgabe:
New connection: 192.168.1.10 login attempt [root/admin] login attempt [admin/password]
userdb.txt anlegen
Cowrie verwendet eine Datei namens userdb.txt, um festzulegen, welche Logins erfolgreich sein sollen.
Vorlage kopieren:
cp src/cowrie/data/etc/userdb.example etc/userdb.txt
Datei bearbeiten:
nano etc/userdb.txt
Beispiel:
root:x:* admin:x:* ubuntu:x:* debian:x:* pi:x:* postgres:x:* mysql:x:*
Das x bedeutet, dass jedes Passwort akzeptiert wird.
Dadurch gelangen Angreifer in die simulierte Umgebung und führen weitere Aktionen aus, die protokolliert werden.
Systemd-Dienst einrichten
Datei erstellen:
sudo nano /etc/systemd/system/cowrie.service
Inhalt:
[Unit] Description=Cowrie SSH/Telnet Honeypot After=network.target [Service] Type=forking User=cowrie Group=cowrie WorkingDirectory=/home/cowrie/cowrie Environment="PATH=/home/cowrie/cowrie/cowrie-env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ExecStart=/usr/bin/authbind --deep /home/cowrie/cowrie/cowrie-env/bin/cowrie start ExecStop=/home/cowrie/cowrie/cowrie-env/bin/cowrie stop ExecReload=/home/cowrie/cowrie/cowrie-env/bin/cowrie restart PIDFile=/home/cowrie/cowrie/var/run/cowrie.pid Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
Dienst aktivieren
sudo systemctl daemon-reload sudo systemctl enable cowrie sudo systemctl start cowrie
Status prüfen:
sudo systemctl status cowrie
Eine erfolgreiche Ausgabe enthält:
Active: active (running)
Überprüfen ob Cowrie auf Port 22 lauscht
sudo ss -tulpn | grep ':22 '
Beispiel:
LISTEN 0 50 0.0.0.0:22
Malware-Downloads speichern
Cowrie speichert heruntergeladene Dateien automatisch unter:
~/cowrie/var/lib/cowrie/downloads/
Dort finden sich häufig:
- Mirai-Botnet-Komponenten
- Kryptominer
- Bash-Skripte
- Downloader
- Schadsoftware
Diese Dateien sollten ausschließlich zu Analysezwecken verwendet werden.
Sitzungen aufzeichnen
Cowrie zeichnet komplette Terminal-Sitzungen auf.
Verzeichnis:
~/cowrie/var/lib/cowrie/tty/
Wiedergabe:
playlog <datei>
Dadurch lassen sich Angriffe später exakt nachvollziehen.
Cowrie gehört zu den leistungsfähigsten Open-Source-Honeypots für Linux-Systeme. Die Installation unter Debian 13 ist dank Python-Venv und Authbind unkompliziert möglich. Besonders interessant wird der Betrieb auf Port 22, nachdem der echte SSH-Dienst auf einen alternativen Port verschoben wurde.
Bereits nach kurzer Zeit sammeln sich hunderte Login-Versuche, automatisierte Botnet-Angriffe und Malware-Downloads an. Wer sich für IT-Sicherheit interessiert oder seine Infrastruktur besser verstehen möchte, erhält mit Cowrie einen faszinierenden Einblick in die tägliche Bedrohungslage des Internets.
Für den Blog würde ich zusätzlich noch einen Teaser, SEO-Titel, Meta-Beschreibung, Keywords sowie OG-Titel und OG-Beschreibung erstellen, damit der Beitrag direkt veröffentlicht werden kann.