hypermkt blog

平日はとあるホームページ作成サービス、週末はとあるレビューサイトの開発・運営。

スクレイピングをmod_dosdetector-forkで防ぐ方法

time 2014/05/06

スクレイピングをmod_dosdetector-forkで防ぐ方法

とある日、サーバーがやけに重いなーと思ってログを見た所、頑張ってスクレイピングをしている人がいた。その日のログの件数だけで18万件・・・。

レビューサイトの宿命ではあるんだが、結構スクレイピングをされる事が多いです。どうせやるならバレないようにしてほしいんですが、一気にアクセスされるとさすがにサーバーに負荷がかかり、他のユーザーさんにも影響が出てしまうため、対策を行いました。

スクレイピングもほぼDoS攻撃と連続アクセスという点では同じなので、DoS対策について調べました。

  • mod_security
  • mod_evasive
  • mod_dosdetector
  • mod_dosdetector-fork

導入方法

ビルド

ビルド自体は簡単。下記の通りすれば完了。

導入

ビルドしたモジュールをhttpd.confで読み込む

DoS対策をしたバーチャルホスト設定内に下記を追加。ポイントと下記の通りです。

  • ローカルネットワーク内からのアクセスは全て除外する。定期的な監視スクリプトなどが走っているので。
  • クローラーは除外する
  • 画像、CSS、Javascriptなどはアクセスカウントの対象外とする

あとはApacheをconfigtest & gracefulすれば完了です。

運用後

運用後に気付いた点をまとめます。

クローラーがひっかかる

下記はbingの一例ですが、Googleクローラーも疑わしいアクセスとして検知されます。

もちろんクローラーをDoSアタックと検知し、拒否されてしまうとSEO対策的に好ましくないので、上記の設定時に各種クローラーは除外するようにし拒否しないようにします。

怪しいアクセスを防いだ

ユーザーエージェントもなく連続アクセスっぽいアクセスがあったが、101アクセス目で503を返しており、拒否っています。あちら側も503を検知したのか急にアクセスが止まった。

とまぁまだまだ様子見の段階ではありますが、概ね順調に動いております。これで次回スクレイピングやDoSアタックが来ても大丈夫!でありたい。


down

コメントする