Ubuntu中Nginx安全设置有哪些
导读:Ubuntu中Nginx安全设置指南 1. 隐藏Nginx版本信息与定制错误页面 隐藏版本号:编辑/etc/nginx/nginx.conf,在http块中添加server_tokens off;,彻底移除HTTP响应头中的Nginx版本...
Ubuntu中Nginx安全设置指南
1. 隐藏Nginx版本信息与定制错误页面
- 隐藏版本号:编辑
/etc/nginx/nginx.conf,在http块中添加server_tokens off;,彻底移除HTTP响应头中的Nginx版本及操作系统信息,避免攻击者利用版本漏洞进行针对性攻击。 - 自定义错误页面:在
server块中配置统一错误处理,例如error_page 404 500 502 503 504 /error.html;,并通过location = /error.html { internal; root /var/www/secure-errors; }禁止直接访问错误页面,防止泄露服务器内部路径和配置细节。
2. 访问控制与请求限制
- 限制HTTP方法:在
server或location块中添加if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; },拒绝PUT、DELETE等非常规HTTP方法,阻断异常请求。 - 限制连接与请求频率:
- 使用
limit_conn_zone和limit_conn限制单个IP的并发连接数,例如http { limit_conn_zone $binary_remote_addr zone=ops:10m; server { location / { limit_conn ops 1; } } }(每个IP最多1个连接)。 - 使用
limit_req_zone和limit_req限制请求速率,例如http { limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; server { location / { limit_req zone=mylimit burst=5 nodelay; } } }(每秒1个请求,突发5个)。
- 使用
- 过滤IP访问:通过
allow/deny指令限制特定IP访问敏感路径,例如location /admin { allow 192.168.1.100; deny all; }。
3. SSL/TLS加密配置
- 启用HTTPS:使用Certbot获取Let’s Encrypt免费证书,命令为
sudo apt install certbot python3-certbot-nginx & & sudo certbot --nginx -d yourdomain.com,自动配置Nginx的443端口SSL监听。 - 优化SSL参数:在
server块中配置现代加密套件,例如ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_stapling on;,禁用不安全的TLS 1.0/1.1,启用OCSP装订提升验证效率。 - 强制HTTPS:添加
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;,强制浏览器使用HTTPS,预防SSL剥离攻击。
4. 系统基础安全加固
- 安装安全工具:安装UFW防火墙(
sudo apt install ufw)和Fail2Ban(sudo apt install fail2ban),前者用于控制端口访问,后者用于防范暴力破解。 - 配置防火墙规则:允许必要端口(SSH、HTTP、HTTPS),例如
sudo ufw allow 22/tcp(修改为非标准端口更安全)、sudo ufw allow 80/tcp、sudo ufw allow 443/tcp,然后启用防火墙sudo ufw enable。 - 系统与软件更新:定期更新系统和Nginx及其依赖库,例如
sudo apt update & & sudo apt upgrade -y,启用自动更新(sudo apt install unattended-upgrades)以快速修复安全漏洞。
5. 日志管理与监控
- 配置详细日志:自定义
access_log和error_log格式,例如log_format security '$remote_addr - $http_x_forwarded_for - $time_iso8601 "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_time'; access_log /var/log/nginx/security.log security; error_log /var/log/nginx/error.log crit;,记录IP、请求时间、响应时间等信息,便于后续分析攻击模式。 - 实时入侵检测:通过Fail2Ban关联Nginx日志,例如在
/etc/fail2ban/jail.local中添加[nginx-badbots] enabled = true filter = nginx-badbots logpath = /var/log/nginx/security.log maxretry = 2 bantime = 86400,自动屏蔽频繁发起恶意请求的IP。
6. 高级安全头部设置
- 添加安全头部:在
server块中配置以下头部,提升浏览器端的安全防护:add_header X-Frame-Options "SAMEORIGIN";(防止点击劫持,允许同源iframe嵌入);add_header Referrer-Policy "strict-origin";(限制Referer信息泄露,仅发送同源URL);add_header X-Content-Type-Options "nosniff";(防止MIME类型嗅探攻击)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu中Nginx安全设置有哪些
本文地址: https://pptw.com/jishu/742604.html
