ホームページ改ざんに備えてみる

こないだトヨタのホームページ改ざんのニュースもあり、アタックが増えたのか、それとも脆弱なコンテンツが増えたのかどちらなんでしょうかね。
もしかするとどっちもかもしれませぬ。

rootを持っているサーバーだったらなんとでもなりますが、レンタルサーバーの普及とともにrootは持ってないホームページ管理者が増えてます、rootがないと”対策”は難しいけど察知するのは早ければ早い方がいい!ってことで、改ざんに備えるスクリプトを考えてみました。

ホームページスペースだけを借りている人は使えません、そういう人はなんか別の方法を考えよう。

とりあえずCronが使えないとダメです。

たけけんの環境はさくらのレンタルサーバーのスタンダードです。

まずは下地作りからですが、さくらのレンタルサーバーは/home/アカウント名/wwwフォルダがドキュメントルートになります、別に作ってる人はwwwの下にもフォルダ名をつけよう。
ハッシュ値が入ったデータを2個作っときます。
見たら分かりますが、書き換えればアカウント配下の全部のチェックをすることも可能です。

find www/hoge -type f -exec md5 {} \; | awk '{printf("%s",$4)}' > ch0.dat
find www/hoge -type f -exec md5 {} \; | awk '{printf("%s",$4)}' > ch1.dat

中身はこんな感じ。

$ cat ch0.dat
1adf3bac99c016f80215aa226c48295d6e0bcf9f07953c75f042aa7f2d6a9be9d19

ドキュメントルート配下のファイルすべてのハッシュ値が%sとストリングで入ってます。
ほいでもってch1.datだけに最新のハッシュ値を入れて比較して、変わっていればアラートを送るというスクリプトです。

#!/bin/sh

find www/hoge -type f -exec md5 {} \; | awk '{printf("%s",$4)}' > ch1.dat

CHECKA=`cat ch0.dat`
CHECKB=`cat ch1.dat`

if [ "${CHECKA}" != "${CHECKB}" ];
then
        echo 'tigau';
       echo "henkouari" | mail -s "henkouari" test@example.com;
        exit 1;
fi

echo ‘tigau’;はデバッグ用のもので実際の動作には意味ないです。

動作テストはindex.phpに1行追加して確認しました。
Cronは何時間か置きに回しておけばいいんでないかなと、ちなみにさくらのレンタルサーバーはFreeBSDなので、このシェルスクリプトもFreeBSDで動くような感じになっているはずです。

Linuxではテストしてないので、動かないかもしれない。

htmlcheck.shなんて名前を付けてみて、chmod 755 htmlchech.ch

check01

こんな感じで5時間置きに実行する登録しとく。

あくまでファイルに変更があった時の察知なので、改ざんを防ぐものではないです。
対策の一環としてこういうこともあるんだなという事が伝われば幸いです。

ちなみにですがワードプレスで記事の更新をしてもデータベースが更新されるだけなので、この検知は動作しません。
あとターミナルで実行した場合とCronからの実行は環境変数とか変わってきたりするので、その辺も注意してね。

てな感じで、これからもよろしく~。

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です