ホームページ  >  記事  >  システムチュートリアル  >  回避モジュールは、アプリケーション層の DOS 攻撃から Web サイトを保護します。

回避モジュールは、アプリケーション層の DOS 攻撃から Web サイトを保護します。

WBOY
WBOY転載
2024-04-30 17:34:14827ブラウズ

Web サイトをオフラインにする可能性のある攻撃方法は多数あり、より複雑な方法ではデータベースとプログラミングの技術的な知識が必要です。より単純な方法は、「Denial Of Service」(DOS) 攻撃として知られています。この攻撃手法の名前は、一般の顧客や Web サイト訪問者からの通常のサービス要求を拒否させるという目的に由来しています。

evasive 模块保护您的网站免受应用层 DOS 攻击

一般に、DOS 攻撃には 2 つの形式があります:

    OSI モデルの 3 番目と 4 番目の層、つまりネットワーク層攻撃
  1. OSI モデルの 7 層、つまりアプリケーション層攻撃
DOS 攻撃の最初のタイプであるネットワーク層は、大量のジャンク トラフィックが Web サーバーに流れるときに発生します。スパム トラフィックがネットワークの処理能力を超えると、Web サイトがダウンします。

2 番目のタイプの DOS 攻撃はアプリケーション層で行われ、ジャンク トラフィックではなく正規のサービス リクエストを悪用します。ページリクエストの数が Web サーバーの容量を超えると、正規の訪問者であっても Web サイトを使用できなくなります。

この記事では、アプリケーション層の攻撃を軽減することに焦点を当てます。ネットワーク層の攻撃を軽減するには、大量の利用可能な帯域幅と上流のプロバイダーの協力が必要ですが、ネットワーク サーバーの構成では通常は不可能です。

通常の Web サーバーを構成することで、Web ページをアプリケーション層の攻撃から少なくとも中程度まで保護できます。 Cloudflare

[1] が最近、ネットワーク層の攻撃の数が減少している一方、アプリケーション層の攻撃の数が増加していると [2] 報告したため、この形式の攻撃を防ぐことが重要です。

この記事では、zdziarski

[3]が開発したApache2モジュールmod_evasive[4]の使い方を紹介します。

さらに、mod_evasive は、何百ものユーザー名とパスワードの組み合わせを試す攻撃者の推測の試み (つまり、ブルート フォース攻撃) をブロックします。

mod_evasive は、各 IP アドレスからのリクエストの数をログに記録します。この数値が、対応する IP アドレスのいくつかのしきい値の 1 つを超えると、エラー ページが表示されます。エラー ページに必要なリソースは、正規のアクセスに応答できるオンライン Web サイトよりもはるかに少なくなります。

Ubuntu 16.04にmod_evasiveをインストールします

Ubuntu 16.04 のデフォルトのソフトウェア ライブラリには、「libapache2-mod-evasive」という名前の mod_evasive が含まれています。 apt-get を使用してインストールを完了できます:

リーリー

次に、mod_evasive を設定する必要があります。

その設定ファイルは /etc/apache2/mods-available/evasive.conf にあります。デフォルトでは、インストール後にすべてのモジュール設定がコメントアウトされます。したがって、構成ファイルが変更されるまで、モジュールは Web サイトのトラフィックに干渉しません。

リーリー

パラメータの最初の部分の意味は次のとおりです:

  • DOSHashTableSize - Web サイトにアクセスしている IP アドレスとそのリクエスト数の現在のリスト。
  • DOSPageCount - 特定の時間間隔内の各ページのリクエストの数。時間間隔は DOSPageInterval によって定義されます。
  • DOSPageInterval - mod_evasive はページリクエストの時間間隔をカウントします。
  • DOSSiteCount - DOSPageCountと同じですが、同じIPアドレスからサイト内の任意のページへのリクエストの数をカウントします。
  • DOSSiteInterval - mod_evasive は Web サイトリクエストの時間間隔をカウントします。
  • DOSBlockingPeriod - IP アドレスがブラックリストに登録されている秒数。

上記のデフォルト設定を使用すると、次の場合に IP アドレスがブラックリストに登録されます。

    同じページを 1 秒間に 2 回以上リクエストします。
  • 1 秒あたり 50 を超える異なるページをリクエストします。
IP アドレスがこれらのしきい値を超えると、10 秒間ブラックリストに登録されます。

これは長い時間ではないように思えるかもしれませんが、mod_evasive は常にブラックリストに登録された IP アドレスのページリクエストを監視し、ブラックリストの開始時刻をリセットします。 IP アドレスが Web サイトへの DOS 試行を続ける限り、その IP アドレスは常にブラックリストに掲載されます。

残りのパラメータは次のとおりです:

  • DOSEmailNotify - DOS 攻撃情報と IP アドレスのブラックリストを受信するための電子メール アドレス。
  • DOSSystemCommand - DOS 攻撃が検出されたときに実行するコマンド。
  • DOSLogDir - mod_evasive の一時ファイルを保存するために使用されるディレクトリ。
mod_evasiveを設定する

默认的配置是一个很好的开始,因为它不会阻塞任何合法的用户。取消配置文件中的所有参数(DOSSystemCommand 除外)的注释,如下所示:

<IfModule mod_evasive20.c>
   DOSHashTableSize   3097
   DOSPageCount       2
   DOSSiteCount       50
   DOSPageInterval    1
   DOSSiteInterval    1
   DOSBlockingPeriod  10

   DOSEmailNotify       JohnW@example.com
   #DOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"
   DOSLogDir            "/var/log/mod_evasive"
</IfModule>

必须要创建日志目录并且要赋予其与 apache 进程相同的所有者。这里创建的目录是 /var/log/mod_evasive ,并且在 Ubuntu 上将该目录的所有者和组设置为 www-data ,与 Apache 服务器相同:

mkdir /var/log/mod_evasive
chown www-data:www-data /var/log/mod_evasive

在编辑了 Apache 的配置之后,特别是在正在运行的网站上,在重新启动或重新加载之前,最好检查一下语法,因为语法错误将影响 Apache 的启动从而使网站宕机。

Apache 包含一个辅助命令,是一个配置语法检查器。只需运行以下命令来检查您的语法:

apachectl configtest

如果您的配置是正确的,会得到如下结果:

Syntax OK

但是,如果出现问题,您会被告知在哪部分发生了什么错误,例如:

AH00526: Syntax error on line 6 of /etc/apache2/mods-enabled/evasive.conf:
DOSSiteInterval takes one argument, Set site interval
Action 'configtest' failed.
The Apache error log may have more information.

如果您的配置通过了 configtest 的测试,那么这个模块可以安全地被启用并且 Apache 可以重新加载:

a2enmod evasive
systemctl reload apache2.service

mod_evasive 现在已配置好并正在运行了。

测试

为了测试 mod_evasive,我们只需要向服务器提出足够的网页访问请求,以使其超出阈值,并记录来自 Apache 的响应代码。

一个正常并成功的页面请求将收到如下响应:

HTTP/1.1 200 OK

但是,被 mod_evasive 拒绝的将返回以下内容:

HTTP/1.1 403 Forbidden

以下脚本会尽可能迅速地向本地主机(127.0.0.1,localhost)的 80 端口发送 HTTP 请求,并打印出每个请求的响应代码。

你所要做的就是把下面的 bash 脚本复制到一个文件中,例如 mod_evasive_test.sh

#!/bin/bash
set -e

for i in {1..50}; do
        curl -s -I 127.0.0.1 | head -n 1
done

这个脚本的部分含义如下:

  • curl - 这是一个发出网络请求的命令。
    • -s - 隐藏进度表。
    • -I - 仅显示响应头部信息。
  • head - 打印文件的第一部分。
    • -n 1 - 只显示第一行。

然后赋予其执行权限:

chmod 755 mod_evasive_test.sh

在启用 mod_evasive 之前,脚本运行时,将会看到 50 行 “HTTP / 1.1 200 OK” 的返回值。

但是,启用 mod_evasive 后,您将看到以下内容:

HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
...

前两个请求被允许,但是在同一秒内第三个请求发出时,mod_evasive 拒绝了任何进一步的请求。您还将收到一封电子邮件(邮件地址在选项 DOSEmailNotify 中设置),通知您有 DOS 攻击被检测到。

mod_evasive 现在已经在保护您的网站啦!


以上が回避モジュールは、アプリケーション層の DOS 攻撃から Web サイトを保護します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlinuxprobe.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。