以下是为Nginx服务器进行安全更新和维护的详细建议,涵盖补丁管理、配置加固和监控等方面:
订阅安全公告
升级步骤
# 查看当前版本
nginx -v
# Ubuntu/Debian
sudo apt update && sudo apt upgrade nginx
# CentOS/RHEL
sudo yum update nginx
# 源码升级(推荐稳定版)
wget http://nginx.org/download/nginx-1.25.3.tar.gz
tar -xzvf nginx-1.25.3.tar.gz
cd nginx-1.25.3
./configure --with-http_ssl_module --with-http_v2_module
make && sudo make install
禁用不安全协议/算法
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
限制敏感信息泄露
server_tokens off; # 隐藏Nginx版本号
proxy_hide_header X-Powered-By;
访问控制
location /admin {
allow 192.168.1.0/24;
deny all;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
防常见攻击
# 防DDoS(限制请求速率)
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
# 防目录遍历
location ~* \.(env|log|conf)$ {
deny all;
}
禁用无用模块
--without-http_autoindex_module
)nginx -V
推荐安全模块
文件权限控制
chown -R root:nginx /etc/nginx/
chmod 750 /etc/nginx/
chmod 640 /etc/nginx/conf.d/*.conf
SELinux策略
# 为Nginx配置默认安全上下文
chcon -Rt httpd_config_t /etc/nginx/
防火墙规则
# 仅开放必要端口(如80/443)
sudo ufw allow 443/tcp
sudo ufw deny 22 # 若无需SSH
日志分析
/var/log/nginx/access.log
中的异常请求(如大量4xx/5xx)定期扫描
# 使用OpenVAS或Nessus进行漏洞扫描
nessuscli scan --target nginx-server --policy "Web Application Tests"
自动化更新
bash
# Ubuntu
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
备份配置
sudo cp -r /etc/nginx /etc/nginx_backup_$(date +%F)
快速回滚命令
sudo systemctl stop nginx
sudo rm -rf /etc/nginx && cp -r /etc/nginx_backup /etc/nginx
sudo systemctl start nginx
通过以上措施,可显著降低Nginx面临的安全风险。建议每季度至少进行一次全面安全审查。