Linux Security

Cowrie unter Debian 13 installieren – Einen SSH-Honeypot auf Port 22 betreiben

Wer einen Server direkt mit dem Internet verbindet, stellt schnell fest: Die ersten Login-Versuche lassen meist nicht lange auf sich warten. Bots scannen kontinuierlich das Internet nach offenen SSH-Diensten und versuchen automatisiert Standardpasswörter oder bekannte Zugangsdaten.

3 min Lesezeit
Grafik: Cowrie unter Debian 13 installieren und sicher betreiben

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.