
Honeypot léger qui émule des services réseau courants pour détecter l'activité d'attaquants après une compromission, avec des modules de protocole extensibles et des alertes configurables.
OpenCanary est un honeypot réseau multi-protocoles. Son cas d'utilisation principal est de détecter les pirates après qu'ils ont compromis des réseaux non publics. Il a des besoins en ressources extrêmement faibles et peut être ajusté, modifié et étendu.
OpenCanary s'exécute en tant que démon et implémente plusieurs protocoles réseau courants. Lorsque des attaquants pénètrent dans des réseaux et interagissent avec le honeypot, OpenCanary vous enverra des alertes via différents mécanismes.
OpenCanary est implémenté en Python, le honeypot de base est donc multiplateforme ; cependant, certaines fonctionnalités nécessitent des systèmes d'exploitation spécifiques. L'exécuter sur Linux vous offrira le plus d'options. Il a des besoins en ressources extrêmement faibles ; par exemple, il peut être déployé facilement sur un Raspberry Pi ou une VM avec des ressources minimales.
Ce README décrit comment installer et configurer OpenCanary sur Ubuntu Linux et macOS.
OpenCanary est la version open source de notre honeypot commercial Thinkst Canary.
L'installation d'OpenCanary consiste essentiellement à préparer l'environnement Python, puis à installer le paquet Python OpenCanary (plus les extras optionnels).
Si uv est installé, vous pouvez l'utiliser pour la création de l'environnement virtuel et l'installation des paquets. S'il n'est pas installé, le flux standard python/pip ci-dessous continue de fonctionner.
Installation sur Ubuntu 22.04 LTS ou 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
Équivalent optionnel avec uv :
$ uv venv env
$ . env/bin/activate
$ uv pip install opencanary
Extras optionnels (si vous souhaitez utiliser le module Windows File Share et le module 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
Tout d'abord, créez et activez un nouvel environnement virtuel Python :
$ virtualenv env/
$ . env/bin/activate
Équivalent optionnel avec uv :
$ uv venv env
$ . env/bin/activate
Les utilisateurs de Macports doivent ensuite exécuter :
$ sudo port install openssl
$ env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include" pip install cryptography
Alternativement, les utilisateurs Homebrew x86 exécutent :
$ 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
Les utilisateurs Homebrew M1 exécutent :
$ 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
(L'étape de compilation ci-dessus est nécessaire car plusieurs versions d'OpenSSL peuvent exister, ce qui peut perturber les bibliothèques Python.)
L'installation peut maintenant s'exécuter comme d'habitude :
$ pip install opencanary
$ pip install scapy pcapy-ng # optional
Avec uv installé, les commandes équivalentes sont :
$ uv pip install opencanary
$ uv pip install scapy pcapy-ng # optional
Le module Windows File Share (smb) n'est pas disponible sur macOS.
Pour installer à partir des sources, au lieu d'exécuter pip, procédez comme suit :
$ git clone https://github.com/thinkst/opencanary
$ cd opencanary
$ python setup.py sdist
$ cd dist
$ pip install opencanary-<version>.tar.gz
Avec uv installé, vous pouvez remplacer l'étape d'installation finale par :
$ uv pip install opencanary-<version>.tar.gz
OpenCanary est empaqueté via pkgx, donc aucune installation n'est nécessaire si pkgx est installé, il suffit de préfixer la commande opencanaryd avec
pkgx. En raison des protections des variables d'environnement dans les implémentations modernes de sudo, la commande entière doit être exécutée en tant que root, ou via sudo -E.
$ pkgx opencanaryd --version
Les images Docker d'OpenCanary sont hébergées sur Docker Hub. Elles ne sont utiles que sur des hôtes Docker Linux, car le moteur réseau host est requis pour obtenir des informations réseau précises.
Lorsqu'OpenCanary démarre, il recherche les fichiers de configuration dans les emplacements suivants et s'arrête dès que la première configuration est trouvée :
/etc/opencanaryd/opencanary.conf~/.opencanary.conf (c'est-à-dire le répertoire personnel de l'utilisateur, généralement root, donc /root/.opencanary.conf)./opencanary.conf (c'est-à-dire le répertoire où OpenCanary est installé)Pour créer une configuration initiale, exécutez en tant que root (un mot de passe sudo peut vous être demandé) :
$ opencanaryd --copyconfig
[*] A sample config file is ready /etc/opencanaryd/opencanary.conf
[*] Edit your configuration, then launch with "opencanaryd --start --uid=nobody --gid=nogroup"
Cela crée le chemin et le fichier /etc/opencanaryd/opencanary.conf. Vous devez maintenant modifier le fichier de configuration pour déterminer les services et les options de journalisation que vous souhaitez activer.
[!WARNING] Le fichier de configuration contient des données complexes, notamment des objets Python pour la configuration de la journalisation. La configuration est lue pendant que le processus s'exécute avec les privilèges root. Nous recommandons que le fichier appartienne à root et ne soit inscriptible que par root. Si des utilisateurs ordinaires peuvent écrire dans le fichier, il est possible d'élever les privilèges jusqu'à root.
La configuration s'effectue via le fichier de configuration JSON. Modifiez le fichier et, lorsque vous êtes satisfait, enregistrez et quittez.
Le module snmp n'est disponible que si Scapy est présent. Voir les étapes d'installation pour SNMP ci-dessus.
Le module portscan n'est disponible que sur les hôtes Linux, car il modifie les règles iptables.
Veuillez noter que pour le service Portscan, nous avons ajouté un paramètre portscan.ignore_localhost, ce qui signifie que le service portscan d'OpenCanary ignorera (n'émettra pas d'alerte sur) les scans de ports provenant de l'IP localhost (127.0.0.1). Ce paramètre est désactivé par défaut.
Le module Windows File Share (smb) nécessite une installation de Samba. Voir un guide pas à pas sur le Wiki.
OpenCanary s'exécute soit directement sur un hôte Linux ou macOS, soit via un conteneur Docker.
Démarrez OpenCanary en exécutant :
$ . env/bin/activate
$ opencanaryd --start --uid=nobody --gid=nogroup
Avec les options uid et gid, OpenCanary abandonne les privilèges root après avoir lié ses ports. Cela peut être modifié pour un autre utilisateur/groupe à privilèges faibles, ou omis pour continuer à s'exécuter avec les privilèges root.
Démarrez OpenCanary en exécutant :
$ sudo -E pkgx opencanaryd --start --uid=nobody --gid=nogroup
Avec les options uid et gid, OpenCanary abandonne les privilèges root après avoir lié ses ports. Cela peut être modifié pour un autre utilisateur/groupe à privilèges faibles, ou omis pour continuer à s'exécuter avec les privilèges root.
Cette approche nécessite l'installation de Docker et Docker Compose.
Remarque Le module portscan est automatiquement désactivé pour OpenCanary dockerisé.
data/.opencanary.conf pour activer, désactiver ou personnaliser les services qui seront exécutés.ports du fichier docker-compose.yml pour activer/désactiver les ports souhaités en fonction des services que vous avez activés dans le fichier de configuration.docker compose up latest
Pour consulter les journaux, exécutez docker compose logs latest.
Pour arrêter le conteneur, exécutez docker compose down.
Pour construire votre propre OpenCanary Docker avec docker compose, rendez-vous sur notre wiki
Veuillez consulter notre wiki dédié à Docker pour tout ce qui concerne OpenCanary dockerisé.
Veuillez vous rendre sur notre dépôt fork pour un rôle Ansible OpenCanary ici.
Nous accueillons les PR sur ce projet. Veuillez lire nos documents Code de conduite et Contribution avant de soumettre une pull request.
Au minimum, vous devriez exécuter pre-commit avant de soumettre la PR. Installez-le et exécutez-le dans le même environnement Python que celui où OpenCanary est installé :
$ 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
Consultez notre Politique de sécurité pour plus de détails sur la façon de signaler des vulnérabilités de sécurité.
Veuillez soumettre les rapports de bugs sur GitHub en utilisant le modèle que nous fournissons.
Les demandes de fonctionnalités sont suivies ici.
Ce projet et toutes les personnes qui y participent sont régis par le Code de conduite. En participant, vous vous engagez à respecter ce code. Veuillez signaler tout comportement inacceptable à [email protected].