Gixy-Next: NGINX 구성 오류 스캐너
Source: Dev.to
Gixy‑Next란?
Gixy‑Next는 “Gixy 패밀리”에 속하는 NGINX 설정 분석기의 유지 관리되는 포크입니다. 설정을 정적으로 스캔(NGINX를 실행할 필요 없음)하고, 심각도 수준과 실행 가능한 컨텍스트와 함께 결과를 보고합니다.
원래 Yandex의 Gixy(2017년 최초 출시)를 포크한 것이며, 현재는 유지 관리가 중단되고 최신 Python/NGINX 환경에 잘 맞지 않습니다. Gixy‑Next는 프로젝트를 건강하게 유지하기 위해 존재합니다: 최신 Python 지원, 버그 수정, 개선된 탐지 로직, 그리고 유지 보수와 검토가 쉬운 변경에 초점이 맞춰져 있습니다.
빠른 시작
설치
pip3 install gixy-next
# or, if you use uv:
uv pip install gixy-next
실행 (기본값: /etc/nginx/nginx.conf)
gixy
특정 파일 스캔
gixy /opt/nginx.conf
팁: 전체 렌더링된 설정 스캔 (include가 모두 해석된 상태)
NGINX 설정은 여러 include 파일에 걸쳐 퍼져 있는 경우가 많습니다. 신뢰할 수 있는 방법은 전체 렌더링된 설정을 덤프한 뒤, NGINX가 실행되는 시스템과는 다른 시스템에서 그 파일을 스캔하는 것입니다:
# 한 시스템에서 전체 렌더링된 NGINX 설정을 덤프
nginx -T > ./nginx-dump.conf
# 다른 시스템에서 그 단일 파일만으로 gixy 실행
gixy ./nginx-dump.conf
# 또는 stdin을 통해:
cat ./nginx-dump.conf | gixy -
감지하는 항목 (예시)
Gixy‑Next는 다양한 문제를 탐지하는 수많은 플러그인을 제공합니다. 몇 가지 예시:
- HTTP 응답 분할 위험
- SSRF‑형 프록시 잘못된 설정
- Host 헤더 위조 위험
- Alias 경로 탐색(디렉터리 트래버설) 함정
- 약한
Referer/Origin검증 - 앵커가 없는 정규식 패턴 및 ReDoS 위험
- 위험한 DNS 리졸버 설정
server_tokens를 통한 버전 노출location안에서if사용과 같은 “괜찮아 보이는” 오해를 일으키는 패턴
전체 플러그인 목록은 Gixy‑Next 문서에서 확인할 수 있습니다. 핵심은: 실수하기 쉬운 혹은 완전히 놓치기 쉬운 문제들을 찾아준다는 점입니다.
신호 조정: 원하는 검사만 실행
특정 검사만 실행
gixy --tests http_splitting,ssrf,version_disclosure
잡음이 되는 검사 건너뛰기
gixy --skips low_keepalive_requests,worker_rlimit_nofile_vs_connections
심각도별 필터링 (복수 -l 사용)
# -l = LOW 이상
# -ll = MEDIUM 이상
# -lll = HIGH만
gixy -ll
출력 형식: 사람 친화적 / 기계 친화적
일반 텍스트 (ANSI 색상 없음)
gixy -f text
JSON (CI 파이프라인 및 대시보드에 최적)
gixy -f json ./nginx-dump.conf
JSON에는 plugin, severity, file, line, reason, 그리고 해당 검사를 위한 reference 링크와 같은 필드가 포함됩니다.
내가 이 접근 방식을 좋아하는 이유
- 코드 리뷰를 보완합니다: 리뷰어는 의도에 집중하고, 스캐너는 패턴을 잡아냅니다.
- “부족한 지식”에 기반한 하드닝 규칙을 반복 가능한 검사로 전환합니다.
- 현대 워크플로에 맞습니다: 로컬에서 실행하고, CI에서도 실행하며, 시간에 따라 추적할 수 있습니다.
기여 / 피드백
감지돼야 하는데 놓친 설정 패턴을 발견하면 최소 재현 가능한 스니펫과 함께 이슈를 열어 주세요. 새로운 플러그인과 개선은 언제든 환영합니다.