如何通过加固防止对 Nginx 的 DDoS 攻击
如何在nginx上防止ddos攻击
如何在 Nginx 上防止 ddos 攻擊,學習如何使用 Nginx 網頁服務器阻擋某些 DDoS 攻擊,使用此 nginx ddos 保護配置,這將有助於您的伺服器防止和阻擋某些常見的 DDoS 攻擊,使用 Nginx 配置和加固,您可以在您的伺服器上阻擋某些攻擊。Alexhost 提供免費的反 DDoS保護,您可以使用我們的VPS 伺服器或專用伺服器,我們提供免費的反 DDoS 保護,但是緩解能力、方法、過濾將根據您選擇的位置而有所不同。
要求:Nginx(需要在当前服务器上安装 Nginx)一定的知识(需要知道如何使用 Linux 的基本命令以及如何访问一些 Nginx 文件,诀窍是必需的)VPS 服务器或专用服务器(可以使用本地主机上的虚拟机)DDoS 保护(需要从托管提供商处获得,以便能够缓解更复杂的 DDoS 攻击)Linux(可以安装 Nginx 的任何发行版)Nginx(可能需要阅读他们的 Nginx 文档,以便测试和检查是否仍然可靠)限制:本教程并非 “刀枪不入 “地抵御所有 DDoS 攻击,但可以通过阻止某些类型的常见攻击来限制攻击,并帮助你的服务器保持在线。针对某些 DDoS 攻击会有一些限制,您需要您的主机提供商提供某种 DDoS 保护,以便阻止和预防,此配置不能防止针对您服务器的所有攻击。此配置可以防止和阻止某些攻击,但在没有主机提供 DDoS 保护的情况下,无法阻止所有攻击。警告: Alexhost 不建議您在生產服務器上使用此配置,我們建議您在做任何事情之前先測試一下。Alexhost 不對任何可能產生的問題負責。确保服务器安全,在实施任何操作之前备份所有内容,以防需要恢复。请阅读DDoS 保护的 Nginx 文档,了解其工作原理。
通过加固Nginx防止DDoS攻击
配置Nginx的DDoS保护和加固常见的攻击层涉及实施各种策略来减轻和防止攻击。以下指南介绍如何配置 Nginx 以增强安全性,并学习如何通过加固网络服务器来防止对 Nginx 的 DDoS 攻击:
- 更新 Nginx:确保使用最新稳定版本的Nginx,以受益于最新的安全补丁和改进。
- 限制连接:使用 limit_conn 模块限制来自单个 IP 地址的连接数。这有助于防止 DDoS 攻击通过过多的同时连接压垮服务器。
http { limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s; server { limit_req zone=req_limit_per_ip burst=5; # Other server configurations... } }
#白名单/黑名单 IP:nginx
http { # Whitelist trusted IP addresses allow 192.168.1.0/24; deny all; # Other server configurations... }
实施 Web 应用程序防火墙 (WAF):利用第三方模块(如 Nginx 的 ModSecurity)检测并阻止恶意 HTTP 流量。启用 HTTPS:使用 HTTPS 加密客户端与服务器之间的通信,防止数据被截取和中间人攻击。禁用未使用的模块:禁用不必要的 Nginx 模块,以减少攻击面并提高性能。
- 调整 Nginx 配置:根据服务器硬件能力和预期流量优化 Nginx 配置参数,如工作进程、工作连接和超时。
- 监控和日志记录:定期监控服务器日志中的可疑活动,并设置警报系统,通知管理员潜在的攻击。
- 实施 DDOS 防护服务:考虑在 Nginx 前使用专门的 DDoS 保护服务或设备,如 Cloudflare、AWS Shield 或 Akamai。
- 定期备份:确保定期备份关键数据,最大限度地减少攻击成功造成的影响。
请记住,安全是一个持续的过程,不断更新最新的安全实践和威胁对有效保护服务器免受潜在攻击至关重要。
Nginx ddos 保护配置:
定义一个区域来跟踪来自每个 IP 的连接
http { limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m; # Define a zone to track requests from each IP limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s; server { listen 80; server_name example.com; # Rate limit requests limit_req zone=req_limit_per_ip burst=20; # Limit maximum number of connections from a single IP limit_conn conn_limit_per_ip 20; # Deny requests with large request bodies to mitigate against some types of attacks client_body_buffer_size 1k; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k; # Enable Gzip compression to save bandwidth gzip on; gzip_comp_level 5; gzip_min_length 256; gzip_proxied any; gzip_vary on; # Add security headers to enhance security add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; add_header X-Frame-Options "SAMEORIGIN"; add_header Referrer-Policy "same-origin"; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # Block common vulnerable User-Agents if ($http_user_agent ~* (wget|curl) ) { return 403; } # Block access to hidden files location ~ /. { deny all; } # Block access to certain file types location ~* .(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(.php)?|xtmpl)$|^(..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|.php_ { deny all; return 403; } # Whitelist your IP for administrative access location /admin { allow your_admin_ip; deny all; } # Deny access to certain directories location ~ /(system|vendor) { deny all; return 403; } # Proxy pass requests to your application server location / { proxy_pass http://your_backend_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
##
此配置的作用如下:
- 速率限制:将来自每个 IP 地址的请求数限制为每秒 10 个请求,突发请求数为 20 个。
- 连接限制:将来自每个 IP 地址的最大连接数限制为 20。
- 请求体大小限制:限制请求体的大小,以防止发送大请求体的攻击。
- Gzip 压缩:启用 gzip 压缩以节省带宽。
- 安全标头:添加安全标头以增强安全性。
- 阻止易受攻击的用户代理:阻止来自常见易受攻击用户代理的请求。
- 阻止隐藏文件阻止访问隐藏文件和目录。
- 白名单管理访问:只允许从您的 IP 地址访问管理区。
- 拒绝访问某些目录:阻止对系统和供应商等敏感目录的访问。
- 代理通行证:将请求转发到应用服务器。
确保根据您的具体要求(如域名、后端服务器地址和管理 IP 地址)自定义配置。此外,定期监控服务器日志,并根据需要调整配置,以适应不断变化的威胁。 提供的配置可添加到nginx.conf文件中,也可包含在单独的配置文件中。以下是添加配置的分步指南:
- 找到 nginx.conf 文件:根据Nginx安装情况,nginx.conf文件可能位于不同目录。常见位置包括/etc/nginx/nginx.conf、/usr/local/nginx/conf/nginx.conf或/etc/nginx/sites-available/default。
- 打开 nginx.conf 文件:可以使用文本编辑器或命令行文本编辑器(如 nano、vim 或 emacs)打开文件。
- 在 http 块中添加配置 :在定义 HTTP 服务器设置的 http 块中,添加所提供的配置。通常,http块位于nginx.conf文件顶部附近。
- 粘贴提供的配置:将之前提供的全部配置粘贴到http块中。确保用实际值替换example.com、your_admin_ip和your_backend_server等占位值。
- 保存并退出文件:添加配置后,保存nginx.conf文件并退出文本编辑器。
- 测试Nginx配置:在重启Nginx之前,最好测试配置是否有语法错误。
- 可以运行以下命令:。
nginx -t
如果没有语法错误,你将看到一条信息,表明配置文件测试成功。重启Nginx:最后,重启Nginx以应用更改。可以使用以下命令:
sudo service nginx restart- 如果你使用的系统没有systemd,你可以使用不同的命令重启Nginx。
按照以上步骤,你将在Nginx服务器上添加所提供的配置,通过DDoS保护和其他安全措施来增强其安全性,本教程将帮助你如何通过配置Nginx来防止对nginx的DDoS攻击。

