centos上nginx安全设置有哪些
导读:CentOS上Nginx安全设置关键措施 1. 基础安全防护 隐藏Nginx版本信息:在http或server块中添加server_tokens off;,避免响应头中泄露Nginx版本(如Server: nginx/1.25.3),减少...
CentOS上Nginx安全设置关键措施
1. 基础安全防护
- 隐藏Nginx版本信息:在
http或server块中添加server_tokens off;,避免响应头中泄露Nginx版本(如Server: nginx/1.25.3),减少针对性攻击风险。可通过curl -I http://localhost验证,响应头中无版本信息。 - 禁用危险HTTP方法:通过
if语句限制非必要请求方法(如TRACE、PUT、DELETE),防止恶意利用。例如全局禁止非GET、POST方法:if ($request_method !~ ^(GET|POST)$) { return 403; };或在location块中针对特定路径(如/admin)限制。 - 权限与用户管理:以非root用户(如
nginx)运行Nginx进程(user nginx;),降低权限提升风险;设置配置文件权限为640(chmod 640 /etc/nginx/nginx.conf),目录权限为755(chmod -R 755 /var/www),避免未授权访问。
2. 访问控制策略
- 基于IP的限制:使用
allow/deny指令限制敏感路径或全站的IP访问。例如,仅允许内部网段访问/admin:location /admin { allow 192.168.1.0/24; deny all; };或通过geo模块实现动态IP黑名单(如/etc/nginx/conf.d/blockips.conf中定义黑名单,if ($block_ip) { return 403; })。 - 基本身份验证:对敏感路径(如
/protected)启用用户名密码验证。步骤:用htpasswd创建密码文件(sudo htpasswd -c /etc/nginx/.htpasswd username);在Nginx配置中添加auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd;。 - 防盗链配置:防止其他站点盗用静态资源(如图片、CSS)。通过
valid_referers指令限制来源,例如:location ~* \.(jpg|gif|png)$ { valid_referers none blocked your-domain.com; if ($invalid_referer) { return 403; } }。
3. HTTPS与加密配置
- 强制HTTPS跳转:配置HTTP监听80端口并重定向到HTTPS,确保所有流量加密。例如:
server { listen 80; server_name your-domain.com; return 301 https://$host$request_uri; }。 - SSL/TLS加固:启用TLS 1.2及以上安全协议(禁用SSLv2/SSLv3),配置强加密套件(如
EECDH+AESGCM:EDH+AESGCM),启用HSTS(HTTP Strict Transport Security)强制浏览器使用HTTPS。示例:ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH; ssl_prefer_server_ciphers on; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; " always;。 - 证书管理:使用Let’s Encrypt免费证书(通过
certbot工具自动化申请)或商业证书,确保证书未过期且在有效期内。
4. 高级安全防护
- 安全HTTP头设置:添加响应头防御常见Web攻击。例如:
X-Frame-Options "SAMEORIGIN"(防止点击劫持)、X-XSS-Protection "1; mode=block"(启用浏览器XSS过滤)、Content-Security-Policy "default-src 'self'"(限制资源加载来源)、X-Content-Type-Options "nosniff"(防止MIME类型嗅探)。 - 请求速率限制:使用
limit_req模块限制请求速率,防御CC攻击。例如,全局设置速率限制(http { limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s; }),在server块中应用(limit_req zone=req_limit burst=20 nodelay;),允许每秒10个请求,突发20个请求排队。 - 目录与文件防护:禁用自动目录索引(
autoindex off;),防止暴露目录结构;限制敏感文件访问(如.conf、.log、.bak),例如:location ~* \.(conf|log|bak)$ { deny all; }。
5. 系统与运维安全
- 防火墙配置:使用
firewalld限制仅开放必要端口(80、443),阻止非法访问。例如:sudo firewall-cmd --permanent --zone=public --add-service=http; sudo firewall-cmd --permanent --zone=public --add-service=https; sudo firewall-cmd --reload。 - 日志与监控:开启详细访问日志(
access_log /var/log/nginx/access.log;)和错误日志(error_log /var/log/nginx/error.log;),定期分析日志(如用grep查找403、500错误),及时发现异常行为。 - 定期更新与漏洞管理:定期更新Nginx及依赖库(
sudo yum update nginx -y),修复已知漏洞;通过nginx -V检查编译参数,移除未使用的高危模块(如http_rewrite_module)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos上nginx安全设置有哪些
本文地址: https://pptw.com/jishu/747316.html
