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

Configuration & Usage Guide

Конфигурация (gixy.cfg)

Gixy читает конфигурацию из следующих путей (первый найденный побеждает):

  • /etc/gixy/gixy.cfg
  • ~/.config/gixy/gixy.conf

Также можно указать свой путь через -c/--config и сгенерировать шаблон с подсказками через --write-config.

Файл конфигурации использует пары key = value, необязательные секции и поддерживает списки в виде [a, b, c]. Имена ключей совпадают с длинными флагами CLI и используют дефисы, например --disable-includes → disable-includes.

Примечание: фильтр серьёзности доступен только через CLI с помощью повторов -l (например, -l, -ll, -lll). Из файла конфигурации он не читается.

Управление плагинами

  • Запустить только выбранные плагины: укажите tests со списком имён классов плагинов через запятую.
  • Пропустить конкретные плагины: укажите skips со списком имён классов плагинов через запятую.

Примеры:

# Запускать только эти плагины
tests = if_is_evil, http_splitting

# Эти плагины исключить
skips = origins, version_disclosure

Параметры плагинов

Опции плагинов можно указывать в секциях, где имя секции — это имя класса плагина с дефисами вместо подчёркиваний. Ключи в секциях также используют дефисы. Примеры:

[origins]
domains = example.com, example.org
https-only = true

[regex-redos]
deep = true

Того же эффекта можно добиться без секций, объединив имя плагина и опцию через дефис, например origins-domains = ..., но секции удобнее.

Другие полезные параметры

  • Формат вывода: format = console|text|json|checkstyle (то же, что -f/--format)
  • Запись отчёта в файл: output = /path/to/report.txt (то же, что -o/--output)
  • Отключить обработку include: disable-includes = true (то же, что --disable-includes)
  • Каталоги кастомных переменных: vars-dirs = [/etc/gixy/vars, ~/.config/gixy/vars] (см. «Пользовательские переменные (drop-ins)»)
  • Глубокий анализ: deep = true (то же, что --deep; требует gixy-ng[deep] из pip или RPM gixy-deep и включает локальный анализ ReDoctor с автоматами и ограниченным фаззингом в собственной VM)

Полный пример

# gixy.cfg

format = console
output = /tmp/gixy-report.txt
disable-includes = false

# Ограничить анализ подмножеством плагинов
tests = if_is_evil, http_splitting

# Пропустить некоторые плагины
skips = version_disclosure

# Загрузить определения переменных (см. variables-dropins)
vars-dirs = [/etc/gixy/vars, ~/.config/gixy/vars]

[origins]
domains = example.com, example.org
https-only = true

[regex-redos]
deep = true

Версия и вариант NGINX

По умолчанию Gixy не запускает NGINX. Для явной цели используйте nginx-version = 1.30.6 и при необходимости nginx-flavor = nginx-mod. nginx-version = auto включает однократный локальный nginx -V из PATH с тайм-аутом пять секунд. Это подтверждает, что локальный бинарный файл является целью проверки; для удалённых или офлайн-файлов задайте версию явно. В --server значение auto запрещено, явные версия и вариант допустимы.

Распознаются upstream и nginx-mod; неизвестный вариант из баннера использует правила upstream. Явный nginx-flavor = upstream переопределяет результат обнаружения. Неправильное явное имя считается ошибкой. Для каждого параметра приоритет: CLI, затем GIXY_NGINX_VERSION / GIXY_NGINX_FLAVOR, затем конфигурация. Старый nginx-cves-version используется только при отсутствии общего параметра; ошибка auto оставляет версию неизвестной и не включает этот запасной вариант.

Встроенные данные сохраняют настоящую версию и подавляют только конкретную проверку или CVE с подтверждённым исправлением. Сейчас для nginx-mod записано только исправление quic_bpf_reuseport в 1.30.6, исключений для CVE нет; неоднозначная 1.30.5 сохраняет предупреждение. Диагностика идёт в stderr, переопределения видны с --debug; JSON stdout остаётся отчётом. Библиотека, справка, --version и --write-config никогда не запускают обнаружение.