トップページ > セキュリティチェックツール > Solaris Fingerprint DataBase (sfpDB) の使い方
カテゴリー
オラクルエンジニア通信
サポートページ
マニュアルページ
ソフトウェアダウンロード
中古UNIXマシン購入
blogs.sun.com
お勧めサイト
プライベートリンク

Solaris Fingerprint DataBase (sfpDB) の使い方

Solaris Fingerprint DataBase (sfpDB) とは、Sun が提供している MD5 による Solaris システムファイルのハッシュ値データベースです。このデータベースと照合することでシステムファイルが(特にコマンド等が不正侵入者によって)書き換えら れていないかを検証することができます。

使い方は以下のように2通りあります。

◆ ブラウザを使用し、GUI で行う。
  以下のサイトで MD5 ハッシュ値を貼り付けることでチェックできます。
  → Solaris Fingerprint DataBase
  この方法はちょっとしたファイルを検査するときに便利です。

sfpC.plsidekick.sh スクリプトを使用して、コマンドラインから sfpDB を参照しに行くプログラムを走らせることができます。
  この方法は多くのファイルをまとめてチェックするときに便利です。
  上記スクリプトは以下のサイトから入手できます。
  →  Sun BluePrints OnLine - Scripts and Tools
  ページ下の方の sfpc-1.2.tar.Z and sidekick.sh.Z というリンクからダウンロードできます。


ここでは自由度の高いスクリプトを使用して sfpDB を利用する方法を紹介します。

まず、上記のサイトからスクリプトをダウンロードして適当なディレクトリに展開します。

bash-3.00# pwd
/var/tmp/sfpDB
bash-3.00# ls
sfpC-1.2.tar.Z  sidekick.sh.Z
bash-3.00# uncompress *
bash-3.00# ls
sfpC-1.2.tar  sidekick.sh
bash-3.00# tar xvf sfpC-1.2.tar
x sfpC-1.2, 0 bytes, 0 テープブロック
x sfpC-1.2/sfpC.pl, 6172 bytes, 13 テープブロック
x sfpC-1.2/README.sfpC, 8754 bytes, 18 テープブロック
bash-3.00#

ここでチェックしたいファイルの md5 ハッシュ値を求めます。
Solaris 10 であれば、標準で入っている digest コマンドを使ってもよいですが、sfpC.plsidekick.sh も md5 コマンドを使用するように設計されているようですので、md5 コマンドのバイナリをダウンロードします。
md5 コマンドのダウンロード

ダウンロードした md5 コマンドのバイナリを以下のようにセットアップします。

bash-3.00# pwd
/var/tmp/sfpDB
bash-3.00# ls
md5.tar.Z     sfpC-1.2      sfpC-1.2.tar  sidekick.sh
bash-3.00# uncompress md5.tar.Z
bash-3.00# tar xvf md5.tar
x md5, 0 bytes, 0 テープブロック
x md5/md5-x86, 23452 bytes, 46 テープブロック
x md5/md5-sparc, 23892 bytes, 47 テープブロック
bash-3.00# cp md5/md5-sparc /usr/sbin/md5
bash-3.00# chmod 700 /usr/sbin/md5
bash-3.00# ls -l /usr/sbin/md5
-rwx------   1 root     root       23892  8月 16日  13:17 /usr/sbin/md5
bash-3.00#

使用方法は簡単で以下のように実行するだけです。

bash-3.00# md5 /usr/bin/ls
MD5 (/usr/bin/ls) = ae08d6328d118dfc6ee87cd42436972e

ちなみに同じ出力を Solaris 10 標準の digest コマンドで得る場合は、以下のように実行します。一見複雑に見えますが、多機能なためアルゴリズム指定などが入っているだけです。またパイプ(|)の右側 は小文字で出力される md5 を 大文字の MD5 に変換しているだけです。
(注意:sfpDB では大文字で MD5 と記述する必要があります。)

bash-3.00# digest -a md5 -v /usr/bin/ls | sed 's/md5/MD5/'
MD5 (/usr/bin/ls) = ae08d6328d118dfc6ee87cd42436972e


sfpC.pl スクリプトの実行】

準備ができたら sfpC.pl スクリプトのある場所まで移動します。

bash-3.00# pwd
/var/tmp/sfpDB
bash-3.00# cd sfpC-1.2
bash-3.00# ls
README.sfpC  sfpC.pl

この記事を書いている 2007年8月16日時点にダウンロードした sfpC.pl では上記スクリプトにある sfpDB の URL は古いものになっています。
sfpC.pl をエディタで開いて 137 行目付近の以下のエントリを書き換えてください。

変更前:
my $req = POST 'http://sunsolve.Sun.COM/pub-cgi/fileFingerprints.pl',

変更後:
my $req = POST 'http://jp.sunsolve.sun.com/fileFingerprints.do',


そして、先ほどの md5 コマンドを使用してチェックしたいファイルの MD5 ハッシュをファイルに落とします。ここでは /usr/bin/ls コマンドを調べると仮定します。

bash-3.00# md5 /usr/bin/ls > md5.out
bash-3.00# cat md5.out
MD5 (/usr/bin/ls) = ae08d6328d118dfc6ee87cd42436972e

後は、カレントディレクトリにある sfpC.pl スクリプトを以下のように実行するだけです。
※注意: Solaris 標準の perl では必要なモジュールが見つからず、失敗することがあります。README.sfpC ファイルを見て、perl に必要なモジュールを組み込むか、別途 perl パッケージをインストールして sfpC.pl 内の perl のパスを変更するなど修正が必要です。

bash-3.00# ./sfpC.pl md5.out

         ae08d6328d118dfc6ee87cd42436972e -  - 1 match(es)


                 canonical-path: /usr/bin/ls
                 package: SUNWcsu
                 version: 11.10.0,REV=2005.01.21.15.53
                 architecture: sparc

                     source: Solaris 10/SPARC

                     patch: 118855-36RS

sidekick.sh スクリプトの実行】

まず sidekick.sh スクリプトの以下の部分をシステムの構成に合わせて編集し、スクリプトに実行権をつけます。

bash-3.00# vi sidekick.sh
----------------------------
...

SIDEKICK_MD5=/usr/sbin/md5
...
SIDEKICK_PERL=/usr/local/bin/perl
...
SIDEKICK_SFPC=/var/tmp/sfpDB/sfpC-1.2/sfpC.pl
-----------------------------------

bash-3.00# chmod 744 sidekick.sh
bash-3.00# ls -l sidekick.sh

-rwxr--r--   1 root     root       10711 Aug 16 13:03 sidekick.sh

以下のように実行すると簡単な使用方法が出力されます。

bash-3.00# ./sidekick.sh -h
./sidekick.sh

  -R new-root-dir    Specify an alternate root directory.
  -r                 Find files commonly found in root kits.
  -u                 Find files with the set-uid bit set.
  -g                 Find files with the set-gid bit set.
  -s                 Find files with the sticky bit set.
  -U                 Find files with no valid user.
  -G                 Find files with no valid group.
  -a                 Find all files. warning: slow and many false positives will ocure
  -S                 Standalone mode.  sfpC will not be executed.
  -h                 Display this message.


例えば、rootkit などの検出に使用するときには以下のように実行します。これは rootkit によって置き換えられそうなコマンドがあらかじめスクリプト内に登録されており、1つ1つに対して前述の sfpC.pl スクリプトが実行されているだけです。

bash-3.00# ./sidekick.sh -r
Searching for files commonly found in rootkits.
The output has been saved to rootkitfiles-md5.20070817110238.
Using sfpC to process MD5 signatures from file, rootkitfiles-md5.20070817110238.


         00a7737d352eca7e4e7e7a7434bdc9d5 -  - 1 match(es)



                 canonical-path: /usr/bin/date
                 package: SUNWcsu
                 version: 11.10.0,REV=2005.01.21.15.53
                 architecture: sparc

                     source: Solaris 10/SPARC

                     patch: 107551-01

...

(以下省略)

上記結果のように sfpDB にマッチ (match) していれば安全です。1つでも 0 match などの表記が見つかったら、不正に置き換えられていることを示しますので注意が必要です。

オラクルユニバーシティSolaris系技術トレーニング一覧

Solarisお勧め書籍

Solaris 11.2 システムハンドブック
Oracle Solaris 11 試験対策本(OCA)