ジャンカーな日々

こころのすさんだ管理人[る~]がAndroid/Windows/Linux/OSX/iOS/パーツなどの話題やお買い得商品を紹介していきます

httpd(Apache)のF5アタック対策

ちょっと、API用のサーバを設計していて、お行儀の悪い端末からのアクセスをどう処分するかについて、検討する必要があったのでその時の設定をまとめておく
Apacheを使っていてOSがRedhat系ならmod_evasiveをインストールするのが手っ取り早いと思う

★インストール
epelレポジトリが有効なら

yum install -y mod_evasive

とすればインストールできる

★mod_evasiveの設定

vim /etc/httpd/conf.d/mod_evasive.conf

デフォルトだとこんな感じなので

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
#DOSEmailNotify you@yourdomain.com
#DOSLogDir "/var/log/mod_evasive"
#DOSWhitelist 127.0.0.1
#DOSWhitelist 192.168.0.*
</IfModule>

以下の設定だと

・同一IPから同一ページに2秒間で10回のリクエストがあった場合
・同一IPから同一サイトに1秒間に30回アクセスがあった場合

条件を満たしたら、60秒アクセス禁止(403 Forbidden)にする設定です
検出した場合メールを出せる(DOSEmailNotify)ので設定しておくと過度なアクセスがあった時に役に立ちます

loインターフェース(127.0.0.1)やローカルネットワーク(192.168.*)からのアクセスはホワイトリストで許可しておくといいと思います

<IfModule mod_evasive20.c>

DOSHashTableSize 3097

DOSPageInterval 2
DOSPageCount 10

DOSSiteInterval 1
DOSSiteCount 30

DOSBlockingPeriod 60
DOSLogDir "/var/log/mod_evasive"
DOSEmailNotify xxxxx@xxxx.jp

DOSWhitelist 127.0.0.1
DOSWhitelist 192.168.*

</IfModule>

■設定の適用にはhttpdのrestartが必要です
性能の低いVPSや、RESTful APIの供給が予想されるサービスを運営するときは設定しておいた方がいいと思う

 

ジャンカーな日々はamazon.co.jpを宣伝しリンクすることによって サイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。ちょっとだけ紹介ついでにお小遣いをいただいております(_ _)