Nginx 是一款高性能的 Web 服务器和反向代理服务器,广泛应用于各种规模的网络应用中。然而,默认配置下的 Nginx 存在诸多安全隐患。本文将详细介绍如何在 CentOS 系统上对 Nginx 进行安全配置,以提升其安全性,防止常见的攻击方式,如 DDoS 攻击、SQL 注入等。
默认情况下,Nginx 会在响应头中显示其版本号,这可能会被攻击者利用以寻找特定版本的漏洞。通过关闭版本显示,可以减少潜在的安全风险。
server_tokens off;
添加安全相关的 HTTP 响应头,可以有效防御常见的 Web 攻击,如点击劫持、XSS 攻击等。
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'";
通过限制每个 IP 的连接数和请求频率,可以防止 DDoS 攻击。
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 100;
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;
limit_req zone=req_zone burst=20 nodelay;
对于管理后台等敏感区域,建议配置 IP 白名单,只允许特定 IP 段访问。
location /admin/ {
allow 192.168.1.0/24;
deny all;
}
使用 SSL/TLS 证书加密数据传输,确保数据在传输过程中不被窃取。
listen 443 ssl;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
禁用不必要的 Nginx 模块和功能,可以减少潜在的安全漏洞。例如,禁用 http_rewrite_module
和 http_sub_module
。
unload_module modules/http_rewrite_module.so;
unload_module modules/http_sub_module.so;
通过配置 location
块和 deny all
指令,防止外部用户访问敏感资源,如 .htaccess
文件或 .git
目录。
location ~ /\.git {
deny all;
}
location ~ /\.ht {
deny all;
}
在敏感路径上启用基本认证,要求用户提供用户名和密码才能访问。
location /admin/ {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
}
使用 Nginx 自带的状态模块和第三方工具(如 Prometheus、Grafana)实时监控服务器的各项性能指标,如连接数、请求数和处理状态。
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
启用详细的访问日志和错误日志,并定期分析日志文件,以便及时发现并解决潜在问题。
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
定期备份 Nginx 配置文件,确保在出现问题时能够快速恢复。
cp /etc/nginx/nginx.conf /etc/nginx/backup/nginx.conf.`date +%Y%m%d`
使用工具如 AIDE 定期检查配置文件的完整性,确保没有被恶意篡改。
aide --init
aide --check
在正式应用新配置之前,先在测试环境中进行充分验证,确保新配置不会影响服务器性能,并且所有功能正常工作。
scp /etc/nginx/nginx.conf user@test-server:/etc/nginx/
ssh user@test-server "nginx -s reload"
通过以上步骤,您可以显著提升 CentOS 上 Nginx 服务器的安全性。确保遵循这些配置建议,可以有效防止多种常见的网络攻击,保护您的网站和应用程序。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:centos如何搭建lnmp环境