
Honeypot a basse risorse che emula i servizi di rete comuni per rilevare l'attività degli aggressori post-violazione, con moduli di protocollo estensibili e alert configurabili.
OpenCanary è un honeypot di rete multi-protocollo. Il suo scopo principale è catturare gli hacker dopo che hanno violato reti non pubbliche. Ha requisiti di risorse estremamente bassi e può essere personalizzato, modificato ed esteso.
OpenCanary viene eseguito come daemon e implementa molteplici protocolli di rete comuni. Quando gli aggressori violano le reti e interagiscono con l'honeypot, OpenCanary invia avvisi tramite una varietà di meccanismi.
OpenCanary è implementato in Python, quindi l'honeypot principale è multipiattaforma; tuttavia, alcune funzionalità richiedono sistemi operativi specifici. L'esecuzione su Linux offre il maggior numero di opzioni. Ha requisiti di risorse estremamente bassi; ad esempio, può essere distribuito senza problemi su un Raspberry Pi o su una VM con risorse minime.
Questo README descrive come installare e configurare OpenCanary su Ubuntu Linux e macOS.
OpenCanary è la versione Open Source del nostro honeypot commerciale Thinkst Canary.
L'installazione di OpenCanary consiste essenzialmente nel preparare l'ambiente Python, quindi nell'installare il pacchetto Python OpenCanary (più gli extra opzionali).
Se uv è installato, puoi usarlo per la creazione dell'ambiente virtuale e l'installazione dei pacchetti. Se non è installato, il normale flusso python/pip di seguito continua a funzionare.
Installazione su Ubuntu 22.04 LTS o 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
Equivalente opzionale con uv:
$ uv venv env
$ . env/bin/activate
$ uv pip install opencanary
Extra opzionali (se desideri utilizzare il modulo Windows File Share e il modulo SNMP):
$ 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
Innanzitutto, crea e attiva un nuovo ambiente virtuale Python:
$ virtualenv env/
$ . env/bin/activate
Equivalente opzionale con uv:
$ uv venv env
$ . env/bin/activate
Gli utenti Macports devono quindi eseguire:
$ sudo port install openssl
$ env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include" pip install cryptography
In alternativa, gli utenti Homebrew x86 eseguono:
$ 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
Gli utenti Homebrew M1 eseguono:
$ 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
(Il passaggio di compilazione sopra indicato è necessario poiché possono esistere più versioni di OpenSSL, che possono confondere le librerie Python.)
Ora l'installazione può essere eseguita come al solito:
$ pip install opencanary
$ pip install scapy pcapy-ng # optional
Con uv installato, i comandi equivalenti sono:
$ uv pip install opencanary
$ uv pip install scapy pcapy-ng # optional
Il modulo Windows File Share (smb) non è disponibile su macOS.
Per installare dal sorgente, invece di eseguire pip, procedi come segue:
$ git clone https://github.com/thinkst/opencanary
$ cd opencanary
$ python setup.py sdist
$ cd dist
$ pip install opencanary-<version>.tar.gz
Con uv installato, puoi sostituire il passaggio di installazione finale con:
$ uv pip install opencanary-<version>.tar.gz
OpenCanary è impacchettato tramite pkgx, quindi non è necessaria alcuna installazione se pkgx è installato: basta anteporre pkgx al comando opencanaryd. A causa delle protezioni delle variabili d'ambiente nelle moderne implementazioni di sudo, l'intero comando deve essere eseguito come root, oppure tramite sudo -E.
$ pkgx opencanaryd --version
Le immagini Docker di OpenCanary sono ospitate su Docker Hub. Sono utili solo su host Docker Linux, poiché il motore di rete host è necessario per informazioni di rete accurate.
Quando OpenCanary si avvia, cerca i file di configurazione nelle seguenti posizioni e si ferma quando viene trovata la prima configurazione:
/etc/opencanaryd/opencanary.conf~/.opencanary.conf (cioè la directory home dell'utente, di solito sarà root, quindi /root/.opencanary.conf)./opencanary.conf (cioè la directory in cui è installato OpenCanary)Per creare una configurazione iniziale, esegui come root (potrebbe essere richiesta una password sudo):
$ opencanaryd --copyconfig
[*] A sample config file is ready /etc/opencanaryd/opencanary.conf
[*] Edit your configuration, then launch with "opencanaryd --start --uid=nobody --gid=nogroup"
Questo crea il percorso e il file /etc/opencanaryd/opencanary.conf. Ora devi modificare il file di configurazione per determinare quali servizi e opzioni di logging desideri abilitare.
[!WARNING] Il file di configurazione include dati complessi, inclusi oggetti Python per la configurazione del logging. La configurazione viene letta mentre il processo è in esecuzione con privilegi di root. Ti consigliamo di rendere il file di proprietà di root e scrivibile solo da root. Se gli utenti normali possono scrivere il file, è possibile elevare i privilegi a root.
La configurazione viene eseguita tramite il file di configurazione JSON. Modifica il file e, quando sei soddisfatto, salva ed esci.
Il modulo snmp è disponibile solo quando Scapy è presente. Vedi i passaggi di installazione per SNMP sopra.
Il modulo portscan è disponibile solo su host Linux, poiché modifica le regole iptables.
Tieni presente che per il servizio Portscan abbiamo aggiunto un'impostazione portscan.ignore_localhost, il che significa che il servizio portscan di OpenCanary ignorerà (non segnalerà) le scansioni delle porte provenienti dall'IP localhost (127.0.0.1). Questa impostazione è falsa per impostazione predefinita.
Il modulo Windows File Share (smb) richiede un'installazione di Samba. Vedi una guida passo passo sul Wiki.
OpenCanary può essere eseguito direttamente su un host Linux o macOS, oppure tramite un contenitore Docker.
Avvia OpenCanary eseguendo:
$ . env/bin/activate
$ opencanaryd --start --uid=nobody --gid=nogroup
Con i flag uid e gid, OpenCanary abbandona i privilegi di root dopo aver effettuato il binding alle sue porte. Questo può essere modificato in un altro utente/gruppo a bassi privilegi oppure omesso per continuare a essere eseguito con privilegi di root.
Avvia OpenCanary eseguendo:
$ sudo -E pkgx opencanaryd --start --uid=nobody --gid=nogroup
Con i flag uid e gid, OpenCanary abbandona i privilegi di root dopo aver effettuato il binding alle sue porte. Questo può essere modificato in un altro utente/gruppo a bassi privilegi oppure omesso per continuare a essere eseguito con privilegi di root.
Questo percorso richiede che Docker e Docker Compose siano installati.
Nota Il modulo portscan viene disabilitato automaticamente per OpenCanary dockerizzato.
data/.opencanary.conf per abilitare, disabilitare o personalizzare i servizi che verranno eseguiti.ports del file docker-compose.yml per abilitare/disabilitare le porte desiderate in base ai servizi che hai abilitato nel file di configurazione.docker compose up latest
Per visualizzare i log, esegui docker compose logs latest.
Per fermare il contenitore, esegui docker compose down.
Per creare il tuo OpenCanary Docker usando docker compose, vai al nostro wiki
Vai al nostro wiki Docker dedicato per tutto ciò che riguarda OpenCanary dockerizzato.
Vai al nostro repository fork per un ruolo Ansible OpenCanary qui.
Accogliamo con favore le PR a questo progetto. Ti preghiamo di leggere i documenti Codice di condotta e Contribuire prima di inviare una pull request.
Come minimo, dovresti eseguire pre-commit prima di inviare la PR. Installalo ed eseguilo nello stesso ambiente Python in cui è installato OpenCanary:
$ 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
Vedi la nostra Politica di sicurezza per i dettagli su come segnalare le vulnerabilità di sicurezza.
Ti preghiamo di segnalare i bug su GitHub utilizzando il modello che forniamo.
Le richieste di funzionalità sono tracciate qui.
Questo progetto e tutti coloro che vi partecipano sono regolati dal Codice di condotta. Partecipando, ti impegni a rispettare questo codice. Segnala eventuali comportamenti inaccettabili a [email protected].