Перейти к содержанию

Внешние DNS‑резолверы

Gixy Check ID: resolver_external

Использование публичных DNS в директиве resolver может делать nginx уязвимым для отравления кэша и поддельных ответов. Поддельные DNS‑ответы могут отравить кэш nginx и направить проксирование на хосты, контролируемые атакующим.

Небезопасный пример

# Публичные внешние резолверы (небезопасно)
resolver 1.1.1.1 8.8.8.8;

# Разрешение переменной бэкенда зависит от resolver
set $backend upstream.internal.example;
location / {
    proxy_pass http://$backend;
}

Более безопасные варианты

  • Поднять локальный кэширующий резолвер и указывать только loopback:
# Использовать только локальные резолверы
resolver 127.0.0.1 [::1] valid=10s;
resolver_timeout 5s;
  • По возможности предпочитайте статические upstream (избегайте переменного proxy_pass)
  • Держите valid маленьким; локальный резолвер должен быть доверенным и усиленным

Зачем это важно

  • Внешние резолверы увеличивают поверхность атаки для подделки ответов
  • Отравленный кэш может незаметно уводить трафик на произвольные upstream
  • Локальный резолвер (например, unbound, dnsmasq) на loopback значительно снижает риск

Укрепляйте NGINX с поддерживаемыми RPM

Используйте NGINX Extras от GetPageSpeed для постоянно обновляемого NGINX и модулей на RHEL/CentOS/Alma/Rocky. Подробнее.