apacheでDoS攻撃対策。mod_evasiveのインストール

apacheでDoS攻撃対策としてmod_evasiveのインストール

同一IPアドレスからのアクセスに回数制限を設けるのにApache のモジュールがいくつかある。

有名なのはここらへん。
mod_dosdetector
mod_evasive
Fail2ban ← 人気
簡単そうなので mod_evasive をインストールする。

インストール手順

インストール参考:https://okochang.hatenablog.jp/entry/2014/03/15/161134

現在読み込まれているapacheモジュールの一覧をだして、mod_evasive がないことを確認する

httpd -M

sharedのモジュールは、/etc/httpd/conf.modules.d配下の定義ファイルを編集することで、モジュールをロードしたり、ロードしないようにすることができる。

mod_evasive が無いことを確認
httpd -M | grep evasive

パッケージ管理ツールでインストール状況を確認する場合

dnf list installed | grep evasive
# または
yum list installed | grep evasive

EPEL(イーペル)リポジトリにあるらしいので設定されいてるリポジトリを見る

—————–
yum repolist all
—————–

EPELがあることを確認する
mod_evasiveのインストール
—————–
yum –enablerepo=epel install mod_evasive
—————–

エラーが出る
—————–
# yum –enablerepo=epel install mod_evasive
読み込んだプラグイン:fastestmirror, security
インストール処理の設定をしています
Determining fastest mirrors
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
エラー: Cannot find a valid baseurl for repo: base
—————–

インストール可能なパッケージとインストール済みのパッケージを見ようとしてもエラーが出る
—————–
yum list
—————–

CentOSのバージョンが6.9と古いから出るエラーらしい。

対処参考URL1:https://shobon.hatenablog.com/entry/2020/12/03/212209
対処参考URL2:https://ex1.m-yabe.com/archives/5066

ページを参考に設定ファイルを書き変え
—————–
/etc/yum.repos.d/CentOS-Base.repo
—————–
書き変え後、一覧が出るか確認 → OK。
—————–
yum list | grep evasive
—————–

再度インストール実行
—————–
yum –enablerepo=epel install mod_evasive
—————–

インストールできているか確認
—————–
httpd -M | grep evasive
—————–

結果
—————–
Syntax OK
evasive20_module (shared)
—————–

設定ファイルの編集
うちのサーバーはここにあった
—————–
cat /etc/httpd/conf.d/mod_evasive.conf
—————–

モジュールに付属のテストファイルを実行
—————–
# perl /usr/share/doc/mod_evasive-1.10.1/test.pl
—————–

エラーが出る。最近の apache ではリクエストの改行コードがCRLFでないため 400 Bad Request が出る。

下記を参考に書き変え
https://www.kowloonet.net/2020/07/centos8-10apachedosmodevasive.html
再度実行してok。

設定ファイルからログファイルの保存場所を変更
 
————————————————
# 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>
————————————————
 
保存先のディレクトリを作成して権限を与える
————————————————
# mkdir /var/log/mod_evasive/
# chown apache:apache /var/log/mod_evasive/
————————————————
 
二つあるサーバーのうち、一方は test.pl を実行すると 301 が返ってきてしまう。調べたけど理由不明。
タイトルとURLをコピーしました