nginx
nginx это широко используемый веб-сервер и reverse proxy. Его безопасность сильно зависит от ручных настроек: конфигурации TLS, security headers и отключения листинга директорий.
Почему специфичное усиление nginx имеет значение
На сайте проекта название дано как «engine x» (nginx.org), так его и произносят.
nginx обрабатывает терминацию TLS и часто находится прямо перед приложением, что делает его собственную конфигурацию, а не только приложение за ней, значимой частью общей поверхности атаки сервера.
Часто упускаемая настройка
server_tokens, которая по умолчанию раскрывает точную версию nginx в каждом HTTP-ответе, даёт злоумышленникам преимущество в определении, какие известные уязвимости могут подойти, практически без какой-либо операционной пользы.
Защищённую конфигурацию см. здесь: руководство по безопасности nginx.
Аудит уже работающего nginx
Начните с выяснения того, что у вас на самом деле установлено. Большую часть ответов дают параметры командной строки:
nginx -v
nginx -V
nginx -T | grep -E 'server_tokens|ssl_protocols|add_header|^user'
ps -o user,pid,cmd -C nginx
-v выводит версию, -V добавляет версию компилятора и параметры сборки (какие модули встроены), а -T проверяет конфигурацию и выводит все подключённые файлы, так что один grep охватывает все include. Последняя команда показывает, от какой учётной записи работают процессы. Директива user задаёт учётные данные рабочих процессов и по умолчанию равна nobody, как указано в справочнике основного модуля. Рабочие процессы должны работать от непривилегированной записи, которой не принадлежит ничего важного. Главный процесс обычно остаётся root, чтобы занять порты 80 и 443.
Посмотрите и на версию. Сравните её с исправленными версиями на странице уведомлений безопасности nginx, где для каждой проблемы перечислены уязвимые и неуязвимые диапазоны. Свежий реальный пример разобран в материале про NGINX Rift.
Как поддерживать актуальность без простоев
На nginx.org публикуются две ветки пакетов. По странице пакетов для Linux, stable это репозиторий по умолчанию на всех платформах, а mainline для тех, кому нужен самый новый код. Репозитории дистрибутива это третий источник, поэтому выясните, из какого репозитория пришёл установленный пакет (в Debian и Ubuntu это покажет apt policy nginx), прежде чем считать, что исправление из уведомления до вас дошло. Для Debian и Ubuntu инструкция nginx.org также советует закрепление (pin) в apt, чтобы пакеты с nginx.org имели приоритет над пакетами дистрибутива.
Изменения конфигурации и обновления не должны обрывать соединения. Всегда сначала проверяйте, затем перезагружайте:
nginx -t && systemctl reload nginx
При перезагрузке главный процесс проверяет синтаксис и пытается применить новую конфигурацию. Если не получилось, он откатывается и продолжает работать со старой. Если получилось, запускаются новые рабочие процессы, а старые дообслуживают своих клиентов и завершаются, как описано в документации по управлению nginx. Храните конфигурацию в системе контроля версий, чтобы неудачное изменение откатывалось, а не расследовалось. Включите nginx в регулярный процесс установки обновлений, а по TLS, заголовкам и ограничениям пользуйтесь руководством по защите.
Связанные термины: TLS / SSL, Security headers, server_tokens, WAF, limit_req, ssl_protocols, Обратный прокси (reverse proxy), HSTS (строгая транспортная безопасность HTTP), CORS (cross-origin resource sharing).
В новостях: NGINX Rift (CVE-2026-42945) это критическое переполнение буфера 18-летней давности в модуле rewrite, исправленное в nginx 1.30.1 и 1.31.0.
Часто задаваемые вопросы
Nginx изначально более или менее безопасен, чем другие веб-серверы?
Безопасность гораздо сильнее зависит от конфигурации, чем от выбора самого веб-сервера; nginx широко используется и хорошо документирован, что делает безопасную настройку сравнительно простой.
Обрабатывает ли nginx TLS/SSL напрямую?
Да, nginx часто настраивают на самостоятельную терминацию TLS, обработку шифрования и проверку сертификата до передачи открытого трафика приложению за ним.
Какое быстрое улучшение можно сделать для стандартной установки nginx?
Отключение server_tokens и добавление стандартных security headers, обе настройки занимают минуты и заметно снижают объём информации, доступной злоумышленнику.
Как узнать, какая версия nginx и какие модули у меня работают?
Выполните nginx -v для версии и nginx -V для версии с версией компилятора и параметрами сборки, по которым видно встроенные модули. Сравните версию со страницей уведомлений безопасности nginx.
Безопасно ли перезагружать nginx на работающем сервере?
Да, если сначала проверить конфигурацию командой nginx -t. При перезагрузке nginx сохраняет старую конфигурацию, если новая не применилась, а при успехе старые рабочие процессы дообслуживают текущих клиентов и завершаются, поэтому соединения не обрываются.
Хотите увидеть, в каком состоянии ваш сервер?
Запустите бесплатную read-only проверку сервера или откройте Security Lab и посмотрите цикл обнаружение, сдерживание, восстановление, проверка в действии.
Получить бесплатную проверку сервераОткрыть Security Lab