Что такое DNS-история
Каждый раз, когда вы меняете DNS-записи домена, старые значения не исчезают. Десятки сервисов по всему миру постоянно сканируют DNS и сохраняют все изменения в архив.
Это значит: если вы подключили Cloudflare или другой CDN после того, как домен уже указывал на реальный сервер — старый IP навсегда сохранён в истории. Любой может его найти за 30 секунд.
Как атакующие используют DNS-историю
Типичный сценарий атаки:
- Разведка — находят реальный IP через DNS-историю
- Проверка — отправляют HTTP-запрос напрямую на IP с заголовком
Host: ваш-домен.ru - Атака — направляют DDoS-трафик на реальный IP, минуя CDN полностью
CDN в этом случае не увидит ни одного пакета — весь удар придётся на origin-сервер.
Сервисы проверки DNS-истории
Вот основные инструменты, которые используют и защитники, и атакующие:
1. SecurityTrails
securitytrails.com — крупнейшая база исторических DNS-записей. Бесплатный аккаунт даёт 50 запросов в месяц.
Что показывает: все A, AAAA, MX, NS, TXT, CNAME записи за всю историю домена. Даты изменений, IP-адреса, хостинг-провайдеры.
curl -H "APIKEY: ваш_ключ" \n "https://api.securitytrails.com/v1/history/example.com/dns/a"
# Ответ покажет ВСЕ IP-адреса, на которые когда-либо указывал домен
# first_seen / last_seen — даты использования каждого IP
2. ViewDNS.info
viewdns.info/iphistory — бесплатный, без регистрации. Показывает историю IP-адресов для любого домена.
Ограничения: данные не всегда полные, особенно для небольших доменов. Но для популярных сайтов — работает отлично.
3. DNSdumpster
dnsdumpster.com — бесплатный инструмент от HackerTarget. Находит поддомены, MX-записи и визуализирует DNS-инфраструктуру.
Почему важен: часто реальный IP утекает не через основной домен, а через поддомены (mail.example.com, ftp.example.com, dev.example.com), которые забыли спрятать за CDN.
4. Shodan + Censys
shodan.io и censys.io — сканеры всего интернета. Индексируют баннеры, сертификаты, открытые порты.
Трюк: ищут SSL-сертификат вашего домена на всех IP-адресах. Если сервер отдаёт сертификат для example.com на IP 1.2.3.4 — реальный IP найден.
# Поиск серверов с SSL-сертификатом для вашего домена
ssl.cert.subject.cn:"example.com"
# Censys — аналогично
parsed.names: example.com
5. crt.sh
crt.sh — бесплатная база Certificate Transparency логов. Показывает все SSL-сертификаты, когда-либо выданные для домена.
Каждый сертификат может содержать IP или поддомены, которые раскрывают инфраструктуру.
# Все сертификаты для домена
https://crt.sh/?q=%25.example.com
# Через curl
curl -s "https://crt.sh/?q=%25.example.com&output=json" | \n jq ".[].name_value" | sort -u
Проверяем свой домен: пошаговая инструкция
Как защититься
Если DNS-история уже раскрыла ваш IP — просто подключить CDN недостаточно. Нужно менять инфраструктуру:
Миграция на новый IP
Единственный надёжный способ — перенести сервер на новый IP-адрес, который никогда не был связан с доменом. Затем подключить CDN и направить домен только на CDN.
Блокировка прямого доступа
Настройте файрвол origin-сервера:
# Пример для Cloudflare (актуальные IP: cloudflare.com/ips)
# Сначала запрещаем всё входящее на 80/443
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP
# Разрешаем только IP-адреса Cloudflare
for ip in 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22
103.31.4.0/22 141.101.64.0/18 108.162.192.0/18
190.93.240.0/20 188.114.96.0/20 197.234.240.0/22
198.41.128.0/17 162.158.0.0/15 104.16.0.0/13
104.24.0.0/14 172.64.0.0/13 131.0.72.0/22; do
iptables -I INPUT -p tcp -s $ip --dport 80 -j ACCEPT
iptables -I INPUT -p tcp -s $ip --dport 443 -j ACCEPT
done
Изоляция поддоменов
Все поддомены — включая почту, dev, staging — должны проксироваться через CDN или использовать отдельные IP, не связанные с основным сервером.
Контроль SSL-сертификатов
Настройте ssl_reject_handshake в nginx — сервер не будет отдавать сертификат при обращении по IP напрямую:
server {
listen 443 ssl default_server;
ssl_reject_handshake on;
}
server {
listen 443 ssl;
server_name example.com;
# ... ваш обычный конфиг
}
Чек-лист: DNS-гигиена
| Проверка | Инструмент | Что искать |
|---|---|---|
| DNS-история A-записей | SecurityTrails | Реальный IP в старых записях |
| Поддомены | DNSdumpster, crt.sh | Поддомены без CDN |
| SSL-сертификаты на IP | Censys, Shodan | Ваш домен на чужих IP |
| MX / SPF записи | dig, nslookup | IP почтового сервера = IP сайта? |
| Прямой доступ по IP | curl -H Host: | Сайт отвечает без CDN? |
| Firewall origin | iptables / ufw | Порты 80/443 открыты всем? |