DNS-over-HTTPS: принципы работы, влияние на корпоративную безопасность

DNS-over-HTTPS (DoH): принципы работы, влияние на корпоративную безопасность. Защита DNS запросов, приватность, обход блокировок, корпоративные политики безопасности.

DNS-over-HTTPS (DoH) - Безопасность и проблемы

Определение

DNS-over-HTTPS (DoH) — это протокол для выполнения DNS-запросов через HTTPS вместо традиционного DNS-over-UDP. DoH шифрует DNS-трафик и передает его через стандартный HTTPS-порт (443), что затрудняет блокировку и мониторинг DNS-запросов.

Принципы работы DoH

1. Традиционный DNS

Клиент → DNS-сервер (UDP/53) → Ответ

2. DNS-over-HTTPS

Клиент → DoH-сервер (HTTPS/443) → Ответ

Структура DoH запроса:

POST https://dns.google/dns-query HTTP/1.1
Host: dns.google
Content-Type: application/dns-message
Content-Length: 33

[бинарные DNS данные]

Структура DoH ответа:

HTTP/1.1 200 OK
Content-Type: application/dns-message
Cache-Control: max-age=300

[бинарные DNS данные]

Основные DoH провайдеры

1. Google DNS

  • URL: https://dns.google/dns-query
  • IPv4: 8.8.8.8, 8.8.4.4
  • IPv6: 2001:4860:4860::8888, 2001:4860:4860::8844

2. Cloudflare DNS

  • URL: https://cloudflare-dns.com/dns-query
  • IPv4: 1.1.1.1, 1.0.0.1
  • IPv6: 2606:4700:4700::1111, 2606:4700:4700::1001

3. Quad9 DNS

  • URL: https://dns.quad9.net/dns-query
  • IPv4: 9.9.9.9, 149.112.112.112
  • IPv6: 2620:fe::fe, 2620:fe::9

4. OpenDNS

  • URL: https://doh.opendns.com/dns-query
  • IPv4: 208.67.222.222, 208.67.220.220

Преимущества DoH

1. Конфиденциальность

  • Шифрование трафика — DNS-запросы не видны в открытом виде
  • Защита от перехвата — сложнее перехватить и модифицировать запросы
  • Скрытие от провайдера — ISP не видит DNS-запросы пользователей

2. Обход цензуры

  • Блокировка DNS — сложнее заблокировать DoH-трафик
  • Обход фильтров — возможность обхода корпоративных фильтров
  • Доступ к заблокированным ресурсам — обход географических ограничений

3. Безопасность

  • Защита от DNS-спуфинга — сложнее подделать ответы
  • Предотвращение MITM — защита от атак “человек посередине”
  • Целостность данных — гарантия неизменности ответов

Недостатки и проблемы DoH

1. Проблемы для корпоративной безопасности

Потеря контроля над DNS-трафиком

# Корпоративный DNS-сервер не видит DoH-запросы
# Пользователи могут обходить корпоративные политики
curl -H "Accept: application/dns-message" \
     -H "Content-Type: application/dns-message" \
     --data-binary @query.bin \
     https://dns.google/dns-query

Обход фильтрации контента

  • Корпоративные фильтры могут быть обойдены
  • Родительский контроль становится неэффективным
  • Блокировка вредоносных доменов не работает

Сложность мониторинга

  • SIEM-системы не видят DNS-запросы
  • Анализ угроз становится затрудненным
  • Расследование инцидентов усложняется

2. Технические проблемы

Производительность

# DoH медленнее традиционного DNS из-за HTTPS overhead
time nslookup example.com 8.8.8.8
time curl -H "Accept: application/dns-message" \
          -H "Content-Type: application/dns-message" \
          --data-binary @query.bin \
          https://dns.google/dns-query

Совместимость

  • Старые системы могут не поддерживать DoH
  • Сетевые устройства могут блокировать HTTPS-трафик
  • Проблемы с кэшированием DNS-записей

Централизация

  • Зависимость от провайдеров DoH
  • Риск цензуры на уровне DoH-провайдеров
  • Потенциальные точки отказа

Методы блокировки DoH

1. Блокировка на уровне сети

Блокировка IP-адресов DoH-серверов

# Блокировка Google DNS
iptables -A OUTPUT -d 8.8.8.8 -j DROP
iptables -A OUTPUT -d 8.8.4.4 -j DROP

# Блокировка Cloudflare DNS
iptables -A OUTPUT -d 1.1.1.1 -j DROP
iptables -A OUTPUT -d 1.0.0.1 -j DROP

Блокировка доменов DoH-серверов

# Добавление в hosts файл
echo "127.0.0.1 dns.google" >> /etc/hosts
echo "127.0.0.1 cloudflare-dns.com" >> /etc/hosts
echo "127.0.0.1 dns.quad9.net" >> /etc/hosts

2. Блокировка на уровне приложений

Блокировка DoH в браузерах

// Отключение DoH в Firefox
// about:config → network.trr.mode = 5 (отключено)

// Отключение DoH в Chrome
// chrome://flags/#dns-over-https → Disabled

Блокировка через групповые политики

<!-- Windows Group Policy для блокировки DoH -->
<policy name="DnsOverHttpsMode" class="Machine">
  <parentCategory name="Network" />
  <supportedOn ref="SUPPORTED_WIN10" />
  <elements>
    <enum id="DnsOverHttpsMode_Enum">
      <item displayName="Disabled">
        <value>
          <decimal value="0"/>
        </value>
      </item>
    </enum>
  </elements>
</policy>

3. Мониторинг DoH-трафика

Обнаружение DoH-запросов

# Анализ HTTPS-трафика на предмет DoH
tcpdump -i any -A -s 0 'tcp port 443 and (host dns.google or host cloudflare-dns.com)'

# Поиск DoH-запросов в логах
grep -i "dns-query" /var/log/nginx/access.log

Анализ сетевого трафика

// Скрипт для обнаружения DoH-трафика
const pcap = require("pcap");
const dpkt = require("dpkt");

function analyzePacket(packet) {
  const eth = new dpkt.ethernet.Ethernet(packet);
  if (eth.type === dpkt.ethernet.ETH_TYPE_IP) {
    const ip = eth.data;
    if (ip.p === dpkt.ip.IP_PROTO_TCP) {
      const tcp = ip.data;
      if (tcp.dport === 443) {
        // HTTPS порт
        // Анализ на предмет DoH-запросов
        if (tcp.data.includes("dns-query")) {
          console.log(`DoH request detected from ${ip.src}`);
        }
      }
    }
  }
}

// Захват пакетов
const cap = pcap.openLive("eth0", 65536, true, 0);
cap.on("packet", (header, packet) => {
  analyzePacket(packet);
});

Корпоративные решения

1. Корпоративные DoH-серверы

Развертывание внутреннего DoH

# Nginx конфигурация для корпоративного DoH
server {
    listen 443 ssl;
    server_name doh.company.com;

    ssl_certificate /path/to/cert.pem;
    ssl_private_key /path/to/key.pem;

    location /dns-query {
        proxy_pass http://127.0.0.1:8053/dns-query;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Интеграция с корпоративным DNS

# Настройка DoH-сервера с корпоративным DNS
# Использование Unbound с поддержкой DoH
unbound-control set_option doh-https-port: 443
unbound-control set_option doh-cert-file: /path/to/cert.pem
unbound-control set_option doh-key-file: /path/to/key.pem

2. Мониторинг и контроль

Логирование DoH-запросов

// Логирование DoH-запросов для анализа
const express = require("express");
const app = express();

app.use(express.json());

app.post("/dns-query", (req, res) => {
  // Логирование запроса
  const clientIp = req.ip;
  const userAgent = req.headers["user-agent"];

  console.log(`DoH query from ${clientIp}: ${userAgent}`);

  // Обработка DNS-запроса
  // ... DNS resolution logic ...

  res.json(response);
});

Интеграция с SIEM

// Отправка событий DoH в SIEM
async function sendToSiem(eventData) {
  const siemUrl = "https://siem.company.com/api/events";
  const headers = {
    Authorization: "Bearer siem-token",
    "Content-Type": "application/json",
  };

  const payload = {
    event_type: "doh_query",
    timestamp: eventData.timestamp,
    client_ip: eventData.client_ip,
    domain: eventData.domain,
    query_type: eventData.query_type,
  };

  await fetch(siemUrl, {
    method: "POST",
    headers: headers,
    body: JSON.stringify(payload),
  });
}

Альтернативы DoH

1. DNS-over-TLS (DoT)

# Использование DoT вместо DoH
# Настройка в /etc/systemd/resolved.conf
DNSOverTLS=yes
DNSSEC=yes
DNS=1.1.1.1#cloudflare-dns.com

2. DNS-over-QUIC (DoQ)

  • Протокол QUIC для DNS-запросов
  • Более быстрая установка соединения
  • Лучшая производительность чем DoH

3. Корпоративные DNS-решения

  • Внутренние DNS-серверы с шифрованием
  • VPN-туннели для DNS-трафика
  • Приватные DNS-серверы в облаке

Практические рекомендации

1. Для корпоративных сетей

  • Блокировка внешних DoH-серверов
  • Развертывание внутренних DoH-решений
  • Мониторинг DoH-трафика
  • Обучение пользователей о рисках DoH

2. Для домашних пользователей

  • Использование DoH для повышения приватности
  • Выбор надежных провайдеров DoH
  • Регулярное обновление браузеров и приложений

3. Для разработчиков

  • Реализация DoH в приложениях
  • Обработка ошибок DoH-соединений
  • Fallback на традиционный DNS

Заключение

DNS-over-HTTPS представляет собой важное развитие в области приватности и безопасности DNS, но создает новые вызовы для корпоративной безопасности:

Преимущества:

  • Повышение приватности пользователей
  • Защита от перехвата DNS-трафика
  • Обход цензуры и фильтрации

Проблемы:

  • Потеря контроля над DNS-трафиком в корпоративных сетях
  • Сложность мониторинга и расследования инцидентов
  • Потенциальное нарушение корпоративных политик безопасности

Организации должны разработать стратегии управления DoH, включающие технические меры контроля, политики использования и обучение пользователей для обеспечения баланса между приватностью и безопасностью.