Wildcard DNS-записи: применение и подводные камни
Wildcard DNS-записи: применение и подводные камни
Wildcard-запись (*.example.com) — удобный способ обрабатывать бесконечное количество поддоменов одним правилом. Но за удобством скрываются подводные камни: wildcard-ы легко дают конфликт с более специфичными записями, мешают CAA и DNSSEC, открывают новые векторы атак. В статье — применение, ограничения по RFC 4592 и рекомендации.
Что такое wildcard
Звёздочка в DNS означает «любая строка вместо меня». Запись:
*.example.com. 3600 IN A 93.184.216.34
Матчит foo.example.com, bar.example.com, anything.example.com — любой поддомен, для которого нет собственной записи.
Когда wildcard полезен
- SaaS-приложения с динамическими поддоменами для клиентов:
client1.app.com,client2.app.com. - Catch-all почта:
*.example.comс MX, чтобы все поддомены принимали письма. - Staging / preview-окружения:
*.preview.example.comдля CI-деплоев PR. - DDoS-защита: ловушки и sinkhole для бот-трафика.
Ограничения RFC 4592
1. Wildcard не покрывает многоуровневые поддомены
*.example.com не матчит a.b.example.com. Для вложенных нужен *.b.example.com отдельно.
2. Конкретные записи перекрывают wildcard
Если есть shop.example.com A 10.0.0.1 и *.example.com A 10.0.0.2, запрос shop.example.com вернёт 10.0.0.1.
3. Wildcard не работает для apex
*.example.com не покрывает example.com. Для apex нужна отдельная запись.
4. Пустые нелистовые узлы блокируют wildcard
Это самая коварная ловушка. Если есть *.example.com и a.b.example.com, то запрос b.example.com не вернёт wildcard-запись — вернёт NODATA или NXDOMAIN. Потому что b.example.com становится «ENT» (empty non-terminal) между apex и a.b.example.com.
5. Не работает со всеми типами одновременно
Wildcard-запись одного типа (например, MX) не даёт автоматически wildcard для других (A, TXT). Каждый тип нужно задавать отдельно.
Примеры корректных и некорректных конфигураций
Корректно
example.com. A 10.0.0.1
*.example.com. A 10.0.0.2
www.example.com. A 10.0.0.3
api.example.com. A 10.0.0.4
; dig foo.example.com +short, ответ: 10.0.0.2
; dig www.example.com +short, ответ: 10.0.0.3
С подводным камнем
*.example.com. A 10.0.0.2
a.b.example.com. A 10.0.0.3
; dig b.example.com +short, ответ: NXDOMAIN (!)
; dig x.example.com +short, ответ: 10.0.0.2
Wildcard и SSL-сертификаты
Let's Encrypt поддерживает wildcard-сертификаты через DNS-01 challenge. Сертификат *.example.com покрывает все поддомены первого уровня, но не вложенные.
certbot certonly --dns-cloudflare \
-d example.com \
-d *.example.com
Wildcard и CAA
CAA-запись определяет, какие удостоверяющие центры могут выдавать сертификаты. Для wildcard можно задать политику отдельно:
example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 issuewild "letsencrypt.org"
Wildcard и DNSSEC
DNSSEC подписывает RRSET — и wildcard-запись подписывается как обычная. Но при проверке резолвер выполняет дополнительные проверки NSEC/NSEC3, чтобы убедиться, что более специфичная запись не существует.
Безопасность
Subdomain takeover
Wildcard, указывающая на CNAME облачного сервиса (напр., AWS S3 bucket), создаёт риск. Злоумышленник может зарегистрировать подобный сервис и перехватить трафик любого поддомена.
DDoS-вектор
Wildcard принимает любой поддомен — боты могут генерировать бесконечные случайные имена для обхода фильтров. Решение — специфичные записи и мониторинг сайтов аномальных паттернов.
Phishing surface
Wildcard делает phisher'у проще создавать достоверные URL (amazon-login.example.com). Мониторьте использование поддоменов.
Проверка wildcard
Через DNS Lookup или dig:
# Должна вернуть запись wildcard
dig A random-subdomain.example.com +short
# Покажет текущую зону
dig ANY example.com +noall +answer
Лучшие практики
- Используйте wildcard только там, где это осознанный дизайн.
- Для критичных поддоменов (
www,mail,api) ставьте явные записи. - Документируйте wildcard-стратегию в DNS-зоне (комментарии в BIND).
- Мониторьте аномалии через анализ логов запросов авторитативного DNS.
- Проверяйте поведение с пустыми non-terminal (ENT) при планировании.
FAQ
- Можно ли wildcard на CNAME?
- Да:
*.example.com CNAME myapp.vercel.app. Работает, но осторожно с takeover. - Как отключить wildcard для конкретного поддомена?
- Добавить специфичную запись — она перекроет wildcard.
- Cloudflare поддерживает wildcard?
- Да, на всех планах. Но оранжевое облачко (прокси) включается только на Business+.
- Работает ли wildcard MX?
- Да:
*.example.com MX 10 mail.example.com— любые поддомены пойдут на указанный сервер.
Заключение
Wildcard — мощный, но опасный инструмент. Используйте его для SaaS-сценариев, где поддомены действительно динамические, и всегда дополняйте явными записями для ключевых имён. Проверяйте конфигурацию через DNS Lookup, мониторьте поддомены через Enterno.io Monitors, и применяйте CAA и DNSSEC чтобы минимизировать риски.
Проверьте ваш сайт прямо сейчас
Проверить →