PHPプログラミングでサイト改ざんを手軽にチェックする方法

PHP プログラミングでサイト改ざんを手軽にチェックする方法

目視できないファイルが手軽にチェックできます!

PHPプログラミング

Gumblar による WEB サイト改ざん事故に遭い、復旧と予防を行ったが、編集メンバーが多く、支店でも編集しているので管理が届かない部分もあり今後の再発が心配。トップページのソースを確認するくらいはできるが… このような心配が尽きないのではないでしょうか。

もし雨が降って玄関がすべりやすい状態であれば、転倒事故防止のために拭いたりマットを敷くかと思います。ホームページであれば事故防止の体制を取らなくても社会通念上問題がないわけではなく、それと同じように管理体制、つまり改ざん検知のチェックを行っているのかどうかが問われています。万が一、再発した場合でも、ホームページを閲覧しているお客様にウイルス損害を与える前に検知し、修正したいところです。

そして改ざん検知のチェックとして、トップページの確認はとても有効です。なぜなら、WEB サイト改ざん事故の多くはトップページに改ざんが入るためです。統計的な根拠があり、さらにトップページのソース確認であればサッとできますので、今すぐにでもはじめたいところです。

しかしながら「.htaccess」ファイルという URL を直接入力しても開けない、目視でのチェックができないファイルが設置されてしまったり、そのようなファイルが改ざんされる事故もあります。こちらは改ざん事故で必ず起きるというわけではないのですが、よく知られている多い事故です。* FTP 接続では確認できますが負担が大きいのではないでしょうか。

そこで目視でのチェックができないファイルについては、改ざん検知用に作った PHP プログラムでチェックします。なお、このコラムの応用になりますが、PHP を使えばほとんどの改ざん検出が可能ですので、ぜひぜひ研究して役立ててください。

それでは PHP プログラミングで改ざんを手軽にチェックする方法についてご説明します。

「.htaccess」改ざん検知の定義について

目視できない「.htaccess」ファイルがどのような状態だと改ざんなのか? その判定方法を整理します。

「.htaccess」は設定ファイルであり、このファイルで設定できることは多岐にわたります。そして例えば、トップページにアクセスしてきた携帯電話を携帯電話専用ページに転送するなど設定できます。改ざんの場合は同じようにウイルスサイトへ接続するような設定が入ります。

ただし「.htaccess」が不要な場合は設置する必要がなく、もともと設置していないことも。この場合は判断が簡単で、もし無いのもが有れば異常です。いままで存在しなかった「.htaccess」が設置されている場合は検知します。

また既に設置している場合ですが「.htaccess」を日常的に書き換えることはないので、こちらは変更があった場合に検知します。なお、JS ファイルといった確認が面倒なファイルも、書き換えることはないのでこの方法で簡単にチェックできます。

なお、厳密には変更を検知することになりますが、変更を検知さえできればソースを確認し改ざんをチェックできますし、仮にソースが読めなくてもスタッフ間で変更したかどうか確認すれば改ざんと判断できます。

PHP プログラミング

ここではいままで存在しなかった「.htaccess」が設置されていないかチェックします。もし「.htaccess」を設置していない場合は、下記 PHP ファイルを作成してください。なお、設置してある「.htaccess」が改ざんされた場合の検知プログラムは文字数の関係で次回( WEB サイト改ざん検知を手軽に行う応用編 )で紹介します。

指定のファイルが存在するかをチェックするには、file_exists関数を使います。そのファイルが存在するかしないかを返します。ここでは if 文と組み合わせて、「.htaccess」があれば「改ざんチェック」と表示し、なければ「オッケー」と表示します。拡張子は「ファイル名.php(例:test.php)」です。

またドメインの直下に「.htaccess」が設置されていないかをチェックします。これはここへの設置が統計的に多いためです。念のため、アクセス数の多い記事が保存されているディレクトリもチェックするとさらに安心です。



<?php
if (file_exists('/home/hoge/www/.htaccess')) {
echo "いますぐ改ざんチェック";
} else {
echo "オッケー";
}
?>



例としてさくらインターネットさんは'/home/hoge/www/.htaccess'となり、お使いのレンタルサーバーに合わせてください。またさくらインターネットさんではドメイン直下の「.htaccess」という意味のパスになり、hoge は契約のアカウント名に変更してください。

検証は簡単です。仮に上記ファイルをドメインの直下に「test.php」で保存したなら、www.ドメイン名/test.php と url を入力します。

改ざんチェック

「.htaccess」ファイルがなければオッケーと表示されます。次に空の「.htaccess」を FTP でアップしてください。今度はファイルが存在しますので、いますぐ改ざんチェックと表示されます。