[!CAUTION]
Этот репозиторий больше не поддерживается, посетите https://github.com/sadreck/SnitchDNS для последней версии.
SnitchDNS
SnitchDNS — это DNS-сервер на основе базы данных с веб-интерфейсом, написанный на Python и Twisted, который упрощает администрирование DNS: все изменения конфигурации применяются мгновенно без перезапуска системных служб.
Одна из его главных особенностей — регистрация всех DNS-запросов, что позволяет обнаруживать конечные точки сетевого трафика. Также его можно использовать для реализации канареечных токенов, так как он поддерживает уведомления по электронной почте, веб-пушам, Slack и Teams. Red team`еры могут использовать SnitchDNS для мониторинга фишинговых доменов на предмет песочниц, интеграции с SIEM-решениями, ограничения ответов определёнными IP-диапазонами, извлечения данных через DNS-туннель и «catch-all» домены и многое другое.
Зависимости
Установка
Пожалуйста, убедитесь, что вы устанавливаете с помощью git, а не скачиваете репозиторий вручную.
Документация
Общую документацию смотрите здесь
Скриншоты
Скриншоты смотрите здесь
Основные возможности
- На основе базы данных.
- Изменения отражаются немедленно при каждом DNS-запросе.
- Поддерживаемые СУБД:
- SQLite
- MySQL / MariaDB
- Postgres
- DNS-сервер
- Поддержка распространённых DNS-записей.
A, AAAA, AFSDB, CNAME, DNAME, HINFO, MX, NAPTR, NS, PTR, RP, SOA, SPF, SRV, SSHFP, TSIG, TXT.
- Домены «catch-all».
- Возможность сопоставлять любой поддомен (независимо от вложенности) с определённым родительским доменом, например *.hello.example.com.
- Переадресация несовпавших записей.
- Функциональность для перехвата определённых запросов (например, только
A и CNAME) и перенаправления всех остальных записей на сторонний DNS-сервер (например, Google).
- Сопоставление с регулярными выражениями.
- Теги и псевдонимы.
- IP-правила
- Настройка правил разрешения/блокировки для каждого домена.
- Уведомления. Получайте уведомление при разрешении домена через:
- Электронная почта
- Веб-пуши
- Slack
- Microsoft Teams
- Управление пользователями
- Поддержка нескольких пользователей
- Каждому пользователю выделяется собственный поддомен.
- Поддержка LDAP/RADIUS
- Двухфакторная аутентификация
- Управление сложностью паролей
- Журналирование
- Все DNS-запросы регистрируются, независимо от того, были ли они сопоставлены.
- CSV-журналирование для интеграции с SIEM.
- Swagger 2.0 API
- Развёртывание
- Скрипты Ansible для Ubuntu 18.04 / 20.04
- Docker
- Поддержка CLI для управления зонами, записями, пользователями и настройками.
- Экспорт/импорт CSV
Варианты использования
SnitchDNS можно использовать для:
- DNS-сервер пересылки — позволяет отслеживать все запросы через веб-интерфейс.
- Red Teams — реализация IP-ограничений для блокировки песочниц, мониторинг разрешений фишинговых доменов и электронных писем, ограничение доступа до известных IP-диапазонов.
- DNS-туннель — регистрация всех DNS-запросов и извлечение данных.
- DNS-вызов Let's Encrypt с использованием API или CLI-интерфейса.
- Блокировка рекламы.
- Канареечные токены.
- Интеграция с SIEM-решениями.
Подробнее о сценариях смотрите в документе о вариантах использования
Ограничения
- В настоящее время SnitchDNS работает в однопоточном режиме, поэтому может не подходить для сред с сотнями DNS-запросов в минуту.
Участие в разработке
Если вы хотите внести свой вклад (pull request`ы, запросы функций и отчёты об ошибках), не стесняйтесь создавать issue (особенно перед началом написания кода).
Безопасность
Если вы обнаружите уязвимости в безопасности SnitchDNS, пока что, пожалуйста, свяжитесь со мной в Twitter — @sadreck
Благодарности
Пользовательский интерфейс
Разработка
- Lambros Zannettos | @_C960_ — За помощь в написании Dockerfile.