如何使用 Nginx 保护 DDoS 攻击

Linux命令 Edge插件网 1年前 (2023-11-11) 244次浏览 已收录 0个评论

在本指南中,我们将深入探讨如何利用 Nginx(一种强大的 Web 服务器和反向代理)作为抵御 DDoS 攻击的屏障。

如何使用 Nginx 保护 DDoS 攻击

DDoS 攻击的类型及其影响

DDoS 攻击有多种形式,每种类型都对缓解措施提出了独特的挑战。了解这些类型是基础:

  1. 容量攻击:这些旨在淹没网络和服务器资源,通常利用僵尸网络和放大技术。
  2. TCP/UDP 耗尽:攻击者耗尽连接资源,使服务不可用。
  3. 应用层攻击:这些针对应用程序漏洞,使 Web 服务器和应用程序不堪重负。
  4. 低速和慢速攻击:这些更微妙,旨在通过缓慢重载资源来逃避检测。

Nginx 作为抵御 DDoS 的盾牌

Nginx 以其处理高流量的效率而闻名,被证明是缓解 DDoS 攻击的宝贵资产。它作为强大的 Web 服务器和反向代理的角色允许管理传入流量,从而防止潜在的服务中断。

配置 Nginx 以进行 DDoS 防护

利用速率限制来控制传入请求

速率限制涉及控制传入请求的数量,并保护服务器免受突然激增的影响。让我们深入研究一下配置。

导航到 Nginx 的配置目录:

<span class="pln">nano </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln"><a href="https://www.edge66.com/edgetag/nginx" title="查看更多关于nginx的文章" target="_blank">nginx</a></span><span class="pun">/</span><span class="pln"><a href="https://www.edge66.com/edgetag/nginx" title="查看更多关于nginx的文章" target="_blank">nginx</a></span><span class="pun">.</span><span class="pln">conf</span>

在文件中的 HTTP 块下,包括以下内容:

<span class="pln">limit_req_zone $binary_remote_addr zone</span><span class="pun">=</span><span class="pln">mylimit</span><span class="pun">:</span><span class="lit">10m</span><span class="pln"> rate</span><span class="pun">=</span><span class="lit">10r</span><span class="pun">/</span><span class="pln">s</span><span class="pun">;</span><span class="pln">
server </span><span class="pun">{</span><span class="pln">
    location </span><span class="pun">/</span> <span class="pun">{</span><span class="pln">
        limit_req zone</span><span class="pun">=</span><span class="pln">mylimit burst</span><span class="pun">=</span><span class="lit">20</span><span class="pln"> nodelay</span><span class="pun">;</span>
    <span class="pun">}</span>
<span class="pun">}</span>

此代码段建立了一个名为“mylimit”的区域,该区域允许每秒 10 个请求,并立即突发 20 个请求。

实施访问控制列表 (ACL)

ACL 对于将 IP 列入白名单和黑名单至关重要,可以增强您的服务器免受潜在恶意来源的侵害。

导航到站点配置文件:

<span class="pln">cd </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln"><a href="https://www.edge66.com/edgetag/nginx" title="查看更多关于nginx的文章" target="_blank">nginx</a></span><span class="pun">/</span><span class="pln">sites</span><span class="pun">-</span><span class="pln">available</span><span class="pun">/</span>

编辑默认站点配置文件:

<span class="pln">sudo nano </span><span class="kwd">default</span>

包括以下 ACL 块:

<span class="pln">server </span><span class="pun">{</span><span class="pln">
    location </span><span class="pun">/</span> <span class="pun">{</span><span class="pln">
        deny </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">1.1</span><span class="pun">;</span><span class="pln">
        allow </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">1.0</span><span class="pun">/</span><span class="lit">24</span><span class="pun">;</span><span class="pln">
        deny all</span><span class="pun">;</span>
    <span class="pun">}</span>
<span class="pun">}</span>

此代码段拒绝特定 IP (192.168.1.1),允许范围 (192.168.1.0/24),并拒绝所有其他 IP。

利用 Nginx 缓冲来处理突发的流量高峰

Nginx 缓冲通过有效地存储和提供内容来帮助管理突然的流量激增。使用以下指令配置缓冲:

<span class="pln">location </span><span class="pun">/</span> <span class="pun">{</span><span class="pln">
    proxy_buffering on</span><span class="pun">;</span>
<span class="pun">}</span>

配置缓冲区大小和超时值以优化缓冲:

<span class="pln">proxy_buffer_size </span><span class="lit">128k</span><span class="pun">;</span><span class="pln">
proxy_buffers </span><span class="lit">4</span> <span class="lit">256k</span><span class="pun">;</span><span class="pln">
proxy_busy_buffers_size </span><span class="lit">256k</span><span class="pun">;</span><span class="pln">
proxy_temp_file_write_size </span><span class="lit">256k</span><span class="pun">;</span><span class="pln">
proxy_read_timeout </span><span class="lit">300</span><span class="pun">;</span>

负载均衡和 DDoS 恢复能力

通过 Nginx 实现负载均衡允许在多个服务器之间分配流量,从而减轻 DDoS 攻击对单个服务器的影响。

<span class="pln">http </span><span class="pun">{</span><span class="pln">
    upstream backend </span><span class="pun">{</span><span class="pln">
        server backend1</span><span class="pun">.</span><span class="pln">example</span><span class="pun">.</span><span class="pln">com</span><span class="pun">;</span><span class="pln">
        server backend2</span><span class="pun">.</span><span class="pln">example</span><span class="pun">.</span><span class="pln">com</span><span class="pun">;</span>
        <span class="com"># Additional servers</span>
    <span class="pun">}</span><span class="pln">
    server </span><span class="pun">{</span><span class="pln">
        location </span><span class="pun">/</span> <span class="pun">{</span><span class="pln">
            proxy_pass http</span><span class="pun">:</span><span class="com">//backend;</span>
            <span class="com"># Additional configurations</span>
        <span class="pun">}</span>
    <span class="pun">}</span>
<span class="pun">}</span>

其他安全措施

Web 应用程序防火墙 (WAF) 集成

将 WAF 与 Nginx 集成可进一步增强防御能力。ModSecurity 等常用 WAF 增加了额外的安全层。

定期更新和维护

不断更新和微调配置,以领先于不断变化的威胁。定期维护是强大防御的关键。

压力测试和验证

使用压测工具模拟DDoS场景

要测试您的 Nginx 配置以抵御潜在的 DDoS 攻击,请考虑使用 Apache Bench (ab) 或 Siege 等工具。例如,您可以通过运行以下命令来使用 Apache Bench 模拟 DDoS 攻击

<span class="pln">ab </span><span class="pun">-</span><span class="pln">n </span><span class="lit">10000</span> <span class="pun">-</span><span class="pln">c </span><span class="lit">100</span><span class="pln"> http</span><span class="pun">:</span><span class="com">//yourwebsite.com/</span>

监控 Nginx 日志中的可疑活动

Nginx 日志是检测可疑活动的眼睛和耳朵。访问日志:

<span class="pln">sudo tail </span><span class="pun">-</span><span class="pln">f </span><span class="pun">/</span><span class="kwd">var</span><span class="pun">/</span><span class="pln">log</span><span class="pun">/</span><span class="pln"><a href="https://www.edge66.com/edgetag/nginx" title="查看更多关于nginx的文章" target="_blank">nginx</a></span><span class="pun">/</span><span class="pln">access</span><span class="pun">.</span><span class="pln">log</span>

缓解 DDoS 攻击是一个持续的过程,需要保持警惕和适应性。通过了解威胁态势、有效配置 Nginx 并实施最佳实践,您可以显著降低成为这些破坏性攻击受害者的风险。积极主动地监控和调整安全措施,以确保 Web 服务在不断发展的在线世界中具有弹性。保护您的基础设施是对在线业务的长期成功和可靠性的投资。


Edge插件网 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何使用 Nginx 保护 DDoS 攻击
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址