[!CAUTION]
Dieses Repository wird nicht mehr gewartet. Besuche https://github.com/sadreck/SnitchDNS für die neueste Version.
SnitchDNS
SnitchDNS ist ein datenbankgestützter DNS-Server mit einer Weboberfläche, geschrieben in Python und Twisted, der die DNS-Verwaltung erleichtert, da alle Konfigurationsänderungen sofort angewendet werden, ohne dass Systemdienste neu gestartet werden müssen.
Eine seiner Hauptfunktionen ist die Protokollierung aller DNS-Abfragen, wodurch Netzwerkverkehrs-Endpunkte entdeckt werden können. Es kann auch zur Implementierung von Canary-Tokens verwendet werden, da es Benachrichtigungen per E-Mail, Web-Push, Slack und Teams unterstützt. Red-Teamer können SnitchDNS außerdem nutzen, um Phishing-Domains auf Sandboxen zu überwachen, in SIEM-Lösungen zu integrieren, Antworten auf bestimmte IP-Bereiche zu beschränken, Daten über einen DNS-Tunnel und Catch-All-Domains auszuleiten und mehr.
Abhängigkeiten
Installation
Bitte stellen Sie sicher, dass Sie die Installation mit git durchführen, anstatt das Repository manuell herunterzuladen.
Dokumentation
Allgemeine Dokumentation siehe hier
Screenshots
Screenshots siehe hier
Grundlegende Funktionen
- Datenbankgesteuert.
- Änderungen werden sofort bei jeder DNS-Anfrage übernommen.
- Unterstützte DBMS:
- SQLite
- MySQL / MariaDB
- Postgres
- DNS-Server
- Unterstützung für gängige DNS-Einträge.
A, AAAA, AFSDB, CNAME, DNAME, HINFO, MX, NAPTR, NS, PTR, RP, SOA, SPF, SRV, SSHFP, TSIG, TXT.
- Catch-All-Domains.
- Fähigkeit, jede Subdomain (unabhängig von der Tiefe) einer bestimmten übergeordneten Domain zuzuordnen, z. B. *.hello.example.com.
- Weiterleitung nicht zugeordneter Einträge.
- Funktionalität zum Abfangen bestimmter Anfragen (z. B. nur
A und CNAME) und zur Weiterleitung aller anderen Einträge an einen DNS-Server eines Drittanbieters (z. B. Google).
- Abgleich mit regulären Ausdrücken.
- Tags und Aliase.
- IP-Regeln
- Erlaube/Blockiere-Regeln pro Domain konfigurieren.
- Benachrichtigungen. Erhalte eine Benachrichtigung, wenn eine Domain aufgelöst wird, über:
- E-Mail
- Web-Push
- Slack
- Microsoft Teams
- Benutzerverwaltung
- Unterstützung mehrerer Benutzer
- Jeder Benutzer erhält eine eigene Subdomain zur Nutzung.
- LDAP/RADIUS-Unterstützung
- Zwei-Faktor-Authentifizierung
- Komplexitätsverwaltung für Passwörter
- Protokollierung
- Alle DNS-Abfragen werden protokolliert, unabhängig davon, ob sie zugeordnet wurden oder nicht.
- CSV-Protokollierung für SIEM-Integration.
- Swagger 2.0 API
- Bereitstellung
- Ansible-Skripte für Ubuntu 18.04 / 20.04
- Docker
- CLI-Unterstützung für die Verwaltung von Zonen, Einträgen, Benutzern und Einstellungen.
- CSV-Export/Import
Anwendungsfälle
SnitchDNS kann verwendet werden für:
- Ein DNS-Weiterleitungsserver – ermöglicht die Überwachung aller Anfragen über eine Weboberfläche.
- Red-Teams – Implementieren Sie IP-Beschränkungen, um Sandboxen zu blockieren, Phishing-Domainauflösungen und E-Mails zu überwachen und den Zugriff auf bekannte IP-Bereiche einzuschränken.
- DNS-Tunnel – Protokollieren Sie alle DNS-Anfragen und leiten Sie Daten aus.
- Let's Encrypt DNS-Challenge, über die API oder die CLI-Oberfläche.
- Werbeblockierung.
- Canary-Tokens.
- Integration in SIEM-Lösungen.
Weitere Details zu Szenarien finden Sie im Dokument Anwendungsfälle
Einschränkungen
- SnitchDNS läuft derzeit in einem einzelnen Thread und ist daher möglicherweise nicht für Umgebungen mit Hunderten von DNS-Anfragen pro Minute geeignet.
Mitwirken
Wenn Sie Pull-Requests, Funktionsanfragen oder Fehlerberichte beitragen möchten, können Sie gerne ein Issue eröffnen (besonders bevor Sie mit dem Schreiben von Code beginnen).
Sicherheit
Wenn Sie Sicherheitslücken in SnitchDNS entdecken, kontaktieren Sie mich vorerst bitte auf Twitter - @sadreck
Credits
UI
Entwicklung
- Lambros Zannettos | @_C960_ – Für seine Hilfe beim Schreiben der Dockerdatei.