スポンサーサイト
投稿日時 : -------- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-------- --:-- | スポンサー広告
自宅サーバがお亡くなりになりまして
投稿日時 : 2009-11-03 07:32
 2日前の「Firefox拡張 Dropfox 公式サイト移転のお知らせ」の移転先の自宅サーバが先程お亡くなりになりましたw。これ何てディザスター?
 
 久々に再起動かけた時に微妙にいつもと違うタイミングと音で電源が落ちた気がしたんですが、そのときはあまり気にとめず、席を外して戻ってくるとサーバが起動してないことに気づく。で、電源ボタンを押すも何の反応もない、とw。ハードウェア故障確定。
 
 データを失う痛みと苦しみと絶望と復旧にかかる途方もない時間は過去に何度も経験してるのでバックアップはかなり厳重にとってあって、そのあたりはとりあえず安心してました。が、中開けて見ると
 
グラフィックチップクーラーの止めピンがない
グラフィックチップクーラ?の固定金具をひっかける止めピンがなくなってるww
 
グラフィックチップクーラーの止めピンがない
発見!!本体を振ったらカラコロ出てきました。
 
どうやらこの止めピンが抜けた勢いで跳ね上がり、マザボの各地をショートさせたっぽい?まあ確証はないんですけど・・・
 
 ここで心配になったのは内蔵HDと内蔵HDのバックアップ保存先の外付けHDもショート時にやられた可能性があること。もちろんバックアップのバックアップももう一台の外付けHDにとってありますが、両方同じマシンにつながってたらこういう場合は意味ないことに気づく。バックアップのバックアップのバックアップもDVDに焼いてありますが、さすがにこれは手間がかかるので3ヶ月に1回ぐらいの頻度。
 いや、こんだけひっぱいといてアレなんですけど、結局内蔵のも含めてデータは全部無事でしたw。友人のホームページもウチで動いてるってこともあって一瞬肝を冷やしたので、今回のことでさらなる厳重でこまめなバックアップを肝に銘じました。
 
 で、仕方なく一時的措置としてメインマシンにサーバ機能を移設。こういう、サーバ専用機がやられた時を想定して、他のマシンがすぐに代替サーバとして稼働開始できるよう、デスクトップ2台、ノート2台のすべてのWindowsマシンでパーティションやディレクトリ構造、ファイルの配置なんかを統一してあります。なので最新のサーバ関連データを同じ場所にコピーして、サービスの登録、IPアドレスの設定をやればほぼ作業完了です。実際、専用機の死亡判定から2時間未満でHTTP/FTP/SMTP/POP/SSHD/VNCその他のサーバとサービスの復旧を完了させることができました。備えあればなんとか。
 
 
 さて次のサーバ専用機はどうしようか。一人暮らしなのに電気代が毎月1万近いので、節電の為にも割とスペックの高い中古ノートPCにでもやらせようかな?いまあるノートは負荷に耐えられそうにないし。
 
 
スポンサーサイト
2009-11-03 07:32 | Server | Comment(0) | Trackback(0)
WinXP + Apache2でmod_dosevasiveによるDoS攻撃対策
投稿日時 : 2008-02-03 19:46
更新日時 : 2009-08-09 10:33
 数年前から細々と運営していたWebサーバがDoS攻撃された際にとった対策のメモ。
友人にホームページスペースを提供していたんですが、その友人がニコニコ動画でヒットを飛ばしたらしく、予想を上回るアクセスがあった。人が集まると悪意のある人も必ず紛れ込むようで、その中の一人が田代砲でも撃ってるかのような挙動をし始めた。そのときはOutpostでIP指定で遮断したが、根本的な対策をとる必要を感じたので調べてみた。
 

■環境

  Windows XP Professional SP2
  Apache 2.2.8
 

■mod_evasive

 以下のサイトからmod_evasiveというApacheモジュールを入れれば対策できそうなことが分かった。
Apacheに対するサービス拒否攻撃を回避する方法:ITpro
 
mod_evasiveは以下のような動作原理。
ITpro
mod_evasiveはまずURLリクエストをApacheサーバーに送信するIPアドレスの記録を取る。その後,あらかじめ設定した許容範囲を超えるリクエストがいずれかのIPアドレスから送信されていないか測定する。許容範囲を超えるリクエストがあった場合,そのIPアドレスからのリクエストは一時的にブロックされる。

■mod_dosevasiveのダウンロード

 Windows用のコンパイル済みモジュールmod_dosevasiveを以下からダウンロード。
Mod_dosevasive for Apache2 on Windows / Best of Security
 
追記(2009-08-09 10:33):上記サイトではリンク切れになっているとのコメントをいただきました。探してみたところ以下の中国語サイトで発見しました。
 
ZIP内ファイルのmod_dosevasive22.dllのSHA-1ハッシュ(SHA1:275c2f1877e616287214971fbf2df73ffa3bf43e)が、この記事を投稿した2008/02/03の時点で公式サイトから落としたものと同一であることが確認できたので、ほぼ、間違いなく本物です。
 
 
解凍すると以下の2ファイルが入ってる。
  mod_dosevasive22.c
  mod_dosevasive22.dll
.c はソース。.dll の方がコンパイル済みモジュール。自分でコンパイルする場合はapxsというツールを使う必要がある。面倒なのでコンパイル済みを使う。
 

■Apacheのバージョン

 ここで嫌な予感がしたのがファイル名の「22」。これApacheの2.2系用という意味なんじゃないかと思って調べるとやはりそういうことらしい。が、現在運用中のApacheバージョンは2.0.55。大変な作業になることが予想されてうちひしがれる。一応2.0系用のモジュールも探してみたがないっぽい。仕方ないのでサーバマシンのクローン環境で2.0.55から2.2.8(2008年02月03日現在最新)への入れ替え作業実験。httpd.confの2.0系からの変更点を把握するのと、既存のページ・サービスが正常に動作することを確認するので半日かかった。
 

■mod_dosevasiveのインストールと設定

 で、いよいよmod_dosevasiveを組み込む。以下の作業中のパスは環境に応じて読み替えてください。
 
まずmod_dosevasive22.dllをApacheのモジュールフォルダに
D:\_WWW\Apache2\modules\mod_dosevasive22.dll
としてコピー。
 
次にhttpd.confを編集する。128行目あたりのLoadModuleディレクティブが並んでる最後に以下を追記する。
httpd.conf
LoadModule dosevasive22_module D:/_WWW/Apache2/modules/mod_dosevasive22.dll
<IfModule dosevasive22_module>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 1
DOSBlockingPeriod 60
DOSWhitelist 127.0.0.1 192.168.0.*
</IfModule>
正直はじめLoadModuleに渡すモジュール名を何にすればいいのかわからなかった。
Mod_dosevasive for Apache2 on Windows / Best of Security
LoadModule dosevasive_module c:\apache2\modules\mod_dosevasive.dll
というふうに書けとあるが、ApacheのTestConfigurationを通すとモジュールのAPIが見つからないみたいなことを言われる。
 
どうしようかと思ってソースファイルのmod_dosevasive22.cを眺めていると最後に
mod_dosevasive22.c
module AP_MODULE_DECLARE_DATA dosevasive22_module =
{
    STANDARD20_MODULE_STUFF,
    NULL,
    NULL,
    create_hit_list,
    NULL,
    access_cmds,
    register_hooks
};
というのがあって、APって書いてあるし、かなりぽいのでdosevasive22_moduleを入力してみたら通った。
 

■mod_dosevasiveの設定項目の意味

DOSHashTableSize 3097ハッシュテーブルのサイズ。増加させるとパフォーマンスが上がるがメモリをたくさん食う。アクセスが多い場合は増加させるべき。
DOSPageCount 5DOSPageIntervalで指定した秒数以内にページをリロードできる回数の上限。ここでは5回に設定。
DOSSiteCount 100DOSSiteIntervalで指定した秒数内にサイト全体で可能なリクエスト数の上限。ここでは100リクエストに設定。
DOSPageInterval 2ここで指定した秒数の間にDOSPageCountで指定した回数ページをリロードするとDoS攻撃と見なす。ここでは2秒に設定。
DOSSiteInterval 1ここで指定した秒数の間にDOSSiteCountで指定した回数のリクエストがあるとDoS攻撃と見なす。ここでは1秒に設定。
DOSBlockingPeriod 60遮断する秒数を指定。ここでは60秒に設定。
DOSWhitelist 127.0.0.1 192.168.0.*ここで登録されたホストの活動はDoS攻撃とみなさない。ここでは127.0.0.1の自分自身と192.168.0.*の192.168.0.0/24のLAN内からのアクセスはDoS攻撃として扱わないという設定。ワイルドカードが使用できる。

■動作確認

 設定が終わったのでLAN内ホストからサーバをDoS攻撃してみる。DOSWhitelistをコメントアウトしてApacheを再起動して設定を反映させる。テストにはメガ粒子田代砲を使うw。
 
tashirohou
 
ちゃんと攻撃を検知して遮断してくれた。
 

■環境に合わせて調整する

 ページの構成や提供しているサービスによってはどんなアクセスをDoSアタックと見なすかは多少変わってくると思うので環境に合わせて設定値を調整する。安定して動作することが確認できるまではDoSWhitelistはコメントアウトしておいた方がいいかも。自分はアクセスできても外部からの通常アクセスが知らずに遮断されているということが起こるかもしれないので。
 
[参考]
Apacheに対するサービス拒否攻撃を回避する方法:ITpro
Apacheに対するDOS攻撃を回避する「mod_evasive」 (ひるねこ日記)
Mod_dosevasive for Apache2 on Windows / Best of Security
Nuclear Elephant: mod_evasive
 
2008-02-03 19:46 | Server | Comment(12) | Trackback(1)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。