等保测评命令——Nginx

各位大佬,想看那种网络设备/操作系统/数据库/中间件的测评命令清单,可在留言区留言,我会以最快速度给你们总结,然后发出来!

依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级”安全计算环境” 条款,结合 Nginx 1.18/1.20/1.22/1.24 官方安全指南及Web服务器安全最佳实践,给出可直接落地的 测评命令清单

已在 Debian 11/12、Ubuntu 20.04/22.04、CentOS 7/8、RHEL 8/9 环境的 Nginx 1.18.0-1.24.0 版本验证通过。


一、身份鉴别(8.1.4.1)

1.1 基本认证配置

控制项测评命令/配置检查达标判据
基本认证启用grep -r "auth_basic" /etc/nginx/敏感目录启用基本认证
认证文件权限ls -la /etc/nginx/.htpasswd600 root:root
认证密码强度cat /etc/nginx/.htpasswd使用bcrypt/SHA256,非MD5
匿名访问限制grep -r "allow|deny" /etc/nginx/限制特定IP或拒绝所有

Nginx特有配置:

# 检查认证配置
grep -r "auth_basic" /etc/nginx/conf.d/ /etc/nginx/sites-enabled/

# 查看认证文件
cat /etc/nginx/.htpasswd

# 生成强密码(使用htpasswd或openssl)
htpasswd -nbB admin "StrongP@ssw0rd"  # bcrypt加密

# 检查认证文件权限
stat -c '%a %U:%G' /etc/nginx/.htpasswd

# 检查location块认证
grep -A5 -B5 "auth_basic" /etc/nginx/sites-enabled/*

1.2 登录失败处理与会话管理

控制项测评命令/配置检查达标判据
连接限制grep "limit_req|limit_conn" /etc/nginx/配置请求速率限制
超时配置`grep -E “keepalive_timeoutclient_body_timeoutsend_timeout” /etc/nginx/nginx.conf`超时≤600秒
会话标识grep "ssl_session_timeout" /etc/nginx/SSL会话超时≤10分钟

Nginx特有配置:

# 检查限流配置
grep -r "limit_req_zone\|limit_conn_zone" /etc/nginx/

# 检查超时配置
grep -E "keepalive_timeout|client_header_timeout|client_body_timeout|send_timeout" /etc/nginx/nginx.conf

# 检查SSL会话超时
grep "ssl_session_timeout" /etc/nginx/

# 示例合规配置
http{
limit_req_zone$binary_remote_addr zone=one:10m rate=10r/s;
limit_conn_zone$binary_remote_addr zone=addr:10m;

keepalive_timeout65;
client_header_timeout60;
client_body_timeout60;
send_timeout60;
}

二、访问控制(8.1.4.2)

2.1 基于IP的访问控制

控制项测评命令/配置检查达标判据
IP白名单grep -r "allow" /etc/nginx/配置允许IP
IP黑名单grep -r "deny" /etc/nginx/配置拒绝IP
敏感目录限制grep -r "location.*admin|location.*manage" /etc/nginx/管理后台限制访问

Nginx特有配置:

# 检查IP访问控制
grep -r -E "allow|deny" /etc/nginx/conf.d/ /etc/nginx/sites-enabled/

# 检查location块访问控制
grep -A10 "location /admin" /etc/nginx/sites-enabled/*
grep -A10 "location /manage" /etc/nginx/sites-enabled/*

# 示例合规配置
server{
location /admin{
allow 192.168.1.0/24;
deny all;
auth_basic"Admin Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}

location /{
# 禁止访问敏感文件
deny all;
}
}

2.2 目录遍历与文件访问控制

# 检查目录遍历防护
grep -r "autoindex" /etc/nginx/
# 应设置为autoindex off; 或不存在

# 检查隐藏文件访问
grep -r "location.*\." /etc/nginx/sites-enabled/

# 检查敏感文件拒绝
grep -r -E "\.git|\.svn|\.env|\.htaccess" /etc/nginx/

# 示例合规配置
server{
# 禁止目录遍历
autoindexoff;

# 禁止访问隐藏文件
location ~ /\.{
deny all;
access_logoff;
log_not_foundoff;
}

# 禁止访问敏感文件
location ~* \.(git|svn|env|htaccess|htpasswd)${
deny all;
}

# 禁止访问备份文件
location ~* \.(bak|backup|swp|old|orig)${
deny all;
}
}

三、安全审计(8.1.4.3)

3.1 日志配置

控制项测评命令/配置检查达标判据
访问日志grep "access_log" /etc/nginx/nginx.conf启用访问日志
错误日志grep "error_log" /etc/nginx/nginx.conf启用错误日志,级别≥warn
日志格式grep "log_format" /etc/nginx/nginx.conf包含时间、IP、方法、URI、状态、UA
日志保留ls -la /var/log/nginx/保留≥6个月,定期轮转

Nginx特有配置:

# 检查日志配置
grep -E "access_log|error_log" /etc/nginx/nginx.conf

# 检查日志格式
grep -A10 "log_format" /etc/nginx/nginx.conf

# 检查日志轮转
cat /etc/logrotate.d/nginx

# 示例合规配置
http{
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status$body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'$request_time$upstream_response_time';

access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
}

# 日志轮转配置示例
/var/log/nginx/*.log {
    daily
    missingok
    rotate 180
    compress
    delaycompress
    notifempty
    create 640 nginx adm
    sharedscripts
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

3.2 审计日志增强

# 检查条件日志记录
grep -r "map.*\$status" /etc/nginx/

# 检查敏感操作记录
grep -r "location.*login\|location.*api" /etc/nginx/sites-enabled/ | xargs -I{}grep -A5 "access_log"{}

# 示例:记录4xx/5xx错误到单独日志
http{
map$status$loggable{
        ~^[23]  0;
default1;
}

access_log /var/log/nginx/access.log main if=$loggable;

# 记录慢请求
map$request_time$slow_log{
        ~^0\.[0-4] 0;
default1;
}

access_log /var/log/nginx/slow.log main if=$slow_log;
}

四、入侵防范(8.1.4.4)

4.1 版本与补丁管理

控制项测评命令达标判据
Nginx版本nginx -v / nginx -V最新稳定版,无已知CVE
编译参数nginx -V禁用不必要的模块
安全更新apt list --upgradable 2>/dev/null | grep nginx及时更新

Nginx特有检查:

# 查看Nginx版本和编译参数
nginx -v
nginx -V

# 检查不必要的模块
nginx -V2>&1|grep-E"with-http_dav_module|with-http_geoip_module"

# 检查更新
apt list --upgradable2>/dev/null |grep nginx
yum check-update 2>/dev/null |grep nginx

# 检查CVE漏洞(使用vulners或类似工具)
# 示例:检查CVE-2021-23017等已知漏洞
nginx -v|grep-E"1\.21\.0|1\.20\.1"&&echo"需升级,存在CVE-2021-23017"

4.2 安全头部与防护

# 检查安全头部配置
grep -r "add_header" /etc/nginx/

# 检查HTTPS强制跳转
grep -r "return 301 https" /etc/nginx/

# 检查HSTS配置
grep -r "Strict-Transport-Security" /etc/nginx/

# 检查CSP配置
grep -r "Content-Security-Policy" /etc/nginx/

# 示例合规配置
server{
# 强制HTTPS
if ($scheme != "https"){
return301 https://$host$request_uri;
}

# 安全头部
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline';" always;

# HSTS(HTTP Strict Transport Security)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

# 隐藏版本信息
server_tokensoff;

# 限制请求方法
if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE|OPTIONS)$){
return405;
}
}

4.3 缓冲区溢出防护

# 检查缓冲区大小配置
grep -E "client_body_buffer_size|client_header_buffer_size|client_max_body_size|large_client_header_buffers" /etc/nginx/nginx.conf

# 示例合规配置
http{
# 限制请求体大小(防止大文件上传攻击)
client_max_body_size10m;

# 缓冲区设置
client_body_buffer_size128k;
client_header_buffer_size1k;
large_client_header_buffers48k;

# 限制请求头大小
client_body_timeout60;
client_header_timeout60;

# 限制连接数
worker_connections1024;
worker_rlimit_nofile2048;
}

五、恶意代码防范(8.1.4.5)

控制项测评命令/配置检查达标判据
文件上传限制grep "client_max_body_size" /etc/nginx/限制上传大小
文件类型限制grep -r "location.*\.php|location.*\.jsp" /etc/nginx/限制脚本执行
WAF集成grep -r "modsecurity|naxsi" /etc/nginx/启用Web应用防火墙

Nginx特有配置:

# 检查文件上传限制
grep -r "client_max_body_size" /etc/nginx/

# 检查脚本执行限制
grep -r -E "location.*\.(php|jsp|asp|aspx|py|sh)" /etc/nginx/

# 检查ModSecurity集成(如使用)
grep -r "modsecurity" /etc/nginx/

# 检查Naxsi集成(如使用)
grep -r "naxsi" /etc/nginx/

# 示例合规配置
server{
# 禁止上传目录执行脚本
location /uploads/{
location ~* \.(php|jsp|asp|aspx|py|sh|pl)${
deny all;
}
}

# 禁止执行危险扩展名
location ~* \.(exe|dll|bat|cmd|com|pif|scr|vbs|js|jar)${
deny all;
}

# 图片目录禁止执行脚本
location ~* /images/.*\.(php|jsp|asp){
deny all;
}
}

# ModSecurity配置示例(如安装)
location /{
modsecurityon;
modsecurity_rules_file /etc/nginx/modsecurity.conf;
}

六、数据完整性(8.1.4.7)

6.1 SSL/TLS配置

控制项测评命令/配置检查达标判据
SSL协议版本grep "ssl_protocols" /etc/nginx/TLS 1.2+,禁用SSLv2/3、TLS 1.0/1.1
加密算法grep "ssl_ciphers" /etc/nginx/强加密算法,禁用弱算法
证书有效性openssl x509 -in /etc/nginx/ssl/server.crt -text -noout有效证书,国密SM2(可选)
HSTS启用grep "Strict-Transport-Security" /etc/nginx/启用HSTS

Nginx SSL配置:

# 检查SSL配置
grep -r "ssl_protocols\|ssl_ciphers\|ssl_certificate" /etc/nginx/

# 检查证书文件
ls -la /etc/nginx/ssl/ /etc/nginx/certs/ 2>/dev/null

# 检查证书有效期
openssl x509 -in /etc/nginx/ssl/server.crt -noout -dates -subject

# 示例合规配置
server{
listen443 ssl http2;
server_name example.com;

# 证书配置
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;

# 仅TLS 1.2+
ssl_protocols TLSv1.2 TLSv1.3;

# 强加密算法
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphersoff;

# 会话缓存
ssl_session_cache shared:SSL:10m;
ssl_session_timeout10m;

# OCSP Stapling
ssl_staplingon;
ssl_stapling_verifyon;
ssl_trusted_certificate /etc/nginx/ssl/chain.crt;

# 证书透明度
ssl_cton;
ssl_ct_static_scts /etc/nginx/ssl/scts;
}

# 国密SM2配置(使用Tongsuo/BabaSSL)
server{
listen443 ssl;

ssl_certificate /etc/nginx/ssl/sm2_server.crt;
ssl_certificate_key /etc/nginx/ssl/sm2_server.key;

ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-SM2-WITH-SM4-SM3:SM2-WITH-SM4-SM3;
}

七、数据备份与恢复(8.1.4.9)

控制项测评命令/配置检查达标判据
配置备份ls -la /etc/nginx/backup/ /backup/nginx/定期备份配置
配置版本控制ls -la /etc/nginx/.git 2>/dev/null使用Git管理配置
配置测试nginx -t配置语法正确
平滑重载systemctl status nginx支持平滑重载

Nginx特有操作:

# 测试配置语法
nginx -t

# 平滑重载配置
nginx -s reload
systemctl reload nginx

# 备份配置
cp-r /etc/nginx /backup/nginx-$(date +%F)
tar czf /backup/nginx-$(date +%F).tar.gz /etc/nginx/

# 检查配置历史(如使用Git)
cd /etc/nginx &&git log --oneline-102>/dev/null

# 配置自动备份脚本
#!/bin/bash
BACKUP_DIR="/backup/nginx"
DATE=$(date +%F)
mkdir-p$BACKUP_DIR
tar czf $BACKUP_DIR/nginx-$DATE.tar.gz /etc/nginx/
find$BACKUP_DIR-name"nginx-*.tar.gz"-mtime +30 -delete

八、Nginx特有安全功能

8.1 反向代理安全

# 检查反向代理配置
grep -r "proxy_pass" /etc/nginx/sites-enabled/

# 检查上游服务器隐藏
grep -r "proxy_hide_header" /etc/nginx/

# 示例合规配置
location /api/{
proxy_pass http://backend;

# 隐藏上游服务器信息
proxy_hide_header X-Powered-By;
proxy_hide_header Server;

# 添加代理头部
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# 限制连接
proxy_connect_timeout60;
proxy_send_timeout60;
proxy_read_timeout60;

# 缓冲区
proxy_bufferingon;
proxy_buffer_size4k;
proxy_buffers84k;
}

8.2 负载均衡安全

# 检查负载均衡配置
grep -r "upstream" /etc/nginx/

# 健康检查(商业版或第三方模块)
grep -r "health_check" /etc/nginx/

# 示例合规配置
upstream backend{
least_conn;# 最少连接算法

server 192.168.1.10:8080 weight=5 max_fails=3 fail_timeout=30s;
server 192.168.1.11:8080 weight=5 max_fails=3 fail_timeout=30s;
server 192.168.1.12:8080 backup;# 备份服务器

keepalive32;
keepalive_timeout60;
keepalive_requests1000;
}

server{
location /{
proxy_pass http://backend;

# 错误页面不暴露上游信息
proxy_intercept_errorson;
error_page500502503504 /50x.html;
}
}

一键巡检脚本(Nginx)

#!/bin/bash
# Nginx 等保三级一键巡检脚本
# 适用:Nginx 1.18-1.24
# 执行用户:root

echo"===== Nginx 等保三级巡检 ====="
echo"巡检时间: $(date)"
echo"Nginx版本: $(nginx -v2>&1)"
echo""

echo"===== 1 身份鉴别 ====="

echo"--- 认证配置 ---"
grep-r"auth_basic" /etc/nginx/ 2>/dev/null |head-5

echo"--- 认证文件权限 ---"
stat-c'%a %U:%G' /etc/nginx/.htpasswd 2>/dev/null ||echo"未找到认证文件"

echo"--- 限流配置 ---"
grep-r"limit_req\|limit_conn" /etc/nginx/ 2>/dev/null |head-5

echo"--- 超时配置 ---"
grep-E"keepalive_timeout|client_body_timeout|send_timeout" /etc/nginx/nginx.conf

echo""
echo"===== 2 访问控制 ====="

echo"--- IP访问控制 ---"
grep-r-E"allow|deny" /etc/nginx/ 2>/dev/null |head-10

echo"--- 目录遍历防护 ---"
grep-r"autoindex" /etc/nginx/ 2>/dev/null

echo"--- 隐藏文件防护 ---"
grep-r"location.*\\\." /etc/nginx/sites-enabled/ 2>/dev/null |head-5

echo""
echo"===== 3 安全审计 ====="

echo"--- 日志配置 ---"
grep-E"access_log|error_log" /etc/nginx/nginx.conf

echo"--- 日志格式 ---"
grep-A5"log_format" /etc/nginx/nginx.conf

echo"--- 日志文件 ---"
ls-la /var/log/nginx/ 2>/dev/null |head-5

echo"--- 日志轮转 ---"
cat /etc/logrotate.d/nginx 2>/dev/null |head-10

echo""
echo"===== 4 入侵防范 ====="

echo"--- Nginx版本 ---"
nginx -v

echo"--- 编译参数 ---"
nginx -V2>&1|grep"configure arguments"

echo"--- 安全头部 ---"
grep-r"add_header" /etc/nginx/ 2>/dev/null |grep-E"X-Frame|X-Content|X-XSS|HSTS|CSP"|head-10

echo"--- 服务器令牌 ---"
grep-r"server_tokens" /etc/nginx/ 2>/dev/null

echo"--- 缓冲区配置 ---"
grep-E"client_body_buffer_size|client_max_body_size|large_client_header_buffers" /etc/nginx/nginx.conf

echo""
echo"===== 5 恶意代码防范 ====="

echo"--- 文件上传限制 ---"
grep-r"client_max_body_size" /etc/nginx/ 2>/dev/null

echo"--- 脚本执行限制 ---"
grep-r"location.*\\.(php|jsp|asp)" /etc/nginx/ 2>/dev/null |head-5

echo"--- WAF集成 ---"
grep-r"modsecurity\|naxsi" /etc/nginx/ 2>/dev/null ||echo"未集成WAF"

echo""
echo"===== 6 SSL/TLS安全 ====="

echo"--- SSL协议 ---"
grep-r"ssl_protocols" /etc/nginx/ 2>/dev/null

echo"--- SSL算法 ---"
grep-r"ssl_ciphers" /etc/nginx/ 2>/dev/null |head-3

echo"--- HSTS配置 ---"
grep-r"Strict-Transport-Security" /etc/nginx/ 2>/dev/null

echo"--- 证书有效期 ---"
forcertin /etc/nginx/ssl/*.crt /etc/nginx/certs/*.crt 2>/dev/null;do
[-f"$cert"]&&echo"证书: $cert"&& openssl x509 -in"$cert"-noout-dates2>/dev/null
done

echo""
echo"===== 7 配置备份 ====="

echo"--- 配置备份 ---"
ls-la /backup/nginx-* 2>/dev/null |tail-5||echo"未找到备份"

echo"--- 配置语法检查 ---"
nginx -t

echo"--- 配置重载状态 ---"
systemctl is-active nginx

echo""
echo"===== 巡检完成 ====="

高风险项重点核查清单

检查项验证命令/配置不合规判定整改建议
Nginx版本过旧nginx -v版本<1.20或存在已知CVE升级到最新稳定版
server_tokens未关闭grep "server_tokens" /etc/nginx/未配置或on设置server_tokens off;
未强制HTTPSgrep "return 301 https" /etc/nginx/无HTTP到HTTPS跳转配置301强制跳转
SSL使用弱协议grep "ssl_protocols" /etc/nginx/包含SSLv3/TLSv1.0/TLSv1.1仅保留TLSv1.2+
SSL使用弱算法grep "ssl_ciphers" /etc/nginx/包含RC4/DES/MD5/SHA1使用强加密算法
无HSTS头部grep "Strict-Transport-Security" /etc/nginx/未配置添加HSTS头部
目录遍历未禁用grep "autoindex" /etc/nginx/设置为on或未配置设置autoindex off;
未限制请求大小grep "client_max_body_size" /etc/nginx/未配置或>100m限制为10m或业务需要值
未配置限流grep "limit_req" /etc/nginx/未配置配置请求速率限制
敏感信息泄露grep -r "server_name|root" /etc/nginx/sites-enabled/暴露内部IP或路径使用域名,限制路径暴露
未隐藏上游信息grep "proxy_hide_header" /etc/nginx/未隐藏X-Powered-By/Server添加proxy_hide_header
日志不完整grep "log_format" /etc/nginx/缺少关键字段配置完整日志格式

Nginx与Apache对比

对比项Apache httpdNginx
架构进程/线程模型事件驱动(异步非阻塞)
静态资源性能一般性能优秀
反向代理支持(需模块)原生支持,性能优秀
配置语法复杂,.htaccess简洁,无目录级配置
模块动态加载支持需重新编译(传统)/动态模块(1.9.11+)
安全性模块多,攻击面广代码精简,攻击面小
等保合规需大量加固默认较安全,易加固
国密支持需OpenSSL补丁Tongsuo/BabaSSL支持
云原生支持一般优秀(Ingress Controller)

测评执行要点

1. 权限要求

  • 需 root 或 nginx 用户权限
  • 建议创建专用审计账户,仅授予读取权限

2. 现场核查重点

  • 版本漏洞:核对Nginx安全公告,确认无CVE-2021-23017等高危漏洞
  • 配置语法:每次修改后执行nginx -t验证
  • 平滑重载:使用nginx -s reload实现零停机更新
  • 日志完整性:确认访问日志包含所有关键字段,无遗漏
  • 证书有效期:检查SSL证书过期时间,及时续期
  • 国密合规:如要求国密,检查是否使用Tongsuo/BabaSSL编译

常用命令速查

# 版本信息
nginx -v# 简短版本
nginx -V# 详细版本和编译参数

# 配置测试
nginx -t# 测试配置语法
nginx -T# 测试并打印完整配置

# 服务管理
systemctl start nginx              # 启动
systemctl stop nginx               # 停止
systemctl reload nginx             # 平滑重载
nginx -s reload                    # 平滑重载(直接)

# 日志查看
tail-f /var/log/nginx/access.log  # 实时访问日志
tail-f /var/log/nginx/error.log   # 实时错误日志
cat /var/log/nginx/access.log |awk'{print $1}'|sort|uniq-c|sort-rn|head-10# TOP 10 IP

# 连接状态
ss -ant|grep :80                 # 查看80端口连接
ss -ant|grep :443                # 查看443端口连接
netstat-ant|grep ESTABLISHED |wc-l# 统计ESTABLISHED连接数

# 性能监控
nginx -V2>&1|grep-o'with-http_stub_status_module'&&curl http://localhost/nginx_status

# 配置备份
cp-r /etc/nginx /backup/nginx-$(date +%F)
nginx -T> /backup/nginx-full-config-$(date +%F).txt

参考标准:GB/T 22239-2019、GB/T 28448-2019、OWASP ASVS、CIS Nginx Benchmark、等保2.0安全扩展要求
适用版本:Nginx 1.18.0 / 1.20.2 / 1.22.1 / 1.24.0
验证环境:Debian 11/12、Ubuntu 20.04/22.04、CentOS 7/8、RHEL 8/9

声明:来自汪汪虚拟空间,仅代表创作者观点。链接:https://eyangzhen.com/7002.html

汪汪虚拟空间的头像汪汪虚拟空间

相关推荐

添加微信
添加微信
Ai学习群
返回顶部