插件窝 干货文章 Nginx基础安全:防止HTTP扫描和暴力破解攻击

Nginx基础安全:防止HTTP扫描和暴力破解攻击

Nginx 其他 server 配置 935    来源:    2025-04-20

Nginx基础安全:防止HTTP扫描和暴力破解攻击

1. 限制请求速率

防止暴力破解的最基本方法是限制请求速率:

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

    server {
        location /login {
            limit_req zone=one burst=20 nodelay;
            # 其他配置...
        }
    }
}

2. 限制连接数

防止单个IP建立过多连接:

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    server {
        limit_conn addr 10;
        # 其他配置...
    }
}

3. 阻止常见扫描工具

阻止已知的扫描工具User-Agent:

server {
    if ($http_user_agent ~* (nmap|nikto|wikto|sf|sqlmap|bsqlbf|w3af|acunetix|havij|appscan)) {
        return 403;
    }
    # 其他配置...
}

4. 隐藏服务器信息

减少信息泄露:

server {
    server_tokens off;
    more_set_headers 'Server: Unknown';
    # 其他配置...
}

5. 防止目录遍历

server {
    location ~* \.(env|log|htaccess)$ {
        deny all;
    }

    location ~ /\. {
        deny all;
    }
    # 其他配置...
}

6. 基础认证保护敏感路径

server {
    location /admin {
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;
        # 其他配置...
    }
}

7. 阻止非法HTTP方法

server {
    if ($request_method !~ ^(GET|HEAD|POST)$ ) {
        return 405;
    }
    # 其他配置...
}

8. 使用fail2ban增强防护

结合fail2ban可以更有效地阻止攻击者:

  1. 安装fail2ban
  2. 创建Nginx相关规则,例如针对多次401错误的IP

9. 限制特定文件类型的访问

server {
    location ~* \.(php|asp|aspx|jsp|pl|sh|py|exe)$ {
        deny all;
    }
    # 其他配置...
}

10. 使用ModSecurity WAF

对于更高级的保护,可以考虑安装ModSecurity:

load_module modules/ngx_http_modsecurity_module.so;

http {
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsec/main.conf;
    # 其他配置...
}

最佳实践建议

  1. 定期更新Nginx到最新稳定版本
  2. 禁用不必要的模块
  3. 使用最小权限原则运行Nginx工作进程
  4. 定期审查日志文件
  5. 考虑使用Cloudflare或其他CDN/WAF服务提供额外保护层

这些措施可以显著提高Nginx服务器的安全性,但应根据实际业务需求进行调整和测试。