对 Nginx 进行安全加固是保障Web服务安全的关键一环,能有效抵御大量常见的网络攻击。一份良好的配置可以拦截超过90%的常规Web漏洞。以下是从基础到进阶的核心加固实践: ### 🛡️ Nginx 核心加固实践清单 | 加固领域 | 关键措施 | 主要作用 | | :------------------------ | :----------------------------------------------------------- | :------------------------------------------------- | | **🔒 信息隐藏** | 设置 `server_tokens off;` 隐藏版本号 | 防止攻击者利用已知版本漏洞进行定向攻击 | | **📂 目录与文件访问** | 禁用目录列表(`autoindex off;`);阻止访问敏感目录(如 `.git`、`.svn`、`admin`、`backup`)和文件(如 `.htaccess`、`.log`) | 防止信息泄露和未授权访问 | | **🌐 传输加密 (HTTPS)** | 强制跳转HTTPS;仅启用 **TLSv1.2** 和 **TLSv1.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_req`和`limit_conn`模块 | 防止资源耗尽型DoS攻击 | ### ⚙️ 配置实践详解 #### 1. 限制HTTP请求方法 仅开放业务必需的HTTP方法,可有效阻止攻击者利用非常规方法进行恶意操作: ```nginx if ($request_method !~ ^(GET|POST|HEAD)$ ) { return 403; } ``` #### 2. 拦截恶意请求 直接在Nginx层面拦截带有SQL注入、XSS等特征的请求,是构建应用层防火墙的有效手段: ```nginx # 拦截SQL注入特征 if ($request_uri ~* "(union|select|insert|update|delete|drop|truncate)") { return 403; } # 拦截XSS攻击特征 if ($request_uri ~* "( 发表评论 取消回复 使用cookie技术保留您的个人信息以便您下次快速评论,继续评论表示您已同意该条款 评论 * 私密评论 名称 * 🎲 邮箱 * 地址 发表评论 提交中...