
Ressourcenschonender Honeypot, der gängige Netzwerkdienste emuliert, um Angreiferaktivitäten nach einem Einbruch zu erkennen, mit erweiterbaren Protokollmodulen und konfigurierbarer Alarmierung.
OpenCanary ist ein Netzwerk-Honeypot mit mehreren Protokollen. Sein primärer Einsatzzweck ist es, Hacker zu fangen, nachdem sie in nicht-öffentliche Netzwerke eingedrungen sind. Er hat extrem geringe Ressourcenanforderungen und kann angepasst, modifiziert und erweitert werden.
OpenCanary läuft als Daemon und implementiert mehrere gängige Netzwerkprotokolle. Wenn Angreifer in Netzwerke eindringen und mit dem Honeypot interagieren, sendet OpenCanary Ihnen über verschiedene Mechanismen Alarme.
OpenCanary ist in Python implementiert, daher ist der Kern-Honeypot plattformübergreifend; einige Funktionen erfordern jedoch bestimmte Betriebssysteme. Der Betrieb unter Linux bietet Ihnen die meisten Optionen. Er hat extrem geringe Ressourcenanforderungen; zum Beispiel lässt er sich problemlos auf einem Raspberry Pi oder einer VM mit minimalen Ressourcen bereitstellen.
Diese README beschreibt, wie OpenCanary unter Ubuntu Linux und macOS installiert und konfiguriert wird.
OpenCanary ist die Open-Source-Version unseres kommerziellen Thinkst Canary Honeypots.
Die Installation von OpenCanary umfasst im Wesentlichen die Vorbereitung der Python-Umgebung und anschließend die Installation des OpenCanary-Python-Pakets (plus optionaler Zusätze).
Wenn uv installiert ist, können Sie es zur Erstellung der virtuellen Umgebung und zur Paketinstallation verwenden. Falls es nicht installiert ist, funktioniert der unten beschriebene Standardablauf mit python/pip weiterhin.
Installation unter Ubuntu 22.04 LTS oder 24.04 LTS:
$ sudo apt-get install python3-dev python3-pip python3-virtualenv python3-venv python3-scapy libssl-dev libpcap-dev
$ virtualenv env/
$ . env/bin/activate
$ pip install opencanary
Optional mit uv:
$ uv venv env
$ . env/bin/activate
$ uv pip install opencanary
Optionale Zusatzpakete (falls Sie das Windows-Dateifreigabe-Modul und das SNMP-Modul verwenden möchten):
$ sudo apt install samba # if you plan to use the Windows File Share module
$ pip install scapy pcapy-ng # if you plan to use the SNMP module
Erstellen und aktivieren Sie zunächst eine neue virtuelle Python-Umgebung:
$ virtualenv env/
$ . env/bin/activate
Optional mit uv:
$ uv venv env
$ . env/bin/activate
Macports-Benutzer sollten anschließend Folgendes ausführen:
$ sudo port install openssl
$ env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include" pip install cryptography
Alternativ führen Homebrew-x86-Benutzer Folgendes aus:
$ brew install openssl
$ env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptography
Homebrew-M1-Benutzer führen Folgendes aus:
$ brew install openssl
$ env ARCHFLAGS="-arch arm64" LDFLAGS="-L/opt/homebrew/opt/[email protected]/lib" CFLAGS="-I/opt/homebrew/opt/[email protected]/include" pip install cryptography
(Der obige Kompilierungsschritt ist notwendig, da mehrere OpenSSL-Versionen vorhanden sein können, die die Python-Bibliotheken durcheinanderbringen können.)
Nun kann die Installation wie gewohnt ausgeführt werden:
$ pip install opencanary
$ pip install scapy pcapy-ng # optional
Mit installiertem uv lauten die entsprechenden Befehle:
$ uv pip install opencanary
$ uv pip install scapy pcapy-ng # optional
Das Windows-Dateifreigabe-Modul (smb) ist unter macOS nicht verfügbar.
Um aus dem Quellcode zu installieren, führen Sie anstelle von pip Folgendes aus:
$ git clone https://github.com/thinkst/opencanary
$ cd opencanary
$ python setup.py sdist
$ cd dist
$ pip install opencanary-<version>.tar.gz
Mit installiertem uv können Sie den letzten Installationsschritt wie folgt ersetzen:
$ uv pip install opencanary-<version>.tar.gz
OpenCanary ist über pkgx paketiert. Wenn pkgx installiert ist, ist keine Installation erforderlich; stellen Sie einfach dem Befehl opencanaryd ein pkgx voran. Aufgrund der Schutzmechanismen für Umgebungsvariablen in modernen sudo-Implementierungen muss der gesamte Befehl als root oder über sudo -E ausgeführt werden.
$ pkgx opencanaryd --version
OpenCanary-Docker-Images werden auf Docker Hub gehostet. Sie sind nur auf Linux-Docker-Hosts nützlich, da für genaue Netzwerkinformationen die host-Netzwerk-Engine erforderlich ist.
Wenn OpenCanary startet, sucht es in den folgenden Verzeichnissen nach Konfigurationsdateien und beendet die Suche, sobald die erste Konfiguration gefunden wird:
/etc/opencanaryd/opencanary.conf~/.opencanary.conf (d. h. das Benutzerverzeichnis des Benutzers, normalerweise root, also /root/.opencanary.conf)./opencanary.conf (d. h. das Verzeichnis, in dem OpenCanary installiert ist)Um eine initiale Konfiguration zu erstellen, führen Sie den folgenden Befehl als root aus (möglicherweise werden Sie nach einem sudo-Passwort gefragt):
$ opencanaryd --copyconfig
[*] A sample config file is ready /etc/opencanaryd/opencanary.conf
[*] Edit your configuration, then launch with "opencanaryd --start --uid=nobody --gid=nogroup"
Dadurch werden der Pfad und die Datei /etc/opencanaryd/opencanary.conf erstellt. Sie müssen nun die Konfigurationsdatei bearbeiten, um festzulegen, welche Dienste und Protokollierungsoptionen Sie aktivieren möchten.
[!WARNING] Die Konfigurationsdatei enthält komplexe Daten, einschließlich Python-Objekten für die Protokollierungskonfiguration. Die Konfiguration wird gelesen, während der Prozess mit Root-Berechtigungen läuft. Wir empfehlen, die Datei im Besitz von root zu belassen und nur für root beschreibbar zu machen. Wenn normale Benutzer die Datei schreiben können, ist eine Privilege-Escalation zu root möglich.
Die Konfiguration erfolgt über die JSON-Konfigurationsdatei. Bearbeiten Sie die Datei und speichern und schließen Sie sie, wenn Sie zufrieden sind.
Das snmp-Modul ist nur verfügbar, wenn Scapy vorhanden ist. Siehe die Installationsschritte für SNMP oben.
Das portscan-Modul ist nur auf Linux-Hosts verfügbar, da es iptables-Regeln modifiziert.
Bitte beachten Sie, dass wir für den Portscan-Dienst eine Einstellung portscan.ignore_localhost hinzugefügt haben. Das bedeutet, dass der OpenCanary-portscan-Dienst Portscans ignoriert (keinen Alarm auslöst), die von der Localhost-IP (127.0.0.1) ausgehen. Diese Einstellung ist standardmäßig deaktiviert.
Das Windows-Dateifreigabe-Modul (smb) erfordert eine Samba-Installation. Eine Schritt-für-Schritt-Anleitung finden Sie im Wiki.
OpenCanary wird entweder direkt auf einem Linux- oder macOS-Host oder über einen Docker-Container ausgeführt.
Starten Sie OpenCanary mit dem folgenden Befehl:
$ . env/bin/activate
$ opencanaryd --start --uid=nobody --gid=nogroup
Mit den Flags uid und gid gibt OpenCanary die Root-Berechtigungen nach dem Binden an seine Ports auf. Dies kann auf einen anderen Benutzer/eine andere Gruppe mit niedrigen Berechtigungen geändert oder weggelassen werden, um weiterhin mit Root-Berechtigungen zu laufen.
Starten Sie OpenCanary mit dem folgenden Befehl:
$ sudo -E pkgx opencanaryd --start --uid=nobody --gid=nogroup
Mit den Flags uid und gid gibt OpenCanary die Root-Berechtigungen nach dem Binden an seine Ports auf. Dies kann auf einen anderen Benutzer/eine andere Gruppe mit niedrigen Berechtigungen geändert oder weggelassen werden, um weiterhin mit Root-Berechtigungen zu laufen.
Für diesen Weg müssen Docker und Docker Compose installiert sein.
Hinweis Das Portscan-Modul wird bei dockerisiertem OpenCanary automatisch deaktiviert.
data/.opencanary.conf, um die Dienste, die ausgeführt werden sollen, zu aktivieren, zu deaktivieren oder anzupassen.ports in der Datei docker-compose.yml, um die gewünschten Ports basierend auf den in der Konfigurationsdatei aktivierten Diensten zu aktivieren/deaktivieren.docker compose up latest
Um die Logs anzusehen, führen Sie docker compose logs latest aus.
Um den Container zu stoppen, führen Sie docker compose down aus.
Um Ihr eigenes Docker-OpenCanary mit docker compose zu erstellen, besuchen Sie unser Wiki.
Für alles rund um dockerisiertes OpenCanary besuchen Sie bitte unser dediziertes Docker-Wiki.
Bitte besuchen Sie unser gegabeltes Repository für eine Ansible-OpenCanary-Rolle hier.
Wir freuen uns über PRs für dieses Projekt. Bitte lesen Sie vor dem Einreichen eines Pull Requests unsere Dokumente Code of Conduct und Contributing.
Mindestens sollten Sie vor dem Einreichen des PR pre-commit ausführen. Installieren und führen Sie es in derselben Python-Umgebung aus, in der OpenCanary installiert ist:
$ pip install pre-commit
$ pre-commit install
# Do work
$ git add file
$ git commit
# If pre-commit generated errors, then run "git add ... && git commit" again
Weitere Informationen zum Melden von Sicherheitslücken finden Sie in unserer Security Policy.
Bitte reichen Sie Fehlerberichte auf Github unter Verwendung der von uns bereitgestellten Vorlage ein.
Feature-Anfragen werden hier verwaltet.
Dieses Projekt und alle, die daran teilnehmen, unterliegen dem Code of Conduct. Durch Ihre Teilnahme wird erwartet, dass Sie diesen Kodex einhalten. Bitte melden Sie inakzeptables Verhalten an [email protected].