如何在Ubuntu 16.04上使用服务质量(QoS)模块保护Apache服务器免受DoS攻击(拒绝服务)攻击

本文概述

  • 1.安装mod_qos模块
  • 2.配置模块
如果服务器配置不正确或根本不希望发生此类攻击, 则可以对服务器执行许多攻击。 Slowloris攻击是最著名且最容易实现的攻击之一。设计该算法的目的是使一台计算机(由于Windows限制了你在任何给定时间可以打开的套接字数量, 因此基于Linux / Unix的计算机)可以通过锁定所有Web线程或代理服务器来轻松捆绑典型的Web服务器或代理服务器。耐心等待更多数据。
某些服务器对超时的容忍度可能比其他服务器小, 这完全取决于你的配置, 但是算法可以通过自定义超时来弥补这一点。这种攻击根本不会消耗很多资源或带宽。负载影响很小, 但是http(s)服务退出的速度非常快。 mod_qos为你提供了一些机会, 可以根据带宽限制扩展服务器上已使用的连接数, 以保护其免受攻击。该软件包可在Ubuntu存储库中找到, 因此在此环境下安装和配置应该非常容易。
在这篇简短的文章中, 我们将向你介绍如何在Ubuntu 16.04服务器中安装和配置apache的QoS模块。
1.安装mod_qos模块 第一步, 通过终端访问服务器, 更新存储库, 并使用以下命令安装模块:
# Update repossudo apt-get update# Install the apache extensionsudo apt-get install libapache2-mod-qos

安装模块后, 它将自动注册并启用自身。服务质量实现控制机制, 以为不同的用户, 应用程序和数据连接提供不同的优先级。它用于保证数据资源的一定水平的性能。服务质量一词通常用于广域网协议(例如ATM)和电话(例如VoIP)领域, 但很少与Web应用程序结合使用。 mod_qos是Apache Web服务器的服务质量模块, 实现了可为不同HTTP请求提供不同级别的优先级的控制机制。 Web应用程序需要QoS的示例情况:
  • 如果应用程序的请求处理需要很长时间, 例如消耗大量资源, 则会消耗更多资源。当请求处理包括耗时的数据库查询时。
  • 由于许多并发客户端上载或下载数据, 导致链接功能超额订购。
  • 攻击者对Web服务器的渗透(DoS)。
有关Apache的mod_qos模块的更多信息, 请在此处访问SourceForge的官方网站。
对于基于Plesk的服务器
通过命令行安装模块后, 模块会自动注册并激活自身, 因此, 如果你尝试访问基于Plesk的服务器上的apache设置, 则会在列表中看到扩展名:
如何在Ubuntu 16.04上使用服务质量(QoS)模块保护Apache服务器免受DoS攻击(拒绝服务)攻击

文章图片
因此, 你可以仅通过Plesk图形用户界面上的复选框来动态地启用/禁用它。
2.配置模块 安装模块将创建一个配置文件, 该文件存储在apache的mods-available目录中, 你可以使用nano快速编辑它, 方法是:
# Edit the qos.conf file with your favorite terminal editor, we'll use nanonano /etc/apache2/mods-available/qos.conf

这将在编辑器上打开模块的conf文件, 在这里你需要将其内容更改为以下内容, 根据需要优化和更改这些值:
【如何在Ubuntu 16.04上使用服务质量(QoS)模块保护Apache服务器免受DoS攻击(拒绝服务)攻击】简单地说, 我们正在做的是限制来自单个IP的同时入站连接的数量。这将自动阻止用户在同一设备/网络上同时创建多个x个请求(在QS_SrvMaxConnPerIP中指定)。只要真实人在同一服务器上的请求超过x个, 只要他们的连接不能以Slowloris攻击的相同方式工作, 那么这根本不是问题, 因此, 如果你的应用程序可以从比在此属性中指定, 只要不是慢速HTTP请求, 他们就可以访问它。太好了!!
< IfModule qos_module> # handle connections from up to 100000 different IPsQS_ClientEntries 100000# allow only 50 connections per IPQS_SrvMaxConnPerIP 50# limit maximum number of active TCP connections limited to 256MaxClients 256# disables keep-alive when 180 (70%) TCP connections are occupiedQS_SrvMaxConnClose 180# minimum request/response speed # (deny slow clients blocking the server, keeping connections open without requesting anythingQS_SrvMinDataRate 150 1200< /IfModule>

这些可能需要根据服务器的特性进行调整, 例如MaxClients可能需要是ThreadsPerChild的整数倍。 Apache 2.4不允许mod_qos设置QS_SrvMinDataRate。在单独的包含文件或主Apache配置文件中, 将这些或类似设置添加到Apache配置中。重新启动服务器, 并验证此方法是否可以缓解Slowloris攻击。
将更改保存到文件, 然后使用以下命令重新启动apache:
sudo service apache2 restart

现在, 应该启用扩展并使用给定的设置。但是, 我该如何测试它有效!首先, 你的网站应该可以在浏览器中访问, 如果可以运行, 则说明配置已经正确设置。对于功能齐全的测试, 建议你使用任何工具对配置的服务器进行慢速HTTP攻击, 我们编写了一篇非常有趣的教程, 介绍了如何在Kali Linux中使用SlowHTTPTest在服务器上运行此攻击, 并且可以在这里找到它。
编码愉快!

    推荐阅读