Apache DoS攻撃対策モジュール【mod_evasive編】

2018-05-17

概要

DoS攻撃(Denial of Service attack)は、サーバなどにサービス妨害攻撃またはサービス不能攻撃などと呼ばれています。大量のデータや不正パケットをサーバーに送りつけるなどの不正な攻撃を指します。

Apacheでの、DoS攻撃の対策としては、「mod_evasive」のモジュールを利用することで、特定のIPアドレスからの設定した時間(閾値)あたりにページリクエストの回数制限を超えた、 アクセスブロックを実行したり、403(Forbidden)を返すことができます

mod_evasive インストール

EPELのリポジトリを設定していれば、yumでインストールできます。EPELは普段の有効にしない設定(enabled=0)にします。利用するときは、yum –enablerepo=epel [パッケージ名] として利用します

EPEL リポジトリ追加(CentOS 6.x)

# wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
# rpm --import RPM-GPG-KEY-EPEL-6
# rm -f RPM-GPG-KEY-EPEL-6

# 以下の内容で新規作成
# vi /etc/yum.repos.d/epel.repo

[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1
enabled=0

EPEL リポジトリ追加(CentOS 7.x)

# wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-7
# rpm --import RPM-GPG-KEY-EPEL-7
# rm -f RPM-GPG-KEY-EPEL-7

# 以下の内容で新規作成
# vi /etc/yum.repos.d/epel.repo

[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/7/$basearch/
gpgcheck=1
enabled=0

mod_evasive インストール

# yum --enablerepo=epel -y install mod_evasive

mod_evasive 設定

ログディレクトリを作成します

# mkdir /var/log/mod_evasive/
# chown apache:apache /var/log/mod_evasive/

設定ファイルを編集します
項目の設定は、以下を参照してください
# vi /etc/httpd/conf.d/mod_evasive.conf
LoadModule evasive20_module modules/mod_evasive24.so
<IfModule mod_evasive24.c>
    DOSHashTableSize    3097
    DOSPageCount        10
    DOSSiteCount        30
    DOSPageInterval     2
    DOSSiteInterval     1
    DOSBlockingPeriod   60
    DOSLogDir "/var/log/mod_evasive"
    DOSWhitelist   127.0.0.1
</IfModule>

DOSHashTableSize 子プロセスでのハッシュテーブルサイズ。
サイズを増やすことでパフォーマンス向上するが、メモリを消費する
DOSPageCount 同一ページへのリクエスト数の閾値
DOSSiteCount 同サイトへのリクエスト数の閾値
DOSPageInterval ページカウントを計測する時間(秒)
DOSSiteInterval サイト内カウントを計測する時間(秒)
DOSBlockingPeriod ブロック時間(404 Forbiddenを返す)する時間(秒)
DOSLogDir DOS攻撃のログの場所
DOSEmailNotify メールの通知先
DOSWhitelist ホワイトリスト

スポンサーリンク