Gixy 是一款用于分析 Nginx 配置的工具。 Gixy 的主要目标是防止安全配置错误并实现缺陷检测的自动化。
目前支持的 Python 版本为 2.7、3.5、3.6 和 3.7。
免责声明:Gixy 仅在 GNU/Linux 上经过充分测试,其他操作系统可能存在一些问题。
目前 Gixy 可以检测:
你可以在标记为"new plugin"的 Issue 中找到 Gixy 正在学习检测的内容。
Gixy 发布在 PyPI 上。最佳安装方式是通过 pip:
pip install gixy
运行 Gixy 并检查结果:
gixy
默认情况下,Gixy 会尝试分析位于 /etc/nginx/nginx.conf 的 Nginx 配置。
但你也可以指定需要的路径:
$ 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/yandex/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 参数:gixy --help
Gixy 以 Docker 镜像的形式提供,可从 Docker hub 获取。使用时,将要分析的配置挂载为卷,并在运行 Gixy 镜像时提供配置文件的路径。
$ docker run --rm -v `pwd`/nginx.conf:/etc/nginx/conf/nginx.conf yandex/gixy /etc/nginx/conf/nginx.conf
如果你有一个已包含 Nginx 配置的镜像,可以将该配置以卷的形式共享给 Gixy 容器。
$ docker run --rm --name nginx -d -v /etc/nginx
nginx:alpinef68f2833e986ae69c0a5375f9980dc7a70684a6c233a9535c2a837189f14e905
$ docker run --rm --volumes-from nginx yandex/gixy /etc/nginx/nginx.conf
==================== Results ===================
No issues found.
==================== Summary ===================
Total issues:
Unspecified: 0
Low: 0
Medium: 0
High: 0
欢迎为 Gixy 贡献!你可以通过以下方式帮助我们:
代码规范: