插件窝 干货文章 Nginx的Web安全攻防实战

Nginx的Web安全攻防实战

Nginx server 攻击 防御 429    来源:    2025-04-20

Nginx Web安全攻防实战指南

一、Nginx基础安全配置

1. 隐藏Nginx版本信息

server_tokens off;

2. 限制HTTP方法

location / {
    limit_except GET POST {
        deny all;
    }
}

3. 禁用不必要的HTTP头

more_clear_headers 'Server';
more_clear_headers 'X-Powered-By';

二、常见攻击防御

1. SQL注入防御

# 拦截常见SQL注入特征
set $block_sql_injections 0;
if ($query_string ~ "union.*select.*\(") {
    set $block_sql_injections 1;
}
if ($block_sql_injections = 1) {
    return 403;
}

2. XSS攻击防御

# 添加XSS防护头
add_header X-XSS-Protection "1; mode=block";

3. CSRF防护

# 只允许同源请求
add_header X-Frame-Options SAMEORIGIN;

三、DDoS防护

1. 限制连接速率

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

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

2. 限制并发连接数

limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    location / {
        limit_conn addr 10;
    }
}

四、HTTPS安全配置

1. 强制HTTPS

server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

2. 安全SSL配置

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384...';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;

五、WAF功能实现

1. 基础WAF规则

# 阻止常见攻击特征
location / {
    if ($http_user_agent ~* (nmap|nikto|wget|curl|libwww-perl)) {
        return 403;
    }
    if ($args ~* "\.\./") {
        return 403;
    }
    if ($request_uri ~* "(eval\()") {
        return 403;
    }
}

2. 使用ModSecurity

modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;

六、日志与监控

1. 详细访问日志

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

2. 异常请求监控

map $status $loggable {
    ~^[23]  0;
    default 1;
}

access_log /var/log/nginx/security.log security if=$loggable;

七、实战攻防技巧

攻击检测

  1. 检查异常User-Agent
  2. 监控高频404请求
  3. 分析异常HTTP方法使用

防御策略

  1. 实施IP黑名单
deny 192.168.1.1;
  1. 使用GeoIP限制地区访问
geo $blocked_country {
    default 0;
    CN 1;
    RU 1;
}

server {
    if ($blocked_country) {
        return 403;
    }
}
  1. 动态封禁恶意IP
# 结合fail2ban使用

八、应急响应

  1. 快速封禁IP
iptables -A INPUT -s 攻击IP -j DROP
  1. 分析攻击日志
grep "攻击特征" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr
  1. 临时限制访问
location / {
    allow 信任IP;
    deny all;
}

通过以上配置和策略,可以显著提升Nginx服务器的安全性,有效防御常见的Web攻击。实际部署时应根据业务需求调整安全策略,并定期更新规则以应对新型攻击手段。