概要
システムの機密を保つことは、重要性の高いシステムの管理者には必須の作業 項目です。システムに侵入されないことを保証することは不可能であるため、 定期的に (たとえば cron などを利用して) 普通以上のチェックを行ない、 システムの安全性を確認しておくことが重要になります。これが AIDE (Advanced Intrusion Detection Environment (高度な 侵入検知環境)) の存在する理由です。
簡易的なチェックとして、 RPM のチェック機能を利用して不用意な変更が なされていないかどうかを調べる方法があります。パッケージマネージャには 内蔵の検証機能が備わっているため、管理下にあるファイルすべてに対して変更を チェックすることができます。管理下にあるすべてのファイルを検証するには、 rpm -Va を実行します。しかしながら、このコマンドは 設定ファイルに対する変更も検出してしまうため、重要な変更点を検出するには さらなるフィルタを作らなければなりません。
また、 RPM を使用するにあたってのもう 1 つの問題は、高度な知識を持つ 攻撃者であれば rpm コマンドそれ自身を改ざんしてしまい、 攻撃者に対して侵入や root 権限の奪取を許すような rootkit のようなものを、 検出から逃れるようにしてしまう可能性があるという点です。これを解決する には、インストール済みのシステムとは完全に独立した第 2 のチェック機構を 用意する必要があります。
インストール後の AIDE データベースの初期化 | |
---|---|
お使いのシステムにインストールを行なう前に、メディアのチェックサムが 正しいことを確認し、正当なものであることをご確認ください (詳しくは 項 「メディアのチェック」 (付録A ヘルプとトラブルシューティング, ↑スタートアップ) をお読みください) 。 システムへのインストールが行なわれると、 AIDE のデータベースが初期化 されますが、インストールやインストール後の作業を正しく動作させるため、 コンピュータに対して接続されているネットワークケーブル類をすべて外し、 コンソールから直接作業を行なってください。また、コンピュータを無人の 状態にしたりすることもせず、 AIDE のデータベースが作成されるよりも 前にネットワークに接続することも避けてください。 |
AIDE は openSUSE の既定のインストール作業でインストールされることは
ありません。インストールを行なうには、 YaST を起動して +
を選択するか、もしくは root
の状態からコマンドラインで
zypper install aide
と入力してください。
AIDE に対してどのファイルに対してどの属性をチェックするのかを指定するには、
設定ファイル /etc/aide.conf
から設定を行ないます。
このファイルは実際の設定として使用する前に必ず修正されていなければなりません。
最初のセクションでは、 AIDE のデータベースファイルの場所など、一般的な
パラメータ設定を行ないます。ローカル側の設定で重要となる設定は
Custom Rules
と Directories and Files
の各セクションです。一般的には下記のようなルールを指定します:
Binlib = p+i+n+u+g+s+b+m+c+md5+sha1
Binlib
の変数について設定を行なったあとは、ファイルの
章でチェックオプションを設定します。重要なオプションは下記のとおりです:
表12.1 重要な AIDE チェックオプション¶
オプション |
説明 |
---|---|
p |
選択したファイルやディレクトリに対する、ファイルパーミッションのチェック |
i |
inode 番号についてのチェック。それぞれのファイル名には、固有の inode 番号があり、それは変わるべきではないものです。 |
n |
対象のファイルを指すリンク数のチェック。 |
u |
ファイルの所有者が変化しているかどうかのチェック。 |
g |
ファイルの所有グループが変化しているかどうかのチェック。 |
s |
ファイルサイズが変化しているかどうかのチェック。 |
b |
ファイルが使用しているブロック数が変化しているかどうかのチェック。 |
m |
ファイルの修正日時が変化しているかどうかのチェック。 |
c |
ファイルのアクセス日時が変化しているかどうかのチェック。 |
md5 |
ファイルの MD5 チェックサムが変化しているかどうかのチェック。 |
sha1 |
ファイルの SHA1 (160 ビット) チェックサムが変化しているかどうかのチェック。 |
下記は /sbin
ディレクトリ内にあるすべての
ファイルに対してチェックを行なう設定で、 Binlib
として定義したオプションでチェックを行ない、
/sbin/conf.d/
ディレクトリを除外する設定です:
/sbin Binlib !/sbin/conf.d
AIDE データベースを作成するには、下記の手順で行ないます:
/etc/aide.conf
を開きます。
チェックオプションを設定して、どのファイルをチェックすべきかを設定します。
利用可能なチェックオプションについて、完全な一覧は
/usr/share/doc/packages/aide/manual.html
をお読み
ください。なお、ファイル選択の設定を行なうにあたって、正規表現の
知識が少し必要となります。設定を行なったら保存します。
設定ファイルに正しく記述できているかどうかを確認するには、下記を実行します:
aide --config-check
このコマンドからの出力は、設定ファイルが正しくない場合にその解決の ためのヒントとなるものです。たとえば下記のような出力が発生したと 仮定します:
aide --config-check 35:syntax error:! 35:Error while reading configuration:! Configuration error
上記の出力は /etc/aide.conf
ファイルの 36 行目に
エラーがあることを示しているものです。エラーメッセージには、設定ファイル
の中で正しく読み込まれた最後の行を表示していることに注意してください。
AIDE データベースを初期化するには、下記のコマンドを実行します:
aide -i
生成されたデータベースは CD-R や DVD-R 、もしくはリモートのサーバや USB メモリなどにコピーして、後日使用します。
この手順は、データベースを改ざんされたりしないために必要な作業です。 また、データベースが書き換えられたりすることを防ぐため、一度だけ書き込む ことのできるメディアを使用しておくことをお勧めします。 データベースを監視対象のマシンにだけ残したりすることは、 絶対に しないでください。 |
ファイルシステムのチェックを行なうには、下記の手順で行ないます:
データベースをリネームします:
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
設定を変更したりした場合は毎回、 AIDE のデータベースを再度初期化して 新しく生成したデータベースを移動します。データベースをバックアップして おくことも良い方法です。詳しくは 12.2項 「AIDE データベースの設定」 をお読みください。
下記のコマンドでチェックを行ないます:
aide --check
何も出力されない場合は、改ざんが行なわれていないことを示します。 AIDE が何らかの改ざんを検知すると、下記のような変更点の概要が表示されます:
aide --check AIDE found differences between database and filesystem!! Summary: Total number of files: 1992 Added files: 0 Removed files: 0 Changed files: 1
実際の変更点を確認するには、パラメータ -V
を追加して
冗長出力レベルを上げて実行します。上記の例について冗長性を上げると、
下記のような出力になります:
aide --check -V AIDE found differences between database and filesystem!! Start timestamp: 2009-02-18 15:14:10 Summary: Total number of files: 1992 Added files: 0 Removed files: 0 Changed files: 1 --------------------------------------------------- Changed files: --------------------------------------------------- changed: /etc/passwd -------------------------------------------------- Detailed information about changes: --------------------------------------------------- File: /etc/passwd Mtime : 2009-02-18 15:11:02 , 2009-02-18 15:11:47 Ctime : 2009-02-18 15:11:02 , 2009-02-18 15:11:47
この例では、 /etc/passwd
ファイルの変更日時とアクセス
日時が変化したことを示しています。
リスクを嫌う管理者 (管理者以外でもかまいません) の場合は、信頼のおける ソースが提供する AIDE のバイナリを実行しておくことをお勧めします。 このようにすることで、悪意のある攻撃者が AIDE のバイナリまでも改ざん してしまい、本来の改ざんチェックを動作できなくなってしまうような問題を 未然に回避することができます。
これを行なうには、 AIDE をインストール済みシステムから独立した、 レスキューシステムから実行しなければなりません。 openSUSE では 比較的任意のプログラムを追加しやすいレスキューシステムが用意されています ので、ここから作業を行ないます。
レスキューシステムを利用して起動する前に、 2 種類のパッケージを用意する 必要があります。これはシステムに対してドライバ更新ディスクを追加するのと 同じ書式で追加できるもので、 linuxrc から行ないます。詳しくは http://en.opensuse.org/SDB:Linuxrc をお読みください。 下記ではこの手順を説明しています。
手順12.1 AIDE を利用したレスキューシステムの起動
2 台目のマシンを用意し、 FTP サーバを起動します。
FTP サーバのディレクトリ内に aide
と
mhash
の各パッケージをコピーします。 openSUSE
の FTP サーバ機能であれば /srv/ftp/
になります。
具体的には アーキテクチャ
と
バージョン
の項目を実際の値に置き換え、
下記のように実行します:
cp DVD1/suse/アーキテクチャ
/aideバージョン
.アーキテクチャ
.rpm /srv/ftp cp DVD1/suse/アーキテクチャ
/mhashバージョン
.アーキテクチャ
.rpm /srv/ftp
レスキューシステムに対して必要な起動パラメータを提供するため、
/srv/ftp/info.txt
ファイルを下記の内容で
作成します:
dud:ftp://ftp.example.com/aideバージョン
.アーキテクチャ
.rpm dud:ftp://ftp.example.com/mhashバージョン
.アーキテクチャ
.rpm
それぞれ ftp.example.com は実際の FTP サーバのドメイン名に、
バージョン
と アーキテクチャ
は実際の値に置き換えてください。
次に AIDE チェックを行なう必要のあるマシンを再起動し、お持ちの DVD からレスキューシステムを起動します。このとき、下記の起動パラメータを 設定してください:
info=ftp://ftp.example.com/info.txt
このパラメータを設定すると、 linuxrc に対して info.txt
ファイル内の情報を読み込むように指示します。
レスキューシステムが起動したら、 AIDE プログラムが利用できるようになります。
AIDE に関する情報は、それぞれ下記の場所にあります:
AIDE の Web ページ (ただし英語であることに注意してください): http://aide.sourceforge.net.
/etc/aide.conf
ファイル内のドキュメント。
aide
パッケージをインストールすることで作成
される、 /usr/share/doc/packages/aide
以下のファイル。
AIDE ユーザのメーリングリスト (ただし英語であることに注意してください): https://mailman.cs.tut.fi/mailman/listinfo/aide.