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

GIXY

Mozilla Public License 2.0 Python tests Your feedback is greatly appreciated GitHub issues GitHub pull requests

Обзор

Логотип Gixy

Gixy — это инструмент для анализа конфигурации Nginx. Его цель — предотвращать ошибки конфигурации безопасности и автоматизировать выявление проблем.

В настоящее время поддерживаются Python 3.6–3.13.

Дисклеймер: Gixy хорошо протестирован на GNU/Linux; на других ОС возможны нюансы.

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

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

Что умеет

Сейчас Gixy выявляет:

Производительность

См. также задачи с меткой "new plugin".

Установка

CentOS/RHEL и другие RPM‑системы

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install gixy

Другие системы

Gixy публикуется на PyPI. Рекомендуемый способ установки — через pip:

pip install gixy-ng

Запустите Gixy и посмотрите результат:

gixy

Использование

По умолчанию Gixy анализирует конфигурацию Nginx по пути /etc/nginx/nginx.conf.

Можно указать нужный путь:

$ gixy /etc/nginx/nginx.conf

==================== Results ===================

Problem: [http_splitting] Possible HTTP-Splitting vulnerability.
Description: Using variables that can contain "\n" may lead to http injection.
Additional info: https://github.com/dvershinin/gixy/blob/master/docs/ru/plugins/httpsplitting.md
Reason: At least variable "$action" can contain "\n"
Pseudo config:
include /etc/nginx/sites/default.conf;

    server {

        location ~ /v1/((?<action>[^.]*)\.json)?$ {
            add_header X-Action $action;
        }
    }


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

Или пропустить часть проверок:

$ gixy --skips http_splitting /etc/nginx/nginx.conf

==================== Results ===================
No issues found.

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

Другие аргументы смотрите в справке: gixy --help

Можно передать конфигурацию через stdin, например:

echo "resolver 1.1.1.1;" | gixy -

Использование Docker

Образ доступен на Docker Hub: getpagespeed/gixy. Смонтируйте конфиг как том и передайте путь к нему при запуске контейнера:

$ docker run --rm -v `pwd`/nginx.conf:/etc/nginx/conf/nginx.conf getpagespeed/gixy /etc/nginx/conf/nginx.conf

Если у вас уже есть образ с конфигурацией Nginx, можно примонтировать её во второй контейнер:

$  docker run --rm --name nginx -d -v /etc/nginx
nginx:alpinef68f2833e986ae69c0a5375f9980dc7a70684a6c233a9535c2a837189f14e905

$  docker run --rm --volumes-from nginx dvershinin/gixy /etc/nginx/nginx.conf

==================== Results ===================
No issues found.

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

Вклад

Мы всегда рады вашему участию! Вы можете: * Открыть issue с предложениями и описанием проблем; * Сделать форк и отправить pull request; * Улучшить документацию.

Требования к коду: * Соблюдайте pep8 по возможности; * Pull‑request с новыми плагинами должен содержать юнит‑тесты.