[!CAUTION]
Este repositorio no tiene mantenimiento, visita https://github.com/sadreck/SnitchDNS para la versión más reciente.
SnitchDNS
SnitchDNS es un servidor DNS basado en base de datos con una interfaz web, escrito en Python y Twisted, que facilita la administración de DNS al aplicar todos los cambios de configuración de forma instantánea sin necesidad de reiniciar ningún servicio del sistema.
Una de sus principales características es el registro de todas las consultas DNS, lo que permite descubrir los puntos finales del tráfico de red. También se puede usar para implementar tokens canarios, ya que admite notificaciones por correo electrónico, web push, Slack y Teams. Los equipos rojos también pueden usar SnitchDNS para monitorear dominios de phishing en busca de sandboxes, integrarse con soluciones SIEM, restringir respuestas a rangos IP específicos, extraer datos a través de un túnel DNS y dominios de captura total, y más.
Dependencias
Instalación
Asegúrate de instalar usando git en lugar de descargar el repositorio manualmente.
Documentación
Para documentación general ver aquí
Capturas de pantalla
Para capturas de pantalla ver aquí
Características básicas
- Basado en base de datos.
- Los cambios se reflejan inmediatamente en cada solicitud DNS.
- DBMS compatibles:
- SQLite
- MySQL / MariaDB
- Postgres
- Servidor DNS
- Compatibilidad con registros DNS comunes.
A, AAAA, AFSDB, CNAME, DNAME, HINFO, MX, NAPTR, NS, PTR, RP, SOA, SPF, SRV, SSHFP, TSIG, TXT.
- Dominios de captura total.
- Capacidad de coincidir cualquier subdominio (sin importar la profundidad) con un dominio principal específico, por ejemplo, *.hello.example.com.
- Reenvío de registros no coincidentes.
- Funcionalidad para interceptar consultas específicas (ej. solo
A y CNAME) y reenviar todos los demás registros a un servidor DNS de terceros (ej. Google).
- Coincidencia de expresiones regulares.
- Etiquetas y alias.
- Reglas IP
- Configurar reglas de Permitir/Bloquear por dominio.
- Notificaciones. Recibe una notificación cuando se resuelve un dominio, a través de:
- Correo electrónico
- Web Push
- Slack
- Microsoft Teams
- Gestión de usuarios
- Soporte multiusuario
- A cada usuario se le asigna su propio subdominio para usar.
- Soporte LDAP/RADIUS
- Autenticación de dos factores
- Gestión de complejidad de contraseñas
- Registro
- Todas las consultas DNS quedan registradas, hayan sido coincidentes o no.
- Registro CSV para integración con SIEM.
- API Swagger 2.0
- Despliegue
- Scripts Ansible para Ubuntu 18.04 / 20.04
- Docker
- Soporte CLI para gestión de zonas, registros, usuarios y configuración.
- Exportación/Importación CSV
Casos de uso
SnitchDNS puede usarse para:
- Un servidor de reenvío DNS: permite monitorear todas las solicitudes a través de una interfaz web.
- Equipos rojos: implementar restricciones IP para bloquear sandboxes, monitorear resoluciones de dominios de phishing y correos electrónicos, y restringir el acceso a rangos IP conocidos.
- Túnel DNS: registrar todas las solicitudes DNS y extraer datos.
- Desafío DNS de Let's Encrypt, mediante la API o la interfaz CLI.
- Bloqueo de anuncios.
- Tokens canarios.
- Integración con soluciones SIEM.
Para más detalles sobre escenarios, consulta el Documento de casos de uso
Limitaciones
- SnitchDNS actualmente se ejecuta en un solo hilo, por lo que puede no ser adecuado para entornos con cientos de solicitudes DNS por minuto.
Contribuir
Si deseas contribuir con pull requests, solicitudes de funciones o informes de errores, siéntete libre de crear un issue (especialmente antes de empezar a escribir código).
Seguridad
Si identificas alguna vulnerabilidad de seguridad en SnitchDNS, por el momento, contáctame en twitter - @sadreck
Créditos
Interfaz de usuario
Desarrollo
- Lambros Zannettos | @_C960_ - Por su ayuda en la escritura del Dockerfile.