Nginx是一款高性能的Web服务器和反向代理服务器,广泛用于处理HTTPS请求。为了确保Nginx服务器的安全,以下是一些关键的安全防护措施:
隐藏版本信息:
在http或server块添加 server_tokens off;,避免暴露Nginx版本号。使用 headers-more-nginx-module 模块彻底移除响应头中的 Server: nginx 标识。
访问控制与权限限制:
使用 allow/deny 指令限制敏感接口的IP访问范围。通过 worker_processes 和 worker_connections 合理配置并发连接数。以非root用户运行Nginx进程,并通过 user 指令指定低权限账户。
SSL/TLS加固: 启用TLS 1.3协议,禁用SSLv2/SSLv3等不安全协议。配置强加密套件,例如:
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
ssl_prefer_server_ciphers on;
强制HTTP跳转HTTPS,并启用HSTS头部。
请求限制与防DDoS:
设置 limit_conn_zone 限制单IP并发连接数,limit_req_zone 限制请求速率。配置超时参数:
client_body_timeout 10s;
client_header_timeout 10s;
keepalive_timeout 5s;
禁用TRACE方法:
limit_except GET POST {
deny all;
}
目录与文件防护:
禁用自动目录索引:autoindex off;。限制敏感文件访问:
location ~* \.(conf|log|bak)$ {
deny all;
}
安全头部增强: 添加以下响应头防御XSS/点击劫持等攻击:
add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "SAMEORIGIN";
add_header Content-Security-Policy "default-src 'self'";
使用 X-XSS-Protection 启用浏览器XSS过滤。
模块与日志管理:
禁用未使用的模块(如 autoindex)减少攻击面。启用访问日志和错误日志,配置 log_format 记录关键字段(如客户端IP、请求时间)。
配置与漏洞管理:
使用 nginx -t 测试配置后通过 nginx -s reload 热加载。定期通过 nginx -V 检查编译参数,确保未包含高危模块。
系统级防护:
结合防火墙限制仅开放必要端口(如80/443)。通过 chmod 设置配置文件权限(如 nginx.conf 设为640)。
监控Nginx安全状态:
错误日志监控:/var/log/nginx/error.log 中的异常请求。访问日志分析:监控可疑请求模式。连接数监控:异常并发连接数增长。响应码统计:4xx/5xx比例异常。
应急响应计划: 建立基线:记录正常流量模式。设置告警阈值:异常流量自动告警。准备封锁脚本:快速封禁恶意IP段。备份策略:定期备份配置和证书。
通过以上综合措施,可以显著提高Nginx服务器的防御能力,并建立有效的监控机制,及时发现和应对安全威胁。