温馨提示×

ubuntu nginx如何防止攻击

小樊
44
2025-11-25 08:59:52
栏目: 网络安全

Ubuntu 上 Nginx 的安全加固与防攻击实践

一 基础防护与访问控制

  • 使用 UFW 限制暴露面,仅开放必要端口(如 22/80/443),并默认拒绝入站:sudo ufw default deny incoming;sudo ufw allow 22,80,443/tcp;sudo ufw enable。
  • 隐藏 Nginx 版本信息:在 /etc/nginx/nginx.confhttp 块中加入 server_tokens off;,减少信息泄露。
  • 限制可用 HTTP 方法:在 server 块中加入 if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; },对非法方法直接断开。
  • 配置合理 超时 与连接:client_body_timeout 12; client_header_timeout 12; keepalive_timeout 15; send_timeout 10;,降低慢速攻击与连接占用风险。
  • 启用 HTTPS 并自动续期:安装 Certbot(sudo apt install certbot python3-certbot-nginx),执行 sudo certbot --nginx -d yourdomain.com,获取并自动配置 Let’s Encrypt 证书。

二 速率限制与连接控制

  • http 块定义共享内存区与速率:limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;(按业务调整阈值)。
  • 在需要保护的 location 应用限流与突发:limit_req zone=mylimit burst=5 nodelay;,平滑处理短时高峰并阻断滥用。
  • 结合 连接数事件模型 控制资源:events { worker_connections 1024; use epoll; },避免进程/连接耗尽。
  • 针对异常访问模式(如高频 404/403/500、扫描特征)设置更严格的速率与封禁策略,联动 Fail2Ban 自动拉黑,减轻应用层压力。

三 日志监控与自动封禁

  • 实时查看与排查:tail -n 200 /var/log/nginx/access.log;tail -n 200 /var/log/nginx/error.log;grep “404|403|500” /var/log/nginx/access.log | tail -50
  • 部署 Fail2Ban:sudo apt-get install fail2ban;sudo systemctl enable --now fail2ban;在 /etc/fail2ban/jail.local 启用 [nginx] 监狱,设置 filter、logpath、maxretry、bantime、action(如 iptables-multiport),对恶意来源自动封禁。
  • 对扫描类与暴力路径访问,可配置更激进的策略(如 maxretry=1findtime=300、对多端口统一封禁),缩短攻击窗口。

四 Web 应用防火墙 WAF

  • 使用 ModSecurity-nginx + OWASP CRS:安装 ModSecurity 与连接器,重新编译 Nginx 加载模块;在 /etc/nginx/modsec/main.conf 中启用引擎并包含 CRS:SecRuleEngine On;SecRequestBodyAccess On;SecResponseBodyAccess On;Include /etc/nginx/modsec/coreruleset/crs-setup.conf;Include /etc/nginx/modsec/coreruleset/rules/*.conf;在 server 块加入 modsecurity on; modsecurity_rules_file /etc/nginx/modsec/main.conf;,重启 Nginx 生效。
  • 使用 NAXSI(Nginx Anti-XSS & SQLi):默认拒绝、按需放行,对 XSS/SQLi 等常见注入特征进行拦截,适合作为轻量 WAF 方案。

五 常见攻击特征与处置要点

  • 敏感文件与目录扫描:如 /.env、/.git/、/admin/、/phpmyadmin/、/solr/、/owncloud/ 等;应在 Nginx 配置中统一返回 403/444 并配合 Fail2Ban 快速封禁。
  • 恶意载荷与僵尸网络特征:如 wget 下载恶意样本、Mozi 等;通过日志特征识别并在 Fail2Ban 中设置低阈值即时拉黑。
  • 漏洞扫描与后台探测:如 /Telerik.Web.UI.WebResource.axd、/sitecore/… 等;结合 WAF 规则与速率限制降低风险。
  • 持续运营:定期更新系统与 Nginx(如 unattended-upgrades)、备份配置与证书、验证规则有效性(nginx -t)、分层防御(CDN/WAF/限流/防火墙)。

0