:description:Nginx 配置安全非常重要,本文介绍一些常见的通过配置方式,实现nginx安全的措施。 :keywords:Nginx 配置安全,nginx 配置避免攻击
合理设置HTTP头部
确保在配置文件中设置 HTTP Header
时,标注 安全cookie
,避免被三方脚本注入后获取,同时 header 的 value 部分避免直接插入未经处理的用户输入,使用变量时要特别小心。
add_header Set-Cookie "mycookie=value; HttpOnly; Secure";
使用安全头部增强安全性
通过Nginx配置添加一些安全相关的HTTP头部,增强安全性:
add_header X-Content-Type-Options nosniff;
防止MIME类型混淆攻击:阻止浏览器对响应内容进行MIME类型嗅探:
-
攻击者尝试通过动态内容将恶意内容(如JavaScript)伪装成合法内容(如图片或文本文件)混淆MIME类型。
-
X-Content-Type-Options头部设置为nosniff,告知浏览器不得根据传输内容推测资源的类型,而应按服务器声明的Content-Type类型处理
-
这可以防止攻击者上传伪装过MIME类型的图片,来欺骗用户浏览器执行恶意代码。
设置HTTP严格传输安全(HSTS)
强制客户端通过HTTPS访问,减少中间人攻击的风险:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
注意该配置建议在新网站初期调整小一点,避免证书过期等问题,小一点有利于运维,稳定后逐步调大。 |
使用模块检测和拦截恶意请求
使用Nginx的第三方模块,如ModSecurity,可以增强Nginx的应用防护能力:
先安装ModSecurity模块,然后启用 |
load_module modules/ngx_http_modsecurity_module.so;
http {
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
}
配置反向代理安全设置
如果Nginx作为反向代理服务器,确保配置不会转发不信任的头部:
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;
启用日志和监控
启用详细的日志和监控,及时发现和响应潜在的安全威胁:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;