27 KiB
27 KiB
Контроль целостности хранимого кода и конфигурации — результаты проверки
Дата проверки: 10.06.2026
Объект проверки: внешний FIM (afick или аналог) + пути, связанные с nginx
Метод: ревью мер контроля, примеры конфигурации FIM и прав доступа, команды верификации (без настройки afick на стенде)
Сводная таблица
| № | Объект контроля | Статус | Механизм |
|---|---|---|---|
| 1 | Основной конфигурационный файл nginx | Обязательно | afick |
| 2 | Подключаемые конфигурационные файлы nginx | Обязательно | afick |
| 3 | Разрешённые директории веб-приложений | Обязательно | afick |
| 4 | Директории статического веб-контента | Обязательно | afick |
| 5 | Динамические .so-модули nginx | Обязательно | afick |
| 6 | Файлы njs | Условно (если используется njs) | afick |
| 7 | Perl-файлы | Условно (если используется Perl) | afick |
| 8 | XSLT-файлы | Условно (если используется XSLT) | afick |
| 9 | SSI-файлы | Условно (если включён SSI) | afick |
| 10 | Файлы WebDAV upload | Условно (если включён WebDAV) | afick |
| 11 | Сертификаты и ключи TLS | Обязательно | afick + права ФС |
| 12 | Файлы паролей Basic Authentication | Условно (если используется auth_basic) | afick + права ФС |
| 13 | Файлы журналов nginx | Комбинированная мера | права ФС + syslog |
-
Основной конфигурационный файл nginx
- Причина контроля: Конфигурация определяет правила доступа, маршрутизацию, передачу запросов обработчикам и загрузку модулей.
- Механизм контроля: afick или иной утверждённый механизм контроля целостности.
- Ожидаемый результат: Несанкционированное изменение конфигурации выявляется.
- Проверка:
- Статус: Обязательно
- Ревью меры контроля: Причина и механизм полностью адекватны. Изменение
nginx.confможет включитьload_module,proxy_passна произвольный backend или ослабитьallow/deny. FIM — единственный корректный способ контроля; nginx сам целостность не проверяет. - Источник: Внешнее средство FIM; https://nginx.org/en/docs/ (встроенный FIM не описан)
- Связь с nginx: главный файл конфигурации, директива
includeподключает остальные файлы - Контролируемые пути (пример):
/etc/nginx/nginx.conf - Пример реализации:
# /etc/afick.conf (фрагмент) /etc/nginx/nginx.conf R # Права доступа # chown root:root /etc/nginx/nginx.conf # chmod 644 /etc/nginx/nginx.conf - Проверка эффективности контроля:
afick -c /etc/afick.conf --check ls -la /etc/nginx/nginx.conf # Тест: echo "# test" >> /etc/nginx/nginx.conf afick -c /etc/afick.conf --check # Ожидание: отчёт о нарушении; затем восстановить файл - Примечание: См. также функции 9.3 в
функции безопасности — проверка.md;Контроль выполнения кода — проверка.mdп. 15;Минимально необходимые полномочия nginx — проверка.mdп. 2.
-
Подключаемые конфигурационные файлы nginx
- Причина: Через подключаемые файлы могут быть добавлены новые location, proxy_pass, fastcgi_pass или load_module.
- Механизм: afick или иной утверждённый механизм контроля целостности.
- Результат: Изменение подключаемой конфигурации выявляется.
- Проверка:
- Статус: Обязательно
- Ревью меры контроля: Причина корректна: атака часто идёт через новый файл в
conf.d/илиsites-enabled/, а не через правку основногоnginx.conf. Механизм достаточен. - Источник: Внешнее средство FIM
- Связь с nginx:
include /etc/nginx/conf.d/*.conf;,include /etc/nginx/sites-enabled/*; - Контролируемые пути (пример):
/etc/nginx/conf.d/,/etc/nginx/sites-enabled/ - Пример реализации:
# /etc/afick.conf (фрагмент) /etc/nginx/conf.d/ R /etc/nginx/sites-enabled/ R - Проверка эффективности контроля:
afick -c /etc/afick.conf --check ls -la /etc/nginx/conf.d/ # Тест: создать /etc/nginx/conf.d/evil.conf с proxy_pass afick -c /etc/afick.conf --check - Примечание: См. права и полномочия в
Минимально необходимые полномочия nginx — проверка.mdп. 2.
-
Разрешённые директории веб-приложений
- Причина: В этих директориях хранится код или контент, который может быть передан внешнему обработчику.
- Механизм: afick или иной утверждённый механизм контроля целостности.
- Результат: Изменение файлов веб-приложений выявляется.
- Проверка:
- Статус: Обязательно
- Ревью меры контроля: Причина и механизм адекватны. Изменение
.php,.pyи других скриптов — прямой риск выполнения кода через FastCGI/uWSGI. Пути должны соответствоватьroot/aliasв конфигурации nginx. - Источник: Внешнее средство FIM
- Связь с nginx: директивы
root,alias,fastcgi_param SCRIPT_FILENAME - Контролируемые пути (пример):
/var/www/app/,/var/www/app/public/ - Пример реализации:
# /etc/afick.conf (фрагмент) /var/www/app/ R - Проверка эффективности контроля:
nginx -T 2>/dev/null | grep -E '^\s*root\s|^\s*alias\s' afick -c /etc/afick.conf --check find /var/www/app -name '*.php' -o -name '*.py' | head -10 # Сверить пути с утверждённым перечнем в эксплуатационной документации - Примечание: См. права и полномочия в
Минимально необходимые полномочия nginx — проверка.mdп. 3.
-
Директории статического веб-контента
- Причина: Статические файлы могут быть изменены для подмены содержимого сайта.
- Механизм: afick или иной утверждённый механизм контроля целостности.
- Результат: Изменение статического контента выявляется, если он включён в область контроля.
- Проверка:
- Статус: Обязательно
- Ревью меры контроля: Причина корректна (подмена HTML, JS, вредоносные вложения). Может быть объединена с п. 3 одной записью
/var/www/ R, если статика и приложение в одном дереве каталогов. - Источник: Внешнее средство FIM
- Связь с nginx:
rootдля статическихlocation - Контролируемые пути (пример):
/var/www/html/ - Пример реализации:
# Вариант 1: отдельная запись /var/www/html/ R # Вариант 2: объединение с п. 3 /var/www/ R - Проверка эффективности контроля:
afick -c /etc/afick.conf --check # Тест: изменить index.html в web-root afick -c /etc/afick.conf --check - Примечание: См. права и полномочия в
Минимально необходимые полномочия nginx — проверка.mdп. 3. См.Минимизация поверхности атаки nginx — проверка.mdп. 3–4.
-
Динамические .so-модули nginx
- Причина: Динамические модули выполняются в процессе nginx и расширяют функциональность сервера.
- Механизм: afick или иной утверждённый механизм контроля целостности.
- Результат: Подмена или изменение модуля выявляется.
- Проверка:
- Статус: Обязательно
- Ревью меры контроля: Причина и механизм полностью адекватны. Подмена
.so— выполнение произвольного нативного кода в процессе nginx. FIM обязателен в сочетании с белым списком вload_module. - Источник: Внешнее средство FIM; https://nginx.org/en/docs/ngx_core_module.html#load_module
- Связь с nginx:
load_module modules/...so; - Контролируемые пути (пример):
/usr/lib/nginx/modules/ - Пример реализации:
# /etc/afick.conf (фрагмент) /usr/lib/nginx/modules/ R - Проверка эффективности контроля:
nginx -T 2>/dev/null | grep load_module ls -la /usr/lib/nginx/modules/ afick -c /etc/afick.conf --check rpm -V nginx 2>/dev/null || dpkg -V nginx 2>/dev/null - Примечание: См. права и полномочия в
Минимально необходимые полномочия nginx — проверка.mdп. 10.
-
Файлы njs
- Причина: При использовании njs JavaScript-файлы могут выполняться внутри nginx.
- Механизм: afick или иной утверждённый механизм контроля целостности.
- Результат: Изменение njs-кода выявляется.
- Проверка:
- Статус: Условно (если используется njs)
- Ревью меры контроля: Причина корректна при наличии njs. Если
js_importне используется — объект не включается в область контроля. Механизм достаточен. - Источник: Внешнее средство FIM; https://nginx.org/en/docs/njs/
- Связь с nginx:
js_import,js_content,js_set - Контролируемые пути (пример):
/etc/nginx/njs/ - Пример реализации:
# /etc/afick.conf (фрагмент) — только при использовании njs /etc/nginx/njs/ R - Проверка эффективности контроля:
nginx -T 2>/dev/null | grep -E 'js_import|load_module.*js' # Если njs не используется — записи в afick и директивы js_* отсутствуют afick -c /etc/afick.conf --check - Примечание: См. права и полномочия в
Минимально необходимые полномочия nginx — проверка.mdп. 6.
-
Perl-файлы
- Причина: При использовании Perl-модуля Perl-код может выполняться внутри nginx.
- Механизм: afick или иной утверждённый механизм контроля целостности.
- Результат: Изменение Perl-кода выявляется.
- Проверка:
- Статус: Условно (если используется Perl)
- Ревью меры контроля: Причина корректна. Рекомендация: не использовать Perl-модуль; при наличии — обязательный FIM на Perl-файлы.
- Источник: Внешнее средство FIM; https://nginx.org/en/docs/http/ngx_http_perl_module.html
- Связь с nginx:
perl_modules,perl_require,perl - Контролируемые пути (пример):
/etc/nginx/perl/ - Пример реализации:
# /etc/afick.conf (фрагмент) — только при использовании Perl /etc/nginx/perl/ R - Проверка эффективности контроля:
nginx -V 2>&1 | grep -i perl nginx -T 2>/dev/null | grep -E 'perl|perl_require' # Ожидание для безопасной конфигурации: отсутствие Perl - Примечание: См. права и полномочия в
Минимально необходимые полномочия nginx — проверка.mdп. 7.
-
XSLT-файлы
- Причина: XSLT-файлы управляют логикой преобразования XML-ответов.
- Механизм: afick или иной утверждённый механизм контроля целостности.
- Результат: Изменение XSLT-файлов выявляется.
- Проверка:
- Статус: Условно (если используется XSLT)
- Ревью меры контроля: Причина и механизм адекватны при использовании
xslt_stylesheet. Иначе объект исключается из области контроля. - Источник: Внешнее средство FIM; https://nginx.org/en/docs/http/ngx_http_xslt_module.html
- Связь с nginx:
xslt_stylesheet - Контролируемые пути (пример):
/etc/nginx/xslt/ - Пример реализации:
# /etc/afick.conf (фрагмент) — только при использовании XSLT /etc/nginx/xslt/ R - Проверка эффективности контроля:
nginx -T 2>/dev/null | grep xslt_stylesheet afick -c /etc/afick.conf --check - Примечание: См. права и полномочия в
Минимально необходимые полномочия nginx — проверка.mdп. 8.
-
SSI-файлы
- Причина: SSI-команды могут влиять на формирование ответа.
- Механизм: afick или иной утверждённый механизм контроля целостности.
- Результат: Изменение SSI-файлов выявляется.
- Проверка:
- Статус: Условно (если включён SSI)
- Ревью меры контроля: Причина корректна. SSI-файлы обычно находятся в web-root (п. 3–4); отдельная запись нужна, если SSI включён в выделенном location. Дополнительно контролировать отсутствие
<!--#exec-->в файлах. - Источник: Внешнее средство FIM; https://nginx.org/en/docs/http/ngx_http_ssi_module.html
- Связь с nginx:
ssi onвlocation - Контролируемые пути (пример): каталоги с
ssi onвнутри web-root, например/var/www/html/ssi/ - Пример реализации:
# Покрывается записью web-root (п. 3–4), либо явно: /var/www/html/ssi/ R - Проверка эффективности контроля:
nginx -T 2>/dev/null | grep -i 'ssi on' grep -r '#exec' /var/www/html/ 2>/dev/null # exec в SSI не должен присутствовать - Примечание: См. права и полномочия в
Минимально необходимые полномочия nginx — проверка.mdп. 3.
-
Файлы, доступные для загрузки через WebDAV
- Причина: Загруженные файлы могут стать источником риска при попадании в обработку внешним интерпретатором.
- Механизм: afick или иной утверждённый механизм контроля целостности.
- Результат: Несанкционированные изменения или появление файлов выявляются, если директория включена в контроль.
- Проверка:
- Статус: Условно (если включён WebDAV)
- Ревью меры контроля: Причина корректна. FIM на upload-директорию выявляет появление новых файлов (в т.ч.
.php). Рекомендация: upload-директория не должна пересекаться с FastCGIroot. - Источник: Внешнее средство FIM; https://nginx.org/en/docs/http/ngx_http_dav_module.html
- Связь с nginx:
dav_methods,locationс WebDAV - Контролируемые пути (пример):
/var/www/uploads/ - Пример реализации:
# /etc/afick.conf (фрагмент) — только при использовании WebDAV /var/www/uploads/ R - Проверка эффективности контроля:
nginx -T 2>/dev/null | grep dav_methods # Тест: загрузить файл через WebDAV, затем afick --check afick -c /etc/afick.conf --check
- Примечание: См. права и полномочия в
Минимально необходимые полномочия nginx — проверка.mdп. 4.
-
Сертификаты и ключи TLS
- Причина: Подмена сертификатов или ключей может нарушить доверие к защищённому соединению.
- Механизм: afick или иной утверждённый механизм контроля целостности + ограничение прав доступа.
- Результат: Изменение сертификатов/ключей выявляется.
- Проверка:
- Статус: Обязательно
- Ревью меры контроля: Причина и комбинированный механизм (FIM + права) полностью адекватны. Приватные ключи —
chmod 600, владелец root; сертификаты —644. - Источник: Внешнее средство FIM; https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate
- Связь с nginx:
ssl_certificate,ssl_certificate_key,ssl_client_certificate - Контролируемые пути (пример):
/etc/nginx/ssl/,/etc/ssl/nginx/ - Пример реализации:
# /etc/afick.conf (фрагмент) /etc/nginx/ssl/ R # Права доступа # chmod 600 /etc/nginx/ssl/*.key # chmod 644 /etc/nginx/ssl/*.crt # chown root:root /etc/nginx/ssl/ - Проверка эффективности контроля:
afick -c /etc/afick.conf --check ls -la /etc/nginx/ssl/ stat -c '%a %U %n' /etc/nginx/ssl/* # Ключи: 600, сертификаты: 644, владелец root
- Примечание: См. права и полномочия в
Минимально необходимые полномочия nginx — проверка.mdп. 6–7.
-
Файлы паролей Basic Authentication
- Причина: Изменение файла пользователей может привести к несанкционированному доступу.
- Механизм: afick или иной утверждённый механизм контроля целостности + ограничение прав доступа.
- Результат: Изменение файла пользователей выявляется.
- Проверка:
- Статус: Условно (если используется auth_basic)
- Ревью меры контроля: Причина и механизм корректны. FIM +
chmod 640, владелец root, группа nginx (или без доступа для others). - Источник: Внешнее средство FIM; https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html#auth_basic_user_file
- Связь с nginx:
auth_basic_user_file - Контролируемые пути (пример):
/etc/nginx/htpasswd,/etc/nginx/htpasswd.d/ - Пример реализации:
# /etc/afick.conf (фрагмент) — при использовании auth_basic /etc/nginx/htpasswd R # chmod 640 /etc/nginx/htpasswd # chown root:root /etc/nginx/htpasswd - Проверка эффективности контроля:
nginx -T 2>/dev/null | grep auth_basic_user_file ls -la /etc/nginx/htpasswd afick -c /etc/afick.conf --check
- Примечание: См. права и полномочия в
Минимально необходимые полномочия nginx — проверка.mdп. 8.
-
Файлы журналов nginx
- Причина: Журналы содержат события доступа и ошибок, важные для анализа безопасности.
- Механизм: Контроль прав доступа; защита от несанкционированного изменения; централизованное журналирование.
- Результат: Несанкционированное изменение или удаление журналов затруднено/выявляется.
- Проверка:
- Статус: Комбинированная мера
- Ревью меры контроля: Причина корректна. Классический FIM на активно пишущиеся log-файлы неприменим (ложные срабатывания при каждой записи). Корректный подход: строгие права (
adm/root), передача в syslog (см. ПМИ п. 14), ротация logrotate, опциональноchattr +a(append-only). Механизм в исходнике описан верно. - Источник: Внешняя мера; https://nginx.org/en/docs/ngx_core_module.html#error_log , https://nginx.org/en/docs/syslog.html
- Связь с nginx:
access_log,error_log - Контролируемые пути (пример):
/var/log/nginx/access.log,/var/log/nginx/error.log - Пример реализации:
# Права доступа (не afick на сами log-файлы) # chown root:adm /var/log/nginx/ # chmod 750 /var/log/nginx/ # chmod 640 /var/log/nginx/*.log # Централизованное журналирование в nginx.conf: # access_log syslog:server=192.168.1.1:514,... combined; # error_log syslog:server=192.168.1.1:514,...; # Опционально append-only (осторожно с ротацией): # chattr +a /var/log/nginx/access.log - Проверка эффективности контроля:
ls -la /var/log/nginx/ stat -c '%a %U:%G' /var/log/nginx/access.log # Попытка удаления от непривилегированного пользователя должна завершиться отказом nginx -T 2>/dev/null | grep -E 'access_log|error_log' # При syslog — проверить наличие записей на приёмнике (journalctl -t nginx)
- Примечание: Статус — комбинированная мера. См.
Минимально необходимые полномочия nginx — проверка.mdп. 5; ПМИ п. 14 вПроверочные мероприятия для ПМИ — проверка.md; функции 4.4 и 9.3 вфункции безопасности — проверка.md.