对 Nginx 进行安全加固是保障Web服务安全的关键一环,能有效抵御大量常见的网络攻击。一份良好的配置可以拦截超过90%的常规Web漏洞。以下是从基础到进阶的核心加固实践:

🛡️ Nginx 核心加固实践清单

加固领域关键措施主要作用
🔒 信息隐藏设置 server_tokens off; 隐藏版本号防止攻击者利用已知版本漏洞进行定向攻击
📂 目录与文件访问禁用目录列表(autoindex off;);阻止访问敏感目录(如 .git.svnadminbackup)和文件(如 .htaccess.log防止信息泄露和未授权访问
🌐 传输加密 (HTTPS)强制跳转HTTPS;仅启用 TLSv1.2TLSv1.3;配置强加密套件;启用 HSTS确保数据在传输过程中的机密性和完整性,抵御中间人攻
🔐 访问控制使用 allow/deny 设置IP黑白名单;对敏感路径启用HTTP基础认证;严格限制HTTP请求方法(如仅允许 GET POST HEAD精细化控制访问权限,防止越权和未授权操作
🛡️ Web应用防火墙 (WAF)使用正则表达式拦截SQL注入、XSS、路径遍历等恶意请求;限制请求速率;设置缓冲区大小在应用层过滤恶意流量,防御CC攻击和缓冲区溢出攻击
📜 日志与审计配置详细访问和错误日志;定期轮转、备份并设置仅root或nginx用户可读写(如 chmod 600用于安全审计、事后追溯和攻击溯源
⚙️ 服务器加固使用非root用户运行Nginx工作进程;保持Nginx版本及时更新最小化权限,修复已知安全漏洞
🧪 请求与资源限制设置合理的 client_max_body_size;配置超时时间;启用limit_reqlimit_conn模块防止资源耗尽型DoS攻击

⚙️ 配置实践详解

1. 限制HTTP请求方法

仅开放业务必需的HTTP方法,可有效阻止攻击者利用非常规方法进行恶意操作:

if ($request_method !~ ^(GET|POST|HEAD)$ ) {
    return 403;
}

2. 拦截恶意请求

直接在Nginx层面拦截带有SQL注入、XSS等特征的请求,是构建应用层防火墙的有效手段:

# 拦截SQL注入特征
if ($request_uri ~* "(union|select|insert|update|delete|drop|truncate)") {
    return 403;
}
# 拦截XSS攻击特征
if ($request_uri ~* "(<script|<iframe|onclick=)") {
    return 403;
}

3. 配置安全的SSL/TLS

SSL/TLS的配置直接关系到数据传输的安全性,应遵循行业最佳实践:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
# 启用OCSP Stapling以提升性能和隐私
ssl_stapling on;
ssl_stapling_verify on;

4. 设置安全响应头

添加一系列HTTP响应头,可以指示浏览器启用额外的安全机制,有效防范多种客户端攻击:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline';";
add_header Referrer-Policy "strict-origin-when-cross-origin";

5. 精细化访问控制

通过IP白名单和HTTP基础认证,可以为敏感资源(如管理后台)提供双重保护:

location /admin {
    allow 192.168.1.0/24;  # 仅允许内网IP段
    deny all;
    auth_basic "Admin Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

🔧 环境与合规加固

  • Docker容器环境:应始终使用官方镜像、避免以root用户运行容器、启用Docker的内容信任机制并定期扫描镜像漏洞。
  • 等保合规性:等保2.0要求对Nginx进行身份鉴别、访问控制、安全审计、数据完整性与保密性等多方面的配置。上述加固措施基本覆盖了这些合规要求,是顺利通过等保测评的基础。

📋 验证与监控建议

完成配置后,建议进行如下验证:

  1. 配置语法检查:修改配置后,务必运行 nginx -t 确保配置无误,再执行 nginx -s reload 平滑重启。
  2. 安全扫描:使用 Qualys SSL Labs 等在线工具扫描您的HTTPS配置,确保评级达到A+。定期使用漏洞扫描工具检查Nginx版本和配置。
  3. 日志监控:部署日志监控系统,对访问日志和错误日志中的异常状态码(如大量403、404)、可疑IP等进行告警,以便及时发现并响应攻击行为。
最后修改:2026 年 04 月 03 日
如果觉得我的文章对你有用,请随意赞赏