Ubuntu 24.04
Sponsored Link

Apache2 : mod_evasive を利用する2024/05/31

 

mod_evasive モジュールを有効にして、DoS アタック対策を設定します。

[1] mod_evasive をインストールして設定します。
root@www:~#
apt -y install libapache2-mod-evasive
root@www:~#
vi /etc/apache2/mods-available/evasive.conf
# 各行をコメント解除して設定

<IfModule mod_evasive20.c>
    # ハッシュテーブルサイズ : 値の大きさに応じてパフォーマンス向上 & メモリー消費増
    DOSHashTableSize    3097
    # 同一ページへの DOSPageInterval (以下で設定) 秒あたりのリクエスト数のしきい値
    DOSPageCount        2
    # 同一サイトの DOSSiteInterval (以下で設定) 秒あたりのリクエスト数のしきい値
    DOSSiteCount        50
    # DOSPageCount の間隔 (秒)
    DOSPageInterval     1
    # DOSSiteCount の間隔 (秒)
    DOSSiteInterval     1
    # リクエスト数がしきい値を超えた場合にアクセスをブロックする時間 (秒)
    DOSBlockingPeriod   10

    # 必要に応じてコメント解除して設定
    # ブロックした際に設定したメールアドレスへ通知
    #DOSEmailNotify      root@localhost
    # 任意の実行したいコマンドを設定可
    #DOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"
    # ログ保管ディレクトリ
    #DOSLogDir           "/var/log/mod_evasive"
</IfModule>

root@www:~#
mkdir /var/log/mod_evasive

root@www:~#
chown www-data:www-data /var/log/mod_evasive

root@www:~#
systemctl reload apache2

[2] Apache2 に連続アクセスして動作確認します。
root@www:~#
for ((i=1; i <= 20; i++)); do curl -I localhost; done

HTTP/1.1 200 OK
Date: Fri, 31 May 2024 01:31:07 GMT
Server: Apache/2.4.58 (Ubuntu)
Upgrade: h2,h2c
Connection: Upgrade
Last-Modified: Thu, 30 May 2024 23:46:27 GMT
ETag: "29af-619b479c01d06"
Accept-Ranges: bytes
Content-Length: 10671
Vary: Accept-Encoding
Content-Type: text/html

HTTP/1.1 200 OK
Date: Fri, 31 May 2024 01:31:07 GMT
Server: Apache/2.4.58 (Ubuntu)
Upgrade: h2,h2c
Connection: Upgrade
Last-Modified: Thu, 30 May 2024 23:46:27 GMT
ETag: "29af-619b479c01d06"
Accept-Ranges: bytes
Content-Length: 10671
Vary: Accept-Encoding
Content-Type: text/html

.....
.....

# ブロックされると 403 Forbidden になる
HTTP/1.1 403 Forbidden
Date: Fri, 31 May 2024 01:31:07 GMT
Server: Apache/2.4.58 (Ubuntu)
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 403 Forbidden
Date: Fri, 31 May 2024 01:31:07 GMT
Server: Apache/2.4.58 (Ubuntu)
Content-Type: text/html; charset=iso-8859-1

.....
.....

# ログを設定した場合は 指定尾所へ記録される

root@www:~#
ll /var/log/mod_evasive

total 16
drwxr-xr-x  2 www-data www-data 4096 May 31 01:35 ./
drwxrwxr-x 13 root     syslog   4096 May 31 01:34 ../
-rw-r--r--  1 www-data www-data    5 May 31 01:35 dos-10.0.0.52
-rw-r--r--  1 www-data www-data    5 May 31 01:35 dos-::1

# メールアドレスを設定した場合は 通知メールが送信される

root@www:~#
mail

"/var/mail/root": 3 messages 3 new
>N  1 root@www.srv.worl  Fri May 31 01:30   30/1204  Cron <www-data@www> [ -x /u
 N  2 www-data@www.srv.  Fri May 31 01:35   19/601
 N  3 www-data@www.srv.  Fri May 31 01:35   19/613
& 3
Message 3:
From www-data@www.srv.world  Fri May 31 01:35:54 2024
X-Original-To: root@localhost
To: root@localhost
MIME-Version: 1.0
Content-Type: text/plain; charset="ANSI_X3.4-1968"
Content-Transfer-Encoding: 8bit
Date: Fri, 31 May 2024 01:35:54 +0000 (UTC)
From: www-data <www-data@www.srv.world>

To: root@localhost
Subject: HTTP BLACKLIST 10.0.0.52

mod_evasive HTTP Blacklisted 10.0.0.52
関連コンテンツ