
Honeypot de bajos recursos que emula servicios de red comunes para detectar la actividad del atacante posterior a una brecha, con módulos de protocolo extensibles y alertas configurables.
OpenCanary es un honeypot de red multiprotocolo. Su caso de uso principal es atrapar a los hackers después de que hayan violado redes no públicas. Tiene requisitos de recursos extremadamente bajos y puede ajustarse, modificarse y ampliarse.
OpenCanary se ejecuta como un daemon e implementa múltiples protocolos de red comunes. Cuando los atacantes violan redes e interactúan con el honeypot, OpenCanary le enviará alertas a través de una variedad de mecanismos.
OpenCanary está implementado en Python, por lo que el honeypot principal es multiplataforma; sin embargo, ciertas características requieren sistemas operativos específicos. Ejecutarlo en Linux le dará la mayoría de las opciones. Tiene requisitos de recursos extremadamente bajos; por ejemplo, puede implementarse fácilmente en una Raspberry Pi o en una VM con recursos mínimos.
Este README describe cómo instalar y configurar OpenCanary en Ubuntu Linux y macOS.
OpenCanary es la versión de código abierto de nuestro honeypot comercial Thinkst Canary.
La instalación de OpenCanary consiste esencialmente en asegurarse de que el entorno Python esté listo y luego instalar el paquete Python de OpenCanary (además de los extras opcionales).
Si uv está instalado, puede usarlo para la creación del entorno virtual y la instalación de paquetes. Si no está instalado, el flujo estándar de python/pip que se muestra a continuación sigue funcionando.
Instalación en 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 opcional con uv:
$ uv venv env
$ . env/bin/activate
$ uv pip install opencanary
Extras opcionales (si desea utilizar el módulo Windows File Share y el módulo 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
Primero, cree y active un nuevo entorno virtual de Python:
$ virtualenv env/
$ . env/bin/activate
Equivalente opcional con uv:
$ uv venv env
$ . env/bin/activate
Los usuarios de Macports deben ejecutar a continuación:
$ sudo port install openssl
$ env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include" pip install cryptography
Alternativamente, los usuarios de Homebrew x86 ejecutan:
$ 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
Los usuarios de Homebrew M1 ejecutan:
$ 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
(El paso de compilación anterior es necesario porque pueden existir múltiples versiones de OpenSSL, lo que puede confundir a las librerías Python.)
Ahora la instalación puede ejecutarse como de costumbre:
$ pip install opencanary
$ pip install scapy pcapy-ng # optional
Con uv instalado, los comandos equivalentes son:
$ uv pip install opencanary
$ uv pip install scapy pcapy-ng # optional
El módulo Windows File Share (smb) no está disponible en macOS.
Para instalar desde el código fuente, en lugar de ejecutar pip haga lo siguiente:
$ git clone https://github.com/thinkst/opencanary
$ cd opencanary
$ python setup.py sdist
$ cd dist
$ pip install opencanary-<version>.tar.gz
Con uv instalado, puede reemplazar el paso final de instalación con:
$ uv pip install opencanary-<version>.tar.gz
OpenCanary se distribuye mediante pkgx, por lo que no se necesita instalación si pkgx está instalado; simplemente anteponga el comando opencanaryd con pkgx. Debido a las protecciones de variables de entorno en las implementaciones modernas de sudo, el comando completo debe ejecutarse como root o mediante sudo -E.
$ pkgx opencanaryd --version
Las imágenes Docker de OpenCanary están alojadas en Docker Hub. Solo son útiles en hosts Docker Linux, ya que el motor de red host es necesario para obtener información precisa de la red.
Cuando OpenCanary se inicia, busca archivos de configuración en las siguientes ubicaciones y se detendrá cuando encuentre la primera configuración:
/etc/opencanaryd/opencanary.conf~/.opencanary.conf (es decir, el directorio personal del usuario, normalmente será root, por lo que /root/.opencanary.conf)./opencanary.conf (es decir, el directorio donde está instalado OpenCanary)Para crear una configuración inicial, ejecute como root (es posible que se le solicite una contraseña de 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"
Esto crea la ruta y el archivo /etc/opencanaryd/opencanary.conf. Ahora debe editar el archivo de configuración para determinar qué servicios y opciones de registro desea habilitar.
[!WARNING] El archivo de configuración incluye datos complejos, incluidos objetos Python para la configuración de registro. La configuración se lee mientras el proceso se ejecuta con privilegios de root. Recomendamos que el archivo sea propiedad de root y solo pueda escribirlo root. Si los usuarios normales pueden escribir el archivo, es posible escalar privilegios a root.
La configuración se realiza mediante el archivo de configuración JSON. Edite el archivo y, cuando esté conforme, guárdelo y salga.
El módulo snmp solo está disponible cuando Scapy está presente. Consulte los pasos de instalación de SNMP anteriores.
El módulo portscan solo está disponible en hosts Linux, ya que modifica las reglas de iptables.
Tenga en cuenta que para el servicio Portscan hemos añadido un ajuste portscan.ignore_localhost, lo que significa que el servicio portscan de OpenCanary ignorará (no alertará sobre) los escaneos de puertos que se originen desde la IP de localhost (127.0.0.1). Este ajuste está establecido en false por defecto.
El módulo Windows File Share (smb) requiere una instalación de Samba. Consulte una guía paso a paso en la Wiki.
OpenCanary se ejecuta directamente en un host Linux o macOS, o mediante un contenedor Docker.
Inicie OpenCanary ejecutando:
$ . env/bin/activate
$ opencanaryd --start --uid=nobody --gid=nogroup
Con las opciones uid y gid, OpenCanary abandona los privilegios de root después de vincularse a sus puertos. Esto se puede cambiar a otro usuario/grupo con pocos privilegios u omitirse para seguir ejecutándose con privilegios de root.
Inicie OpenCanary ejecutando:
$ sudo -E pkgx opencanaryd --start --uid=nobody --gid=nogroup
Con las opciones uid y gid, OpenCanary abandona los privilegios de root después de vincularse a sus puertos. Esto se puede cambiar a otro usuario/grupo con pocos privilegios u omitirse para seguir ejecutándose con privilegios de root.
Esta vía requiere que Docker y Docker Compose estén instalados.
Nota El módulo portscan se desactiva automáticamente para OpenCanary dockerizado.
data/.opencanary.conf para habilitar, deshabilitar o personalizar los servicios que se ejecutarán.ports del archivo docker-compose.yml para habilitar/deshabilitar los puertos deseados según los servicios que haya habilitado en el archivo de configuración.docker compose up latest
Para ver los registros, ejecute docker compose logs latest.
Para detener el contenedor, ejecute docker compose down.
Para crear su propio Docker OpenCanary usando docker compose, diríjase a nuestra wiki
Visite nuestra wiki dedicada a Docker para todo lo relacionado con OpenCanary dockerizado.
Visite nuestro repositorio bifurcado para obtener un rol de Ansible para OpenCanary aquí.
Agradecemos las PR a este proyecto. Lea nuestros documentos de Código de conducta y Contribución antes de enviar una pull request.
Como mínimo, debe ejecutar pre-commit antes de enviar la PR. Instálelo y ejecútelo en el mismo entorno Python donde está instalado 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
Consulte nuestra Política de seguridad para obtener detalles sobre cómo informar vulnerabilidades de seguridad.
Por favor, presente informes de errores en Github utilizando la plantilla que proporcionamos.
Las solicitudes de características se gestionan aquí.
Este proyecto y todos los que participan en él se rigen por el Código de conducta. Al participar, se espera que cumpla con este código. Por favor, informe cualquier comportamiento inaceptable a [email protected].