当前位置:首页 > 渗透测试 > 正文内容

Nginx安全配置最佳实践(2026版)——抵御现代Web攻击的完整指南

admin2小时前渗透测试1

Nginx安全配置最佳实践(2026版)——抵御现代Web攻击的完整指南

Nginx作为全球使用率最高的Web服务器之一,承载着大量关键业务。然而,默认配置下Nginx存在诸多安全隐患。本文从攻击者视角出发,提供一套可落地的Nginx安全加固方案。


一、隐藏版本号与服务器信息

攻击者通常会通过服务器版本号定位已知漏洞。关闭版本号泄露是安全第一步。

# 在 http 块中配置
server_tokens off;
# 自定义错误页面,避免泄露nginx路径
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;

验证效果:curl -I https://yourdomain.com 返回头不再包含nginx版本。

二、TLS/SSL 安全配置(A+评分)

2026年建议的最低TLS标准:

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:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

# 推荐使用自动OCSP装订
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 1.1.1.1 valid=300s;

配置完成后建议用 https://www.ssllabs.com/ssltest/ 检测评分。

三、HTTP安全响应头

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' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

各头部作用说明:

  • X-Frame-Options: 防止点击劫持攻击
  • X-Content-Type-Options: 防止MIME类型混淆攻击
  • Content-Security-Policy: 防止XSS和数据注入攻击(核心防护)
  • Strict-Transport-Security: 强制HTTPS访问,防止SSL剥离攻击
  • Permissions-Policy: 限制浏览器API权限,防止隐私泄露

四、请求大小与超时限制

# 限制请求体大小(防止大文件DoS攻击)
client_max_body_size 10m;

# 超时设置(防止慢速攻击Slow HTTP DoS)
client_body_timeout 10s;
client_header_timeout 10s;
send_timeout 10s;
keepalive_timeout 65s;

# 限制连接数(同一IP并发连接)
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 10;

# 限制请求速率
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/s;
limit_req zone=one burst=20 nodelay;

慢速HTTP攻击(Slowloris)通过保持连接不关闭耗尽服务器资源,上述超时配置能有效防御。

五、目录与文件权限控制

# 禁止访问隐藏文件
location ~ /\. {
    deny all;
    access_log off;
    log_not_found off;
}

# 禁止访问敏感文件
location ~* \.(?:bak|config|sql|dump|log|old|swp|git|svn)$ {
    deny all;
}

# 限制特定目录的可执行权限
location ~* /(?:uploads|files|assets)/.*\.(?:php|pl|py|jsp|asp)$ {
    deny all;
}

# 限制wp-admin等敏感路径(如果有)
location /admin {
    allow 你的办公IP;
    deny all;
}

六、反向代理安全

location / {
    proxy_pass http://backend;
    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;
    
    # 防止HTTP头注入
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    
    # 禁用代理缓冲(适用于实时应用)
    proxy_buffering off;
}

# 限制后端访问来源
location /backend/ {
    allow 127.0.0.1;
    allow 内网IP段/24;
    deny all;
    proxy_pass http://internal_backend;
}

七、ModSecurity WAF集成(可选)

# 安装ModSecurity
apt install libmodsecurity3 nginx-mod-stream-modsecurity

# 加载模块
load_module modules/ngx_stream_modsecurity_module.so;

# 在http块启用
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;

# 核心规则集(OWASP CRS)
# 建议启用OWASP Core Rule Set,可防御SQL注入、XSS、命令注入等
SecRuleEngine On
Include /etc/nginx/modsec/crs-setup.conf
Include /etc/nginx/modsec/rules/*.conf

八、日志安全监控

# 自定义日志格式包含安全相关字段
log_format security '$remote_addr - $remote_user [$time_local] '
                   '"$request" $status $body_bytes_sent '
                   '"$http_referer" "$http_user_agent" '
                   '$request_time $upstream_response_time';

# 安全事件专用日志
access_log /var/log/nginx/access.log security;
error_log /var/log/nginx/error.log warn;

# 使用auditbeat或goaccess做日志分析
# goaccess /var/log/nginx/access.log -o /var/www/html/report.html --real-time-html

九、定期安全巡检命令

# 检查配置语法
nginx -t

# 检查监听端口
ss -tlnp | grep nginx

# 检查TLS证书到期
echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates

# 检查是否有可疑请求
tail -f /var/log/nginx/access.log | grep -E "(union.*select|eval|base64|&1 | grep -i "nginx version"
# 访问 https://www.cvedetails.com/product/12256/Nginx-Nginx.html 查看CVE

十、一键安全加固脚本

#!/bin/bash
# nginx_security_hardening.sh
set -e

NGINX_CONF="/etc/nginx/nginx.conf"

echo "=== Nginx安全加固脚本 ==="

# 1. 关闭版本号
if grep -q "server_tokens" "$NGINX_CONF"; then
    sed -i 's/server_tokens.*on/server_tokens off/' "$NGINX_CONF"
else
    sed -i '/^http {/a \    server_tokens off;' "$NGINX_CONF"
fi

# 2. 添加安全头
cat > /etc/nginx/security-headers.conf << 'EOF'
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 Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
EOF

# 3. 检查配置并重载
nginx -t && systemctl reload nginx

echo "✅ 安全加固完成!"
echo "请手动检查以下事项:"
echo "  1. 运行 nginx -t 确认无语法错误"
echo "  2. 使用 ssllabs.com 检测TLS评分"
echo "  3. 检查日志中是否有异常请求"

本文总结了Nginx安全配置的10个核心要点,从基础加固到WAF集成,覆盖了现代Web服务器面临的主要威胁。建议将本文作为日常安全巡检的参考清单。

💡 相关内容:Linux服务器安全加固指南 | ELK日志分析部署


相关文章

ELK(Elasticsearch + Logstash + Kibana)详细部署方法

ELK(Elasticsearch + Logstash + Kibana)详细部署方法 ELK是Elasticsearch、Logstash、Kibana三个开源工具的简称,是目前最流行的日志分析...

Docker容器安全指南(2026版)——从镜像到运行时的全链路防护

Docker容器安全指南(2026版)——从镜像到运行时的全链路防护 Docker已成为云原生时代的标配,但"容器不等于安全"——默认配置下的Docker存在大量安全隐患。据统计,超过60%的容器安全...

Zabbix 7.0监控系统从零部署到生产实践(2026版)

Zabbix 7.0监控系统从零部署到生产实践(2026版) Zabbix是企业级开源监控解决方案的首选,支持网络设备、服务器、云资源等全方位监控。2025年发布的Zabbix 7.0带来了重大更新:...

MySQL主从复制与高可用架构实战指南(2026版)

MySQL主从复制与高可用架构实战指南(2026版) MySQL作为全球最流行的开源关系型数据库,在高并发场景下的高可用架构设计至关重要。本文从基础主从复制到Group Replication集群,提...

Kubernetes入门到生产实践:从零搭建高可用集群(2026版)

Kubernetes入门到生产实践:从零搭建高可用集群(2026版) Kubernetes(简称K8s)已成为容器编排的事实标准。然而,从学习K8s到真正用于生产,中间有巨大的鸿沟。本文从零开始,带你...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。