插件窝 干货文章 Nginx安全部署:从服务器配置开始

Nginx安全部署:从服务器配置开始

配置 Nginx 安全 HTTP 339    来源:    2025-04-20

Nginx安全部署:从服务器配置开始

一、基础服务器安全配置

1. 操作系统加固

  • 最小化安装:仅安装必要的软件包
  • 定期更新yum updateapt-get update && apt-get upgrade
  • 禁用root SSH登录PermitRootLogin no
  • 使用SSH密钥认证PasswordAuthentication no

2. 用户权限管理

  • 为Nginx创建专用用户: bash useradd -r -s /sbin/nologin nginx
  • 确保Nginx以非root用户运行: user nginx;

二、Nginx基本安全配置

1. 隐藏Nginx版本信息

server_tokens off;

2. 禁用不必要的HTTP方法

if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 405;
}

3. 限制HTTP协议版本

# 只允许HTTP/1.1和HTTP/2
if ($server_protocol !~* "HTTP/1.1|HTTP/2.0") {
    return 444;
}

三、SSL/TLS安全配置

1. 使用强加密套件

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384...';
ssl_prefer_server_ciphers on;

2. 启用HSTS

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";

3. OCSP Stapling配置

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

四、访问控制与防护

1. 限制访问频率

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

location / {
    limit_req zone=one burst=20;
}

2. 防止目录遍历

location ~ /\. {
    deny all;
}

3. 文件上传限制

client_max_body_size 10m;
client_body_buffer_size 128k;

五、日志与监控

1. 详细日志配置

log_format security '$remote_addr - $remote_user [$time_local] '
                   '"$request" $status $body_bytes_sent '
                   '"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/security.log security;

2. 实时监控配置

  • 使用Fail2Ban防止暴力破解
  • 配置Nginx与ELK集成进行日志分析

六、高级安全配置

1. Web应用防火墙(WAF)

  • 使用ModSecurity模块:

    load_module modules/ngx_http_modsecurity_module.so;
    
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsec/main.conf;
    

2. 防止点击劫持

add_header X-Frame-Options "SAMEORIGIN";

3. 内容安全策略(CSP)

add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.example.com;";

七、定期维护

  1. 证书续期:设置自动续期脚本
  2. 配置审计:定期检查Nginx配置
  3. 漏洞扫描:使用工具如Nessus定期扫描
  4. 备份策略:配置文件和应用数据定期备份

八、应急响应

  1. 准备Nginx快速关闭脚本: bash #!/bin/sh nginx -s stop
  2. 准备备用配置快速切换
  3. 建立安全事件响应流程

通过以上步骤,您可以建立一个相对安全的Nginx服务器环境。安全是一个持续的过程,需要定期审查和更新配置以应对新的威胁。