Автоматическая проверка конфигурации nginx

На сколько вы уверенны в правильности настройки вашего сервера nginx? Не допускает ли он ssrf атаки или host spoofing? Стандартные средства проверки конфигурации nginx такого не найдут, а держать всё это в голове - слишком сложно!

Не буду томит долгим всуплением - оказывается, у Яндекса на этот случай есть инструмент автоматизированного тестирования конфигурации nginx - Gixy (https://github.com/yandex/gixy)

Установка Gixy на сервер с Centos

Поскольку инструмент проверки безопасности nginx написан на языке программирования Python, то устанавливать его нужно через специальный пакетный менеджер pip.

Установим pip в систему, а потом, через него, установим Gixy

yum install python3-pip
pip3 install gixy
Обратите внимание

Установку пакета через pip и его последующий запуск лучше выполнять от имени пользователя, а не от root!

Тестирование конфигурационного файла Nginx

Поскольку Gixy направлен на тестирование nginx, то ему не обязательно передавать путь к конфигурационному файлу - он его сам найдёт. Поэтому просто выполним команду и посмотрим на результат

gixy >> Problem: [origins] Validation regex for "origin" or "referrer" matches untrusted domain.

Description: Improve the regular expression to match only trusted referrers.
Additional info: https://github.com/yandex/gixy/blob/master/docs/en/plugins/origins.md
Reason: Regex matches "http://evil.com/iskalko.ru.evil.com", "http://evil.com/socialseet.ru.evil.com", "http://evil.com/buttons-for-website.com.evil.com", "http://evil.com/semalt/semalt.com.evil.com" as a valid referrer.
Pseudo config:

include /etc/nginx/conf.d/myhost1.conf;

server {
server_name myhost1;

location / {

if ($http_referer ~* iskalko\.ru|buttons-for-website\.com|semalt.semalt\.com|socialseet\.ru) {
}
}
}

include /etc/nginx/conf.d/myhost2.conf;

server {
server_name myhost2;

location / {

if ($http_referer ~* iskalko\.ru|buttons-for-website\.com|semalt.semalt\.com|socialseet\.ru) {
}
}
}

==================== Summary ===================
Total issues:
Unspecified: 0
Low: 0
Medium: 2
High: 0

Как видно из результатов, у меня на сервере обнаружена проблема среднего уровня, связанная с использованием регулярных выражений. Инструмент показал, где возникает ошибка, дал ссылку на статью с пояснениями и привёл примеры некорректной работы. Круто, неправдали?