Nginx
Categories:
4 分钟阅读
适用范围:Nginx 开源版、Tengine、OpenResty,以及作为反向代理/负载均衡/HTTPS 网关使用的现场。
不适用标识说明:
- 使用
【不适用】明确标记现场可判定为不适用的控制点。 - 判定依据采用 GB/T 28448-2019“按测评对象实际功能与数据处理范围判定”的原则;Nginx 常作为代理或网关,若某控制由认证平台、业务系统、WAF 或负载均衡实现,应注明边界后判定不适用或转由上位组件核查。
基础信息
核查命令:
nginx -v
nginx -t
ps aux | grep nginx
find / -name nginx.conf 2>/dev/null
- 备注:先确认二进制版本、主配置路径、站点配置目录、日志路径、运行用户、监听端口;若部署在容器中,应同步记录容器信息。
- 预期证据:版本截图、配置路径截图、进程截图、端口截图。
示例输出(节选)
nginx version: nginx/1.24.0
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root 1204 0.0 0.1 nginx: master process nginx
www 1205 0.0 0.3 nginx: worker process
/etc/nginx/nginx.conf
身份鉴别
A. 管理入口识别
核查命令:
grep -R "stub_status\\|status" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:Nginx 通常没有完整管理控制台,重点核查状态页、管理 API、配置发布入口是否受控。
- 预期证据:状态页配置截图、访问结果截图。
示例输出(节选)
/etc/nginx/conf.d/status.conf: location /stub_status {
/etc/nginx/conf.d/status.conf: stub_status;
B. 认证机制
核查命令:
grep -R "auth_basic\\|auth_request\\|ssl_verify_client" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:如通过 Basic、前置 SSO、客户端证书或 WAF 实现身份鉴别,应按实际架构取证。
- 预期证据:认证配置截图、平台材料、访谈记录。
示例输出(节选)
/etc/nginx/conf.d/app.conf: auth_basic "Restricted";
/etc/nginx/conf.d/app.conf: auth_basic_user_file /etc/nginx/.htpasswd;
/etc/nginx/conf.d/api.conf: auth_request /_auth_verify;
C. 登录失败与会话控制
核查命令:
grep -R "limit_req\\|limit_conn\\|deny" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:Nginx 原生不提供账户锁定能力,通常通过前置认证平台、WAF 或应用层实现等效控制。
- 【不适用】若测评对象为纯反向代理/静态转发层,未启用
auth_basic、SSO、客户端证书或任何本地登录机制,则“登录失败处理”“登录会话超时”对 Nginx 组件本身可判定为不适用。理由:该对象不存在独立账户登录过程。依据:GB/T 28448-2019 身份鉴别类控制点应针对实际登录鉴别过程判定。 - 预期证据:限流/拦截配置截图、统一认证或 WAF 截图。
示例输出(节选)
/etc/nginx/conf.d/app.conf: limit_req zone=login burst=5 nodelay;
/etc/nginx/conf.d/app.conf: limit_conn perip 20;
/etc/nginx/conf.d/admin.conf: deny 192.168.10.0/24;
D. 运维鉴别链路
核查命令:
grep -R "ssl_certificate\\|ssl_protocols" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:现场关注运维是否经堡垒机、VPN、HTTPS 管理链路完成,不宜仅靠主机口令直连。
- 预期证据:HTTPS 页面、堡垒机、远程运维制度。
示例输出(节选)
/etc/nginx/conf.d/ssl.conf: ssl_certificate /etc/nginx/ssl/demo-server.pem;
/etc/nginx/conf.d/ssl.conf: ssl_certificate_key /etc/nginx/ssl/demo-server.key;
/etc/nginx/conf.d/ssl.conf: ssl_protocols TLSv1.2 TLSv1.3;
访问控制
A. 管理端口与状态页限制
核查命令:
grep -R "allow\\|deny" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:状态页、管理接口、内部站点应通过网段限制、鉴权或主机级 ACL 控制。
- 预期证据:ACL 配置截图、来源限制截图。
示例输出(节选)
/etc/nginx/conf.d/status.conf: allow 192.168.10.0/24;
/etc/nginx/conf.d/status.conf: deny all;
/etc/nginx/conf.d/admin.conf: allow 192.168.20.5;
/etc/nginx/conf.d/admin.conf: deny all;
B. 目录与请求控制
核查命令:
grep -R "location\\|root\\|alias\\|autoindex" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:避免目录遍历、未授权目录访问、默认索引暴露。
- 预期证据:站点配置截图、访问测试截图。
示例输出(节选)
/etc/nginx/conf.d/app.conf: location /static/ {
/etc/nginx/conf.d/app.conf: root /data/www;
/etc/nginx/nginx.conf: autoindex off;
C. 默认站点与示例配置
核查命令:
ls /etc/nginx/conf.d /etc/nginx/sites-enabled 2>/dev/null
- 备注:默认站点、测试页、未使用虚拟主机应清理或停用。
- 预期证据:目录截图、处置说明。
示例输出(节选)
default.conf
app.conf
status.conf
demo-old.conf.bak
D. 运行权限
核查命令:
ps -o user,pid,cmd -C nginx
ls -l /etc/nginx/nginx.conf 2>/dev/null
- 备注:
worker_processes对应进程不宜使用高权限账户运行,敏感配置文件权限应最小化。 - 预期证据:运行用户截图、权限截图。
示例输出(节选)
root 1204 nginx: master process nginx
www 1205 nginx: worker process
-rw-r--r-- 1 root root 2656 /etc/nginx/nginx.conf
安全审计
A. 日志路径与日志类型
核查命令:
grep -R "access_log\\|error_log\\|log_format" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:至少核查访问日志、错误日志和关键管理请求的记录方式。
- 预期证据:日志配置截图、日志文件截图。
示例输出(节选)
/etc/nginx/nginx.conf: access_log /var/log/nginx/access.log main;
/etc/nginx/nginx.conf: error_log /var/log/nginx/error.log warn;
/etc/nginx/conf.d/app.conf: log_format main '$remote_addr - $time_local "$request" $status $upstream_addr';
B. 日志字段完整性
核查命令:
tail -n 20 /var/log/nginx/access.log 2>/dev/null
- 备注:建议日志中体现时间、源地址、请求方法、URI、状态码、上游地址;如进入日志平台,可用平台字段替代。
- 预期证据:访问日志样例、平台查询截图。
示例输出(节选)
192.168.1.23 - - [24/Aug/2026:10:21:33 +0800] "GET /api/v1/user HTTP/1.1" 200 187 "-" "Mozilla/5.0" "-"
192.168.1.45 - - [24/Aug/2026:10:21:34 +0800] "POST /api/v1/login HTTP/1.1" 302 0 "-" "Mozilla/5.0" "-"
192.168.8.101 - - [24/Aug/2026:10:21:35 +0800] "GET /static/app.js HTTP/1.1" 200 51240 "-" "Mozilla/5.0" "-"
C. 留存与轮转
核查命令:
grep -R "rotate\\|daily\\|weekly" /etc/logrotate* 2>/dev/null
- 备注:日志轮转经常由
logrotate实现,需核实保留周期、归档周期和责任人。 - 预期证据:轮转配置截图、制度、访谈记录。
示例输出(节选)
/etc/logrotate.d/nginx:/var/log/nginx/*.log {
/etc/logrotate.d/nginx: daily
/etc/logrotate.d/nginx: rotate 14
/etc/logrotate.d/nginx: weekly
D. 集中审计
核查命令:
grep -R "syslog" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:如日志通过 syslog、Filebeat、Agent 汇聚到平台,应按平台证据确认留存和告警。
- 预期证据:平台材料、Agent 配置、告警截图。
示例输出(节选)
(无输出,未配置 syslog;日志经 Filebeat 上送日志平台)
数据完整性
A. 配置完整性
核查命令:
nginx -t
ls -l /etc/nginx/nginx.conf 2>/dev/null
- 备注:应证明配置经过语法校验且变更有记录;若配置由发布平台生成,应补平台证据。
- 预期证据:校验结果截图、变更工单、配置发布记录。
示例输出(节选)
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
-rw-r--r-- 1 root root 2656 /etc/nginx/nginx.conf
B. 代理链路完整性
核查命令:
grep -R "proxy_set_header\\|grpc_set_header\\|uwsgi_param" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:重点看是否存在对真实源地址、协议头、转发完整性的控制。
- 预期证据:代理配置截图、联调说明。
示例输出(节选)
/etc/nginx/conf.d/app.conf: proxy_set_header X-Real-IP $remote_addr;
/etc/nginx/conf.d/app.conf: proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
/etc/nginx/conf.d/app.conf: proxy_set_header X-Forwarded-Proto $scheme;
数据保密性
A. HTTPS 与证书
核查命令:
grep -R "listen 443\\|ssl_certificate\\|ssl_protocols\\|ssl_ciphers" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:管理面与敏感业务面应优先启用 HTTPS;若使用国密、负载均衡或 WAF 终止 TLS,需补等效证据。
- 预期证据:HTTPS 配置截图、证书信息、页面截图。
示例输出(节选)
/etc/nginx/conf.d/ssl.conf: listen 443 ssl;
/etc/nginx/conf.d/ssl.conf: ssl_certificate /etc/nginx/ssl/demo-server.pem;
/etc/nginx/conf.d/ssl.conf: ssl_protocols TLSv1.2 TLSv1.3;
/etc/nginx/conf.d/ssl.conf: ssl_ciphers HIGH:!aNULL:!MD5;
B. 敏感头与敏感信息保护
核查命令:
grep -R "proxy_set_header Authorization\\|Set-Cookie\\|more_set_headers" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:避免日志、错误页、转发头部中泄露口令、令牌、会话标识。
- 预期证据:配置截图、脱敏日志截图。
示例输出(节选)
/etc/nginx/conf.d/app.conf: proxy_set_header Authorization $http_authorization;
备份恢复
A. 配置备份
核查命令:
find /etc/nginx -maxdepth 2 -type f 2>/dev/null
- 备注:应覆盖主配置、站点配置、证书、脚本和自定义模块配置。
- 预期证据:备份目录截图、备份策略。
示例输出(节选)
/etc/nginx/nginx.conf
/etc/nginx/mime.types
/etc/nginx/conf.d/default.conf
/etc/nginx/conf.d/app.conf
/etc/nginx/ssl/demo-server.pem
B. 日志与证书备份
核查命令:
ls /var/log/nginx 2>/dev/null
- 备注:日志是否备份视现场口径确定,证书、密钥、关键配置应明确备份责任。
- 预期证据:日志归档截图、证书备份说明。
示例输出(节选)
access.log
error.log
access.log-20260823.gz
error.log-20260823.gz
C. 恢复与切换
核查命令:
nginx -t
- 备注:现场可通过发布回滚流程、主备切换方案、镜像回退记录证明恢复能力。
- 预期证据:回滚手册、演练记录、访谈记录。
示例输出(节选)
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
剩余信息保护
A. 历史站点与旧配置
核查命令:
find /etc/nginx -type f | grep -E "bak|old|test|default" 2>/dev/null
- 备注:停用站点、测试配置、旧证书和备份文件不要长期明文保留在生产目录。
- 预期证据:目录截图、清理说明。
示例输出(节选)
/etc/nginx/conf.d/demo-old.conf.bak
/etc/nginx/sites-enabled/default
B. 敏感残留
核查命令:
grep -R "password\\|secret\\|token" /etc/nginx /var/log/nginx 2>/dev/null
- 备注:如 Basic 认证文件、上游口令、令牌残留明文,应按问题记录。
- 预期证据:脱敏截图、整改记录。
示例输出(节选)
/var/log/nginx/access.log:$remote_addr - - [24/Aug/2026:09:58:12 +0800] "POST /admin/login HTTP/1.1" password=***
(其余命中为日志中的表单参数,已建议脱敏)
个人信息保护
A. 日志字段最小化
核查命令:
grep -R "log_format" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:不建议在访问日志中记录完整身份证号、手机号、Cookie、Authorization 等敏感信息。
- 【不适用】若 Nginx 仅承载四层转发、健康检查或不记录业务字段,且日志中不涉及任何个人信息字段,则该点可判定为不适用。理由:测评对象不直接处理个人信息。依据:GB/T 28448-2019 个人信息保护控制点以是否实际收集、存储、传输、展示个人信息为前提。
- 预期证据:日志格式截图、样例日志截图。
示例输出(节选)
/etc/nginx/nginx.conf: log_format main '$remote_addr - $remote_user [$time_local] '
/etc/nginx/nginx.conf: '"$request" $status $body_bytes_sent '
/etc/nginx/nginx.conf: '"$http_referer" "$http_user_agent"';
B. 导出与共享控制
核查命令:
grep -R "autoindex\\|dav_methods" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:目录浏览、下载目录、WebDAV 等功能若启用,需关注个人信息文件的越权访问与批量导出风险。
- 【不适用】若未启用目录浏览、WebDAV、文件下载或对象共享能力,且 Nginx 仅承担代理转发,则“个人信息导出与共享控制”对本组件可判定为不适用。理由:对象不具备相关业务导出功能。依据:GB/T 28448-2019 个人信息保护控制点按对象实际功能边界判定。
- 预期证据:功能配置截图、权限说明、访谈记录。
示例输出(节选)
(无输出,未启用 autoindex 与 dav_methods)
入侵防范
A. 管理页与敏感位置暴露
核查命令:
grep -R "stub_status\\|status\\|autoindex\\|dav_methods" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:重点防止状态页、目录浏览、WebDAV、测试站点和默认页面暴露形成攻击入口。
- 预期证据:配置截图、访问测试截图、处置说明。
示例输出(节选)
/etc/nginx/conf.d/status.conf: location /stub_status {
/etc/nginx/conf.d/status.conf: stub_status;
(已确认状态页配置了 allow/deny 网段限制与 Basic 认证)
B. 危险请求与异常流量防护
核查命令:
grep -R "limit_req\\|limit_conn\\|client_max_body_size\\|deny" /etc/nginx /usr/local/nginx/conf 2>/dev/null
- 备注:关注大包上传、暴力扫描、异常连接、恶意源地址和管理接口访问限制。
- 预期证据:限流配置截图、ACL 截图、WAF 联动材料。
示例输出(节选)
/etc/nginx/conf.d/app.conf: limit_req zone=login burst=5 nodelay;
/etc/nginx/nginx.conf: client_max_body_size 10m;
/etc/nginx/conf.d/admin.conf: deny 192.168.10.0/24;
C. 版本与漏洞风险
核查命令:
nginx -v
- 备注:应确认版本、OpenSSL/TLS 组件和是否存在长期未升级情况,补充漏洞整改或基线加固说明。
- 预期证据:版本截图、补丁记录、整改说明。
示例输出(节选)
nginx version: nginx/1.24.0
D. 入侵告警联动
核查命令:
tail -n 20 /var/log/nginx/access.log 2>/dev/null
tail -n 20 /var/log/nginx/error.log 2>/dev/null
- 备注:Nginx 入侵防范通常依赖 WAF、IPS、日志平台或安全设备联动,不应仅依赖单机日志。
- 预期证据:WAF/IPS 截图、日志平台告警、封禁记录。
示例输出(节选)
192.168.1.23 - - [24/Aug/2026:10:21:33 +0800] "GET /api/v1/user HTTP/1.1" 200 187 "-" "Mozilla/5.0" "-"
2026/08/24 10:20:11 [warn] 1205#0: *882 upstream server temporarily disabled
2026/08/24 10:20:15 [error] 1205#0: *901 connect() failed (111: Connection refused) while connecting to upstream