70 KiB
Функции безопасности nginx — результаты проверки
Дата проверки: 10.06.2026
Объект проверки: upstream nginx (официальная документация nginx.org)
Метод: анализ официальной документации и составление примеров конфигурации (без практических тестов на работающем экземпляре)
Сводная таблица
| № | Функция безопасности | Статус | Модуль / механизм |
|---|---|---|---|
| 1.1 | Ограничение доступа по IP-адресу | Подтверждено | ngx_http_access_module; allow; deny |
| 1.2 | Аутентификация по имени пользователя и паролю | Подтверждено | ngx_http_auth_basic_module; auth_basic; auth_basic_user_file |
| 1.3 | Аутентификация по клиентскому TLS-сертификату | Подтверждено с оговорками | ngx_http_ssl_module; ssl_verify_client |
| 1.4 | Авторизация через внешний сервис | Подтверждено с оговорками | ngx_http_auth_request_module; auth_request |
| 1.5 | Комбинирование нескольких проверок доступа | Подтверждено | satisfy; access; auth_basic; auth_request |
| 2.1 | Разделение правил по виртуальным серверам и путям | Подтверждено | ngx_http_core_module; server; location |
| 2.2 | Ограничение HTTP-методов | Подтверждено | ngx_http_core_module; limit_except |
| 2.3 | Запрет доступа к служебным и скрытым файлам | Подтверждено | location; deny all |
| 2.4 | Запрет прямого доступа к внутренним ресурсам | Подтверждено | ngx_http_core_module; internal |
| 3.1 | Поддержка HTTPS/TLS | Подтверждено с оговорками | ngx_http_ssl_module; ssl_certificate |
| 3.2 | Ограничение версий TLS и шифров | Подтверждено | ngx_http_ssl_module; ssl_protocols; ssl_ciphers |
| 3.3 | Проверка клиентского сертификата | Подтверждено | ssl_client_certificate; ssl_verify_client |
| 3.4 | Принудительное использование HTTPS | Подтверждено | return 301/308; Strict-Transport-Security |
| 4.1 | Журналирование HTTP-запросов | Подтверждено | ngx_http_log_module; access_log |
| 4.2 | Журналирование ошибок | Подтверждено | error_log |
| 4.3 | Настройка формата журналов | Подтверждено | log_format |
| 4.4 | Передача журналов в syslog | Подтверждено | access_log syslog; error_log syslog |
| 5.1 | Ограничение частоты запросов | Подтверждено | ngx_http_limit_req_module; limit_req |
| 5.2 | Ограничение количества соединений | Подтверждено | ngx_http_limit_conn_module; limit_conn |
| 5.3 | Ограничение размера клиентского запроса | Подтверждено | ngx_http_core_module; client_max_body_size |
| 5.4 | Ограничение скорости отдачи данных | Подтверждено | ngx_http_core_module; limit_rate |
| 5.5 | Настройка таймаутов соединений | Подтверждено | client_*_timeout; send_timeout; keepalive_timeout |
| 6.1 | Сокрытие версии nginx | Подтверждено | server_tokens off |
| 6.2 | Управление страницами ошибок | Подтверждено | error_page |
| 6.3 | Управление листингом директорий | Подтверждено | ngx_http_autoindex_module; autoindex |
| 7.1 | Обратное проксирование HTTP/HTTPS | Подтверждено | ngx_http_proxy_module; proxy_pass |
| 7.2 | Балансировка и группы upstream | Подтверждено | ngx_http_upstream_module; upstream |
| 7.3 | Управление заголовками при проксировании | Подтверждено | proxy_set_header |
| 8.1 | Задание корневой директории сайта | Подтверждено | ngx_http_core_module; root |
| 8.2 | Задание альтернативного пути для location | Подтверждено | ngx_http_core_module; alias |
| 8.3 | Проверка существования файлов и маршрутизация | Подтверждено | ngx_http_core_module; try_files |
| 8.4 | Ограничение доступа к произвольным каталогам ОС | Подтверждено | root; alias; location; права ФС |
| 9.1 | Исключение неиспользуемых модулей | Подтверждено | configure; load_module |
| 9.2 | Отключение неиспользуемых возможностей конфигурацией | Подтверждено | конфигурация nginx |
| 9.3 | Контроль целостности конфигурации и разрешённых директорий | Не применимо к nginx напрямую (внешняя мера) | afick или иной FIM |
-
1. Идентификация и аутентификация
- 1.1 Ограничение доступа по IP-адресу
- Описание реализации: nginx позволяет ограничивать доступ к ресурсам по IP-адресам клиентов. Для этого используются правила разрешения и запрета доступа.
- Модуль / механизм: ngx_http_access_module; директивы allow, deny
- Комментарий: Подтверждено официальной документацией nginx: модуль предназначен для ограничения доступа по адресам клиентов.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Модуль
ngx_http_access_moduleвходит в стандартную сборку nginx. - Источник: https://nginx.org/en/docs/http/ngx_http_access_module.html
- Результат: Модуль
ngx_http_access_moduleвходит в стандартную сборку nginx. Директивыallowиdenyзадают правила доступа по IP-адресу, сети CIDR,allилиunix:. Правила обрабатываются последовательно; первое совпавшее правило определяет результат. - Пример конфигурации:
location /admin/ { allow 192.168.1.0/24; allow 10.0.0.1; deny all; }
- 1.2 Аутентификация по имени пользователя и паролю
- Описание реализации: nginx поддерживает HTTP Basic Authentication: пользователь вводит имя и пароль, nginx проверяет их по файлу пользователей.
- Модуль / механизм: ngx_http_auth_basic_module; директивы auth_basic, auth_basic_user_file
- Комментарий: Подтверждено официальной документацией nginx: модуль валидирует имя пользователя и пароль по протоколу HTTP Basic Authentication.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Модуль
ngx_http_auth_basic_moduleреализует HTTP Basic Authentication. - Источник: https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
- Результат: Модуль
ngx_http_auth_basic_moduleреализует HTTP Basic Authentication. Директиваauth_basicвключает аутентификацию и задаёт текстовое сообщение для диалога;auth_basic_user_fileуказывает файл с парами «пользователь:хеш_пароля» (формат htpasswd). - Пример конфигурации:
location /secure/ { auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/htpasswd; } - Примечание: Файл паролей создаётся утилитой
htpasswd(пакет apache2-utils или httpd-tools).
- 1.3 Аутентификация по клиентскому TLS-сертификату
- Описание реализации: nginx может запрашивать и проверять клиентский сертификат при HTTPS-соединении.
- Модуль / механизм: ngx_http_ssl_module; директивы ssl_client_certificate, ssl_verify_client, ssl_verify_depth
- Комментарий: Реализуется через SSL/TLS-модуль nginx. Сам SSL-модуль требует включения при сборке и использует OpenSSL.
- Проверка:
- Статус: Подтверждено с оговорками
- Ревью функции: Описание и механизм в целом адекватны; учтены оговорки сборки, конфигурации или эксплуатации. Модуль
ngx_http_ssl_moduleподдерживает проверку клиентских сертификатов. - Источник: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_verify_client
- Результат: Модуль
ngx_http_ssl_moduleподдерживает проверку клиентских сертификатов. Директиваssl_verify_client onтребует обязательного предъявления и проверки сертификата;ssl_client_certificateзадаёт файл доверенного CA;ssl_verify_depthограничивает глубину цепочки. Модуль требует сборки с--with-http_ssl_moduleи библиотекой OpenSSL. - Пример конфигурации:
server { listen 443 ssl; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_client_certificate /etc/nginx/ssl/ca.crt; ssl_verify_client on; ssl_verify_depth 2; } - Примечание: Акцент на идентификации клиента; для контекста защиты канала см. также п. 3.3.
- 1.4 Авторизация через внешний сервис
- Описание реализации: nginx может выполнять подзапрос во внешний сервис авторизации и разрешать или запрещать доступ по результату ответа.
- Модуль / механизм: ngx_http_auth_request_module; директивы auth_request, auth_request_set
- Комментарий: Модуль официально поддерживается, но в upstream nginx не собирается по умолчанию и должен включаться параметром сборки --with-http_auth_request_module.
- Проверка:
- Статус: Подтверждено с оговорками
- Ревью функции: Описание и механизм в целом адекватны; учтены оговорки сборки, конфигурации или эксплуатации. Модуль
ngx_http_auth_request_moduleвыполняет подзапрос к указанному URI; - Источник: https://nginx.org/en/docs/http/ngx_http_auth_request_module.html
- Результат: Модуль
ngx_http_auth_request_moduleвыполняет подзапрос к указанному URI; доступ разрешается при ответе 2xx, запрещается при 401/403. Директиваauth_request_setпозволяет передать значения из заголовков ответа авторизационного сервиса в переменные nginx. В официальной сборке модуль включается флагом--with-http_auth_request_module; в большинстве дистрибутивных пакетов он уже присутствует. - Пример конфигурации:
location = /auth { internal; proxy_pass http://auth-service:8080/validate; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; } location / { auth_request /auth; proxy_pass http://backend; } - Примечание: См.
Требования безопасности для включения в ТУ — проверка.mdп. 4;Минимизация поверхности атаки nginx — проверка.mdп. 4.
- 1.5 Комбинирование нескольких проверок доступа
- Описание реализации: nginx позволяет комбинировать несколько механизмов проверки доступа, например ограничение по IP и Basic Authentication.
- Модуль / механизм: satisfy; совместно с access, auth_basic, auth_request
- Комментарий: В документации nginx указано, что одновременное ограничение доступа по адресу, паролю и подзапросу управляется директивой satisfy.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
satisfyуправляет логикой комбинирования проверокallow/deny,auth_basicиauth_request. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#satisfy
- Результат: Директива
satisfyуправляет логикой комбинирования проверокallow/deny,auth_basicиauth_request. Значениеall(по умолчанию) требует прохождения всех проверок; значениеany— достаточно одной успешной. - Пример конфигурации:
location /admin/ { satisfy all; allow 192.168.1.0/24; deny all; auth_basic "Admin Area"; auth_basic_user_file /etc/nginx/htpasswd; } - Примечание: См.
Требования безопасности для включения в ТУ — проверка.mdп. 4;Минимизация поверхности атаки nginx — проверка.mdп. 4.
- 1.1 Ограничение доступа по IP-адресу
-
2. Разграничение доступа к ресурсам
- 2.1 Разделение правил по виртуальным серверам и путям
- Описание реализации: nginx позволяет задавать разные правила обработки и доступа для разных виртуальных серверов и URL-путей.
- Модуль / механизм: ngx_http_core_module; блоки server, location
- Комментарий: Это базовый механизм конфигурации nginx. Используется для разделения публичных, служебных и закрытых разделов сайта.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Блоки
serverопределяют виртуальные хосты (поlisten,server_name), блокиlocation— правила для URI-префиксов, регулярных выражений и точных совпадений. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#server , https://nginx.org/en/docs/http/ngx_http_core_module.html#location
- Результат: Блоки
serverопределяют виртуальные хосты (поlisten,server_name), блокиlocation— правила для URI-префиксов, регулярных выражений и точных совпадений. Это базовый механизм разграничения доступа и обработки запросов. - Пример конфигурации:
server { listen 80; server_name public.example.com; location / { root /var/www/public; } } server { listen 80; server_name admin.example.com; location / { allow 10.0.0.0/8; deny all; root /var/www/admin; } }
- 2.2 Ограничение HTTP-методов
- Описание реализации: nginx позволяет задавать отдельные правила доступа для методов, отличных от явно разрешённых.
- Модуль / механизм: ngx_http_core_module; директива limit_except
- Комментарий: Используется для ограничения методов вроде PUT, DELETE, если они не требуются приложению.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
limit_exceptзадаёт методы, для которых применяются вложенные директивы доступа. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_except
- Результат: Директива
limit_exceptзадаёт методы, для которых применяются вложенные директивы доступа. Методы, не перечисленные вlimit_except, обрабатываются без дополнительных ограничений внутри данного блока. - Минимальный аудит конфигурации:
- 2.1 Разделение правил по виртуальным серверам и путям
nginx -T 2>/dev/null | grep -E 'limit_except|request_method'
- **Пример конфигурации:**nginx
location /uploads/ {
limit_except GET HEAD {
deny all;
}
}
```
-
2.3 Запрет доступа к служебным и скрытым файлам
- Описание реализации: nginx позволяет запрещать доступ к отдельным путям и шаблонам URI через правила location и deny all.
- Модуль / механизм: location, регулярные выражения, deny all
- Комментарий: Это не отдельный модуль безопасности, а конфигурационный механизм безопасной настройки.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Комбинация
locationс регулярными выражениями иdeny allпозволяет блокировать доступ к скрытым файлам (`. - Источник: https://nginx.org/en/docs/http/ngx_http_access_module.html , https://nginx.org/en/docs/http/ngx_http_core_module.html#location
- Результат: Комбинация
locationс регулярными выражениями иdeny allпозволяет блокировать доступ к скрытым файлам (.git,.env,.htaccessи т.п.). Это стандартный конфигурационный паттерн безопасности. - Пример конфигурации:
location ~ /\. { deny all; access_log off; log_not_found off; } location ~* \.(bak|sql|log|conf)$ { deny all; }
-
2.4 Запрет прямого доступа к внутренним ресурсам
- Описание реализации: nginx поддерживает внутренние location-блоки, которые недоступны напрямую клиенту и могут использоваться только для внутренних перенаправлений.
- Модуль / механизм: ngx_http_core_module; директива internal
- Комментарий: Применяется для скрытия служебных маршрутов и файлов от прямого обращения пользователя.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
internalограничивает доступ к location только для внутренних запросов (error_page, rewrite, auth_request, X-Accel-Redirect и др. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#internal
- Результат: Директива
internalограничивает доступ к location только для внутренних запросов (error_page, rewrite, auth_request, X-Accel-Redirect и др.). Прямые клиентские запросы к такому location возвращают 404. - Пример конфигурации:
location /protected-files/ { internal; alias /var/data/files/; } location /download { # Клиент обращается сюда; nginx внутренне отдаёт файл rewrite ^ /protected-files/document.pdf last; }
-
3. Защита соединения и передаваемых данных
- 3.1 Поддержка HTTPS/TLS
- Описание реализации: nginx поддерживает HTTPS при наличии SSL-модуля. Можно задавать сертификаты, ключи, версии TLS и наборы шифров.
- Модуль / механизм: ngx_http_ssl_module; ssl_certificate, ssl_certificate_key, ssl_protocols, ssl_ciphers
- Комментарий: SSL-модуль nginx предоставляет поддержку HTTPS, требует OpenSSL и должен быть включён при сборке.
- Проверка:
- Статус: Подтверждено с оговорками
- Ревью функции: Описание и механизм в целом адекватны; учтены оговорки сборки, конфигурации или эксплуатации. Модуль
ngx_http_ssl_moduleобеспечивает HTTPS. - Источник: https://nginx.org/en/docs/http/ngx_http_ssl_module.html
- Результат: Модуль
ngx_http_ssl_moduleобеспечивает HTTPS. Директивыssl_certificateиssl_certificate_keyзадают серверный сертификат и ключ;ssl_protocolsиssl_ciphers— параметры TLS. Модуль требует OpenSSL и включения при сборке (--with-http_ssl_module). - Пример конфигурации:
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; }
- 3.2 Ограничение версий TLS и шифров
- Описание реализации: nginx позволяет задавать допустимые версии TLS и наборы шифров.
- Модуль / механизм: ngx_http_ssl_module; ssl_protocols, ssl_ciphers
- Комментарий: Для ТУ/ПМИ нужно отдельно фиксировать допустимую криптографическую политику.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
ssl_protocolsзадаёт разрешённые версии протокола (TLSv1. - Источник: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols , https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers
- Результат: Директива
ssl_protocolsзадаёт разрешённые версии протокола (TLSv1.2, TLSv1.3 и др.);ssl_ciphers— список шифронаборов в формате OpenSSL. Дополнительно доступныssl_prefer_server_ciphersи параметры для TLS 1.3 (ssl_conf_commandв новых версиях). - Пример конфигурации:
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; - Примечание: Конкретная криптографическая политика должна быть зафиксирована в ТУ/ПМИ отдельно.
- 3.3 Проверка клиентского сертификата
- Описание реализации: nginx может проверять клиентские TLS-сертификаты по доверенному центру сертификации.
- Модуль / механизм: ssl_client_certificate, ssl_verify_client
- Комментарий: Может использоваться как механизм строгой аутентификации клиента.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
ssl_verify_clientподдерживает значенияon,off,optional,optional_no_ca. - Источник: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_verify_client
- Результат: Директива
ssl_verify_clientподдерживает значенияon,off,optional,optional_no_ca. Приonклиент обязан предъявить сертификат, подписанный доверенным CA изssl_client_certificate. Режимoptionalзапрашивает сертификат, но не прерывает соединение при его отсутствии. - Пример конфигурации:
server { listen 443 ssl; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_client_certificate /etc/nginx/ssl/client-ca.crt; ssl_verify_client optional; ssl_verify_depth 3; } - Примечание: В отличие от п. 1.3, здесь акцент на защите канала и политике доверия к клиентским сертификатам.
- 3.4 Принудительное использование HTTPS
- Описание реализации: nginx может перенаправлять HTTP-запросы на HTTPS и добавлять заголовки безопасности.
- Модуль / механизм: return 301/308; add_header Strict-Transport-Security
- Комментарий: HSTS реализуется через HTTP-заголовок, а не отдельным модулем безопасности.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Редирект HTTP→HTTPS реализуется директивой
return(301 или 308). - Источник: https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return , https://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header
- Результат: Редирект HTTP→HTTPS реализуется директивой
return(301 или 308). Заголовок HSTS (Strict-Transport-Security) добавляется черезadd_headerв HTTPS-блоке. Отдельного модуля HSTS в nginx нет. - Пример конфигурации:
server { listen 80; server_name example.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name example.com; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; }
- 3.1 Поддержка HTTPS/TLS
-
4. Регистрация событий и аудит
- 4.1 Журналирование HTTP-запросов
- Описание реализации: nginx ведёт журнал HTTP-запросов в настраиваемом формате.
- Модуль / механизм: ngx_http_log_module; access_log, log_format
- Комментарий: Официальный модуль nginx записывает request logs в заданном формате.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Модуль
ngx_http_log_moduleзаписывает access log. - Источник: https://nginx.org/en/docs/http/ngx_http_log_module.html
- Результат: Модуль
ngx_http_log_moduleзаписывает access log. Директиваaccess_logзадаёт путь (или syslog) и формат; по умолчанию используется форматcombined. Журналирование можно отключить (access_log off) на уровне server/location. - Пример конфигурации:
http { access_log /var/log/nginx/access.log combined; }
- 4.2 Журналирование ошибок
- Описание реализации: nginx ведёт журнал ошибок, где фиксируются проблемы обработки запросов, конфигурации и взаимодействия с backend.
- Модуль / механизм: error_log
- Комментарий: Официальная документация указывает, что nginx пишет error log и позволяет задавать место и уровень журналирования.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
error_logзадаёт файл (или syslog) и уровень детализации:debug,info,notice,warn,error,crit,alert,emerg. - Источник: https://nginx.org/en/docs/ngx_core_module.html#error_log
- Результат: Директива
error_logзадаёт файл (или syslog) и уровень детализации:debug,info,notice,warn,error,crit,alert,emerg. Уровень по умолчанию —error. - Пример конфигурации:
error_log /var/log/nginx/error.log warn;
- 4.3 Настройка формата журналов
- Описание реализации: nginx позволяет задавать собственный формат access log с нужными полями.
- Модуль / механизм: log_format
- Комментарий: Для ПМИ можно проверять наличие обязательных полей в журнале.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
log_formatопределяет именованный формат с произвольным набором переменных ($remote_addr,$request,$status,$body_bytes_sent,$http_user_agentи др. - Источник: https://nginx.org/en/docs/http/ngx_http_log_module.html#log_format
- Результат: Директива
log_formatопределяет именованный формат с произвольным набором переменных ($remote_addr,$request,$status,$body_bytes_sent,$http_user_agentи др.). Формат применяется вaccess_log. - Пример конфигурации:
log_format audit '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' '$request_time $upstream_response_time'; access_log /var/log/nginx/audit.log audit;
- 4.4 Передача журналов в syslog
- Описание реализации: nginx поддерживает запись access_log и error_log в syslog.
- Модуль / механизм: access_log syslog:...; error_log syslog:...
- Комментарий: Подтверждено официальной документацией nginx по syslog.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. nginx поддерживает запись
access_logиerror_logв syslog с параметрамиserver,facility,tag,severity. - Источник: https://nginx.org/en/docs/syslog.html
- Результат: nginx поддерживает запись
access_logиerror_logв syslog с параметрамиserver,facility,tag,severity. Формат:syslog:server=address[,parameter=value]. - Пример конфигурации:
error_log syslog:server=192.168.1.1:514,facility=local7,tag=nginx,severity=error; access_log syslog:server=192.168.1.1:514,facility=local7,tag=nginx,severity=info combined; - Примечание: См. ПМИ п. 14 в
Проверочные мероприятия для ПМИ — проверка.md;Контроль целостности хранимого кода и конфигурации — проверка.mdп. 13;Минимально необходимые полномочия nginx — проверка.mdп. 5.
- 4.1 Журналирование HTTP-запросов
-
5. Ограничение нагрузки и защита от избыточных запросов
- 5.1 Ограничение частоты запросов
- Описание реализации: nginx может ограничивать частоту обработки запросов по заданному ключу, например по IP-адресу клиента.
- Модуль / механизм: ngx_http_limit_req_module; limit_req_zone, limit_req
- Комментарий: Модуль использует метод leaky bucket и официально предназначен для ограничения request rate.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Модуль
ngx_http_limit_req_moduleреализует алгоритм leaky bucket. - Источник: https://nginx.org/en/docs/http/ngx_http_limit_req_module.html
- Результат: Модуль
ngx_http_limit_req_moduleреализует алгоритм leaky bucket.limit_req_zoneопределяет зону и ключ (например,$binary_remote_addr);limit_reqприменяет ограничение с параметрамиrateиburst. - Пример конфигурации:
http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; server { location / { limit_req zone=one burst=20 nodelay; } } } - Примечание: См.
Требования безопасности для включения в ТУ — проверка.mdп. 15;Проверочные мероприятия для ПМИ — проверка.mdп. 15.
- 5.2 Ограничение количества соединений
- Описание реализации: nginx может ограничивать количество соединений по заданному ключу, например по IP-адресу клиента.
- Модуль / механизм: ngx_http_limit_conn_module; limit_conn_zone, limit_conn
- Комментарий: Официальный модуль ограничивает количество соединений per defined key.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Модуль
ngx_http_limit_conn_moduleограничивает число одновременных соединений по ключу. - Источник: https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
- Результат: Модуль
ngx_http_limit_conn_moduleограничивает число одновременных соединений по ключу.limit_conn_zoneзадаёт зону;limit_connприменяет лимит. - Пример конфигурации:
http { limit_conn_zone $binary_remote_addr zone=addr:10m; server { location / { limit_conn addr 10; } } } - Примечание: См.
Требования безопасности для включения в ТУ — проверка.mdп. 16;Проверочные мероприятия для ПМИ — проверка.mdп. 16.
- 5.3 Ограничение размера клиентского запроса
- Описание реализации: nginx позволяет ограничивать максимальный размер тела клиентского запроса.
- Модуль / механизм: ngx_http_core_module; client_max_body_size
- Комментарий: Используется для защиты от чрезмерно больших запросов и нежелательных загрузок.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
client_max_body_sizeзадаёт максимальный размер тела запроса. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
- Результат: Директива
client_max_body_sizeзадаёт максимальный размер тела запроса. Значение по умолчанию — 1m. При превышении nginx возвращает 413 (Request Entity Too Large). - Пример конфигурации:
server { client_max_body_size 10m; } - Примечание: См.
Требования безопасности для включения в ТУ — проверка.mdп. 15;Проверочные мероприятия для ПМИ — проверка.mdп. 15.
- 5.4 Ограничение скорости отдачи данных
- Описание реализации: nginx позволяет ограничивать скорость передачи ответа клиенту.
- Модуль / механизм: ngx_http_core_module; limit_rate
- Комментарий: Используется для управления нагрузкой и потреблением ресурсов.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
limit_rateограничивает скорость отдачи ответа клиенту (байт/с). - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate
- Результат: Директива
limit_rateограничивает скорость отдачи ответа клиенту (байт/с). Дополнительноlimit_rate_afterпозволяет отдавать начальный объём без ограничения. - Пример конфигурации:
location /downloads/ { limit_rate 500k; } - Примечание: См.
Требования безопасности для включения в ТУ — проверка.mdп. 16;Проверочные мероприятия для ПМИ — проверка.mdп. 16.
- 5.5 Настройка таймаутов соединений
- Описание реализации: nginx позволяет задавать таймауты чтения заголовков, тела запроса, отправки ответа и keepalive.
- Модуль / механизм: client_header_timeout, client_body_timeout, send_timeout, keepalive_timeout
- Комментарий: Снижает риск удержания ресурсов медленными или зависшими соединениями.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директивы
client_header_timeout,client_body_timeout,send_timeoutиkeepalive_timeoutзадают таймауты на разных этапах обработки соединения. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html
- Результат: Директивы
client_header_timeout,client_body_timeout,send_timeoutиkeepalive_timeoutзадают таймауты на разных этапах обработки соединения. Значения по умолчанию: 60s для header/body/send, 75s для keepalive. - Пример конфигурации:
http { client_header_timeout 10s; client_body_timeout 10s; send_timeout 10s; keepalive_timeout 30s; }
- 5.1 Ограничение частоты запросов
-
6. Управление раскрытием информации
- 6.1 Сокрытие версии nginx
- Описание реализации: nginx позволяет отключить отображение версии сервера в стандартных ответах.
- Модуль / механизм: server_tokens off
- Комментарий: Важно: server_tokens off скрывает версию, но не всегда полностью скрывает сам факт использования nginx.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
server_tokens offубирает номер версии из заголовкаServerи со страниц ошибок nginx. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens
- Результат: Директива
server_tokens offубирает номер версии из заголовкаServerи со страниц ошибок nginx. ЗаголовокServerпо-прежнему содержит слово «nginx». - Минимальный аудит конфигурации:
- 6.1 Сокрытие версии nginx
nginx -T 2>/dev/null | grep server_tokens
- **Пример конфигурации:**nginx
http {
server_tokens off;
}
```
- Примечание: Для полного сокрытия идентификатора сервера требуются дополнительные меры (например, заголовки через more_clear_headers в сторонних модулях).
- 6.2 Управление страницами ошибок
- Описание реализации: nginx позволяет задавать собственные страницы ошибок и внутренние перенаправления.
- Модуль / механизм: error_page
- Комментарий: Позволяет не раскрывать технические детали пользователю.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
error_pageперенаправляет обработку указанных кодов ошибок на URI, именованный location или внешний адрес. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page
- Результат: Директива
error_pageперенаправляет обработку указанных кодов ошибок на URI, именованный location или внешний адрес. Позволяет показывать пользовательские страницы вместо стандартных сообщений nginx. - Пример конфигурации:
error_page 404 /custom_404.html; error_page 500 502 503 504 /custom_50x.html; location = /custom_404.html { root /var/www/errors; internal; }
- 6.3 Управление листингом директорий
- Описание реализации: nginx может формировать листинг директорий через autoindex, если режим включён.
- Модуль / механизм: ngx_http_autoindex_module; autoindex
- Комментарий: Модуль официально формирует directory listing для запросов, оканчивающихся /, когда не найден индексный файл. Для безопасной конфигурации должен быть отключён, если не требуется.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Модуль
ngx_http_autoindex_moduleвключается директивойautoindex onи формирует HTML-листинг каталога при отсутствии индексного файла. - Источник: https://nginx.org/en/docs/http/ngx_http_autoindex_module.html
- Результат: Модуль
ngx_http_autoindex_moduleвключается директивойautoindex onи формирует HTML-листинг каталога при отсутствии индексного файла. По умолчаниюautoindex off. Для безопасной конфигурации рекомендуется явно отключать или не включать. - Минимальный аудит конфигурации:
nginx -T 2>/dev/null | grep autoindex
- **Пример конфигурации:**nginx
location /public-files/ {
autoindex off;
root /var/www/files;
}
```
-
7. Обратное проксирование и изоляция backend-сервисов
- 7.1 Обратное проксирование HTTP/HTTPS
- Описание реализации: nginx может принимать клиентские запросы и передавать их внутренним backend-сервисам.
- Модуль / механизм: ngx_http_proxy_module; proxy_pass
- Комментарий: Официальный модуль proxy передаёт запросы другому серверу.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Модуль
ngx_http_proxy_moduleпередаёт HTTP-запросы на backend черезproxy_pass. - Источник: https://nginx.org/en/docs/http/ngx_http_proxy_module.html
- Результат: Модуль
ngx_http_proxy_moduleпередаёт HTTP-запросы на backend черезproxy_pass. Поддерживается проксирование на HTTP и HTTPS upstream. - Пример конфигурации:
location /api/ { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
- 7.2 Балансировка и группы upstream
- Описание реализации: nginx позволяет определять группы backend-серверов и использовать их для proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, grpc_pass.
- Модуль / механизм: ngx_http_upstream_module; upstream
- Комментарий: Документация nginx описывает upstream как механизм групп серверов для разных pass-директив.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Блок
upstreamопределяет группу backend-серверов с методами балансировки (round-robin по умолчанию,least_conn,ip_hash,hash). - Источник: https://nginx.org/en/docs/http/ngx_http_upstream_module.html
- Результат: Блок
upstreamопределяет группу backend-серверов с методами балансировки (round-robin по умолчанию,least_conn,ip_hash,hash). Используется сproxy_pass,fastcgi_pass,uwsgi_pass,scgi_pass,grpc_pass. - Пример конфигурации:
upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; keepalive 32; } server { location / { proxy_pass http://backend; } }
- 7.3 Управление заголовками при проксировании
- Описание реализации: nginx позволяет явно задавать заголовки, передаваемые backend-сервису.
- Модуль / механизм: proxy_set_header
- Комментарий: Важно для корректной передачи адреса клиента и исключения нежелательных/подменённых заголовков.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
proxy_set_headerзадаёт или переопределяет заголовки запроса к backend. - Источник: https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header
- Результат: Директива
proxy_set_headerзадаёт или переопределяет заголовки запроса к backend. По умолчанию nginx передаёт ряд заголовков, ноHostиConnectionмогут требовать явной настройки.proxy_pass_request_headersуправляет передачей клиентских заголовков. - Пример конфигурации:
location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
- 7.1 Обратное проксирование HTTP/HTTPS
-
8. Управление статическим содержимым и директориями веб-приложений
- 8.1 Задание корневой директории сайта
- Описание реализации: nginx обслуживает файлы из директории, заданной директивой root.
- Модуль / механизм: ngx_http_core_module; root
- Комментарий: Используется для определения разрешённой области веб-контента.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
rootзадаёт корневую директорию для запросов в данном server/location. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#root
- Результат: Директива
rootзадаёт корневую директорию для запросов в данном server/location. Путь к файлу формируется какroot+ URI. - Пример конфигурации:
server { root /var/www/example.com; location / { index index.html; } }
- 8.2 Задание альтернативного пути для location
- Описание реализации: nginx позволяет сопоставлять URI с другой директорией файловой системы через alias.
- Модуль / механизм: ngx_http_core_module; alias
- Комментарий: Требует осторожной настройки, чтобы не открыть произвольные каталоги ОС.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
aliasзаменяет часть URI на указанный путь файловой системы. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#alias
- Результат: Директива
aliasзаменяет часть URI на указанный путь файловой системы. При некорректной настройке (особенно с регулярными выражениями) возможен path traversal. - Пример конфигурации:
location /images/ { alias /var/www/static/images/; } - Примечание: Для location с регулярным выражением
aliasдолжен содержать захватывающие группы; завершающий слэш обязателен.
- 8.3 Проверка существования файлов и маршрутизация
- Описание реализации: nginx позволяет проверять наличие файлов и выполнять внутреннюю маршрутизацию через try_files.
- Модуль / механизм: ngx_http_core_module; try_files
- Комментарий: Используется для контроля, какой файл или маршрут будет обработан.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Директива
try_filesпроверяет существование файлов/каталогов в указанном порядке и выполняет внутреннее перенаправление на последний параметр при отсутствии совпадений. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#try_files
- Результат: Директива
try_filesпроверяет существование файлов/каталогов в указанном порядке и выполняет внутреннее перенаправление на последний параметр при отсутствии совпадений. - Пример конфигурации:
location / { root /var/www/html; try_files $uri $uri/ /index.html; }
- 8.4 Ограничение доступа к произвольным каталогам ОС
- Описание реализации: nginx должен быть настроен так, чтобы обслуживать файлы только из разрешённых директорий.
- Модуль / механизм: root, alias, location, deny all, права ФС
- Комментарий: Это не отдельный модуль nginx, а требование безопасной конфигурации.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. nginx обслуживает только те пути, которые явно заданы через
root/aliasвlocation. - Источник: https://nginx.org/en/docs/http/ngx_http_core_module.html#root , https://nginx.org/en/docs/http/ngx_http_access_module.html
- Результат: nginx обслуживает только те пути, которые явно заданы через
root/aliasвlocation. Безопасная конфигурация ограничиваетlocation /, запрещает доступ к системным путям и сочетается с правами файловой системы (процесс nginx не должен иметь доступ к чувствительным каталогам). - Пример конфигурации:
server { root /var/www/site; location / { try_files $uri =404; } location ~ ^/(\.\.|etc|proc|sys) { deny all; } } - Примечание: Дополнительно на уровне ОС следует ограничить права пользователя, от которого работает nginx. См.
Минимально необходимые полномочия nginx — проверка.mdп. 3;Контроль выполнения кода — проверка.mdп. 14.
- 8.1 Задание корневой директории сайта
-
9. Минимизация поверхности атаки
- 9.1 Исключение неиспользуемых модулей
- Описание реализации: nginx может собираться с разным составом модулей; неиспользуемые модули могут быть исключены из сборки или не загружаться.
- Модуль / механизм: Параметры сборки; dynamic modules; load_module
- Комментарий: Это проектная мера снижения поверхности атаки.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. При сборке nginx параметры
./configureпозволяют включать/отключать модули (--without-http_autoindex_module,--with-http_ssl_moduleи др. - Источник: https://nginx.org/en/docs/configure.html , https://nginx.org/en/docs/ngx_core_module.html#load_module
- Результат: При сборке nginx параметры
./configureпозволяют включать/отключать модули (--without-http_autoindex_module,--with-http_ssl_moduleи др.). Динамические модули подключаются черезload_moduleв конфигурации; неиспользуемые модули можно не загружать. - Пример конфигурации:
# Загрузка только необходимых динамических модулей load_module modules/ngx_http_geoip_module.so; # Статические модули определяются при сборке: # ./configure --without-http_autoindex_module --with-http_ssl_module - Примечание: См.
Минимизация поверхности атаки nginx — проверка.mdп. 1–2.
- 9.2 Отключение неиспользуемых возможностей конфигурацией
- Описание реализации: Неиспользуемые возможности должны быть отключены в конфигурации: autoindex, лишние методы, лишние proxy/FastCGI-направления.
- Модуль / механизм: Конфигурация nginx
- Комментарий: Это не отдельная функция nginx, а требование безопасной эксплуатации.
- Проверка:
- Статус: Подтверждено
- Ревью функции: Описание реализации и заявленный механизм соответствуют документации nginx. Неиспользуемые возможности отключаются конфигурацией:
autoindex off, ограничение методов черезlimit_except, удаление неиспользуемыхlocationсproxy_pass/fastcgi_pass. - Источник: https://nginx.org/en/docs/http/ngx_http_autoindex_module.html , https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_except
- Результат: Неиспользуемые возможности отключаются конфигурацией:
autoindex off, ограничение методов черезlimit_except, удаление неиспользуемыхlocationсproxy_pass/fastcgi_pass. Это требование безопасной эксплуатации, а не отдельный модуль. - Пример конфигурации:
server { autoindex off; location / { limit_except GET HEAD POST { deny all; } } # Неиспользуемые направления не включаются в конфигурацию # location /legacy-api/ { proxy_pass http://old-backend; } } - Примечание: См.
Минимизация поверхности атаки nginx — проверка.mdп. 4–10.
- 9.3 Контроль целостности конфигурации и разрешённых директорий
- Описание реализации: Конфигурация nginx и разрешённые директории веб-контента должны контролироваться внешним механизмом целостности.
- Модуль / механизм: afick или иной утверждённый механизм
- Комментарий: nginx не выполняет контроль целостности сам. Это внешняя мера, требуемая для сертификационной логики.
- Проверка:
- Статус: Не применимо к nginx напрямую (внешняя мера)
- Ревью функции: Корректно отнесено к внешней мере: nginx не реализует функцию напрямую. nginx не реализует контроль целостности файлов (FIM).
- Источник: https://nginx.org/en/docs/ (функция FIM в nginx не описана)
- Результат: nginx не реализует контроль целостности файлов (FIM). Данное требование выполняется внешними средствами: afick, AIDE, OSSEC или иным утверждённым механизмом. Контролируемые объекты:
/etc/nginx/(конфигурация), директорииroot/aliasвеб-контента. - Пример реализации:
# /etc/afick.conf (фрагмент) /etc/nginx/ R /var/www/ R - Примечание: См.
Минимизация поверхности атаки nginx — проверка.mdп. 4–10. - Примечание: Для ПМИ проверяется наличие и работоспособность внешнего средства, а не конфигурация nginx. Статус отражает внешнюю меру (см.
Контроль целостности хранимого кода и конфигурации — проверка.md; ПМИ п. 24;Контроль выполнения кода — проверка.mdп. 15–16).
- 9.1 Исключение неиспользуемых модулей