
Gixy-Next: NGINX 구성 보안 스캐너 및 성능 검사기
Gixy-Next(Gixy)는 nginx.conf를 정적으로 분석하여 프로덕션 배포 전에 보안 오구성, 하드닝 누락, 일반적인 성능 문제를 탐지하는 오픈소스 NGINX 구성 보안 스캐너 및 강화 도구입니다. Yandex의 Gixy의 활발히 유지 관리되는 포크입니다. Gixy-Next의 소스 코드는 GitHub에서 확인할 수 있습니다.
Gixy-Next는 이 페이지에서 브라우저로도 실행할 수 있습니다. 다운로드가 필요 없으며, 웹사이트에서(로컬, WebAssembly 사용) 구성을 스캔할 수 있습니다.
Gixy-Next(gixy 또는 gixy-next CLI)는 PyPI로 배포됩니다. pip 또는 uv로 설치할 수 있습니다:
# pip
pip3 install gixy-next
# uv
uv pip install gixy-next
그런 다음 실행할 수 있습니다:
# gixy defaults to reading /etc/nginx/nginx.conf
gixy
# But you can also specify a path to the configuration
gixy /opt/nginx.conf
NGINX 구성을 단일 덤프 파일로 내보낼 수도 있습니다(nginx -T 라이브 구성 덤프 참조):
# Dumps the full NGINX configuration into a single file (including all includes)
nginx -T > ./nginx-dump.conf
# Scan the dump elsewhere (or via stdin):
gixy ./nginx-dump.conf
# or
cat ./nginx-dump.conf | gixy -
Gixy-Next를 로컬에 다운로드하여 실행하는 대신, 이 웹페이지를 사용하여 웹 브라우저에서 구성을 스캔할 수 있습니다(로컬, WebAssembly 사용).
Gixy-Next는 Docker Hub 또는 GitHub Registry에서 Docker 이미지로 제공됩니다.
로컬 구성 파일을 컨테이너에 마운트하여 스캔합니다:
# Use Github Registry
docker run --pull=always --rm -v "$PWD/nginx.conf:/nginx.conf:ro" ghcr.io/megamansec/gixy-next /nginx.conf
# Or Docker Hub
docker run --pull=always --rm -v "$PWD/nginx.conf:/nginx.conf:ro" megamansec/gixy-next /nginx.conf
NGINX 라이브 구성 덤프를 스캔합니다:
# Dumps the full NGINX configuration into a single file (including all includes)
nginx -T > ./nginx-dump.conf
# Use Github Registry
docker run --pull=always --rm -v "$PWD/nginx-dump.conf:/nginx-dump.conf:ro" ghcr.io/megamansec/gixy-next /nginx-dump.conf
# Or Docker Hub
docker run --pull=always --rm -v "$PWD/nginx-dump.conf:/nginx-dump.conf:ro" megamansec/gixy-next /nginx-dump.conf
stdin에서 스캔합니다:
# Use Github Registry
nginx -T | docker run --pull=always --rm -i ghcr.io/megamansec/gixy-next gixy-next -
# Or Docker Hub
nginx -T | docker run --pull=always --rm -i megamansec/gixy-next gixy-next -
Gixy-Next는 nginx.conf 및 포함된 구성 파일 전반에서 다양한 NGINX 보안 및 성능 오구성을 탐지할 수 있습니다. 지원되는 플러그인은 다음과 같습니다:
error_log가 off로 설정됨keepalive_requestsworker_processes 누락탐지되지 않는 것이 있나요? 누락된 항목을 GitHub에 이슈로 등록해 주세요!
gixy는 기본적으로 시스템의 NGINX 구성을 /etc/nginx/nginx.conf에서 읽습니다. gixy에 위치를 전달하여 지정할 수도 있습니다:
# Analyze the configuration in /opt/nginx.conf
gixy /opt/nginx.conf
--tests로 검사 항목의 일부만 집중적으로 실행할 수 있습니다:
# Only run these checks
gixy --tests http_splitting,ssrf,version_disclosure
또는 --skips로 불필요한 검사를 건너뛸 수 있습니다:
# Run everything except these checks
gixy --skips low_keepalive_requests,worker_rlimit_nofile_vs_connections
특정 심각도 이상의 문제만 보고하려면 누적 -l 플래그를 사용하세요:
# -l for LOW severity issues and higher, -ll for MEDIUM and higher, and -lll for only HIGH severity issues
gixy -ll
기본적으로 gixy의 출력은 ANSI 색상으로 표시되며, 호환되는 터미널에서 가장 잘 보입니다. --format(-f) 플래그에 text 값을 사용하면 색상이 없는 출력을 얻을 수 있습니다:
$ gixy -f text
==================== Results ===================
Problem: [http_splitting] Possible HTTP-Splitting vulnerability.
Description: Using variables that can contain "\n" may lead to http injection.
Additional info: https://gixy.io/plugins/http_splitting/
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:
Informational: 0
Low: 0
Medium: 0
High: 1
-f json을 사용하여 재현 가능한 기계 판독 가능 JSON 출력을 얻을 수도 있습니다:
$ gixy -f json
[{"config":"\nserver {\n\n\tlocation ~ /v1/((?<action>[^.]*)\\.json)?$ {\n\t\tadd_header X-Action $action;\n\t}\n}","description":"Using variables that can contain \"\\n\" or \"\\r\" may lead to http injection.","file":"/etc/nginx/nginx.conf","line":4,"path":"/etc/nginx/nginx.conf","plugin":"http_splitting","reason":"At least variable \"$action\" can contain \"\\n\"","reference":"https://gixy.io/plugins/http_splitting/","severity":"HIGH","summary":"Possible HTTP-Splitting vulnerability."}]
또한 -f sarif를 사용하여 SARIF 2.1.0 로그를 얻을 수 있습니다(예: GitHub 코드 스캐닝에 업로드용):
# Write a SARIF report to a file, e.g. for `github/codeql-action/upload-sarif`
gixy -f sarif -o gixy-results.sarif
더 많은 사용법 플래그는 gixy에 --help를 전달하여 확인할 수 있습니다. 사용법 가이드에서도 더 많은 정보를 확인할 수 있습니다.
일부 플러그인은 CLI 플래그 또는 구성 파일을 통해 설정할 수 있는 옵션을 제공합니다. 구성 가이드에서 자세한 내용을 확인할 수 있습니다.
구문만 검사하는 nginx -t와 달리 Gixy-Next는 실제로 구성을 분석하여 하드닝되지 않은 인스턴스와 취약점을 탐지합니다.
Gixy-Next를 사용하면 감사, 규정 준수 또는 일반 테스트를 위해 모든 변경 사항에 대해 로컬에서 실행할 수 있는 자동화된 NGINX 구성 보안 검토를 수행할 수 있으며, 불안정하거나 느린 NGINX 서버를 방지하고 안전하지 않은 지시문과 안전하지 않은 기본값으로 인한 위험을 줄이는 데 도움이 되는 실행 가능한 결과를 생성할 수 있습니다.
Gixy-Next는 Joshua Rogers가 유지 관리하지만 기여는 언제나 환영합니다! 다음과 같은 다양한 방법으로 도움을 줄 수 있습니다:
풀 리퀘스트로 변경 사항을 제출하기 전에 기여 지침 문서인 Contributing to Gixy-Next를 읽어 주세요.
Gixy-Next의 공식 홈페이지는 https://gixy.io/입니다. Gixy-Next의 문서 변경 사항은 해당 웹사이트에 자동으로 반영됩니다.
소스 코드는 https://github.com/MegaManSec/Gixy-Next에서 확인할 수 있습니다.
_Gixy_는 원래 Yandex의 Andrew Krasichkov가 개발한 NGINX 구성 분석기입니다. 2017년에 처음 출시된 이후 유지 관리가 중단되었습니다. 최신 버전의 Python을 지원하지 않으며, 수많은 버그가 포함되어 있고, 취약한 NGINX 구성을 탐지하는 기능과 능력이 제한적입니다. 오늘날 최신 시스템에서 원래 Gixy를 실행하면 다음 오류가 발생합니다:
File "gixy/core/sre_parse/sre_parse.py", line 61, in <module>
"t": SRE_FLAG_TEMPLATE,
^^^^^^^^^^^^^^^^^
NameError: name 'SRE_FLAG_TEMPLATE' is not defined. Did you mean: 'SRE_FLAG_VERBOSE'?
따라서 Gixy-Next는 최신 시스템 지원, 새로운 검사 추가, 성능 개선, 하드닝 제안, 최신 Python 및 NGINX 버전 지원을 추가한 포크입니다.
gixy-ng가 아닌가?Gixy-Next는 실제로 gixy-ng의 포크이며, gixy-ng 자체는 원래 gixy의 포크였습니다. Gixy-Next는 gixy-ng의 관리자가 검토가 불가능할 정도로 크고 손상된 대량의 AI 지원 변경 사항과 자동 생성 코드를 생산하기 시작한 후 만들어졌습니다.
얼마 후, gixy-ng의 관리자는 명백한 회귀를 도입하고, 도구의 핵심 동작을 깨뜨리고(도구를 사용하는 사람이라면 누구나 알아차렸을 것입니다), 임의의 AI 도구 산출물을 추가하고, 원래 의도한 대로 작동하지 않는 코드를 도입하는 AI 생성 변경 사항을 코드베이스에 커밋하기 시작했습니다. 가장 중요한 것은, 관리자가 gixy-ng의 모든 문서, 모든 출력, 모든 소스 코드에 자신의 비즈니스 광고를 추가했다는 것입니다.
즉, gixy-ng 관리자는 원래 gixy를 가져와 AI에게 변경을 요청하고, 여러 버그(및 기타 AI 쓰레기)를 도입한 다음 코드에 광고를 추가했습니다. 또한 머지 리퀘스트 형태의 기여를 수락하면서 작성자 정보를 제거했습니다(이 게시물 및 이 게시물 참조).
Gixy-Next는 품질 복원에 중점을 두며, 거의 100,000줄에 달하는 NGINX 구성에서 실전 검증을 거쳤습니다. gixy-ng에서 도입된 변경 사항으로 인한 버그와 오탐을 수정하고, AI 도구 산출물/잡동사니를 제거하며, 코드베이스를 검토 가능하고 유지 관리 가능한 상태로 유지하려고 노력합니다. 이 포크는 깔끔한 코드와 장기적인 유지 관리 가능성에 관심이 있는 사람들을 위한 것입니다.