
Gixy-Next: NGINX構成セキュリティスキャナー&パフォーマンスチェッカー
Gixy-Next (Gixy) は、オープンソースのNGINX設定セキュリティスキャナー兼ハードニングツールであり、nginx.confを静的に解析して、セキュリティ設定の不備、ハードニングの不足、および一般的なパフォーマンスの落とし穴を本番環境に到達する前に検出します。これは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 Live Configuration Dumpを参照):
# 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_requestsが低いworker_processesの欠落proxy_bufferingの無効化proxy_passのパス正規化の問題try_filesディレクティブは悪worker_rlimit_nofileは少なくともworker_connectionsの2倍でなければならない検出されないものがありますか?何が不足しているかを添えてGitHubでissueを開いてください!
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