第12章 AIDE を利用した侵入検知

目次

12.1. AIDE を利用する理由
12.2. AIDE データベースの設定
12.3. ローカルの AIDE チェック
12.4. システムに依存しないチェック
12.5. さらなる情報

概要

システムの機密を保つことは、重要性の高いシステムの管理者には必須の作業 項目です。システムに侵入されないことを保証することは不可能であるため、 定期的に (たとえば cron などを利用して) 普通以上のチェックを行ない、 システムの安全性を確認しておくことが重要になります。これが AIDE (Advanced Intrusion Detection Environment (高度な 侵入検知環境)) の存在する理由です。

12.1. AIDE を利用する理由

簡易的なチェックとして、 RPM のチェック機能を利用して不用意な変更が なされていないかどうかを調べる方法があります。パッケージマネージャには 内蔵の検証機能が備わっているため、管理下にあるファイルすべてに対して変更を チェックすることができます。管理下にあるすべてのファイルを検証するには、 rpm -Va を実行します。しかしながら、このコマンドは 設定ファイルに対する変更も検出してしまうため、重要な変更点を検出するには さらなるフィルタを作らなければなりません。

また、 RPM を使用するにあたってのもう 1 つの問題は、高度な知識を持つ 攻撃者であれば rpm コマンドそれ自身を改ざんしてしまい、 攻撃者に対して侵入や root 権限の奪取を許すような rootkit のようなものを、 検出から逃れるようにしてしまう可能性があるという点です。これを解決する には、インストール済みのシステムとは完全に独立した第 2 のチェック機構を 用意する必要があります。

12.2. AIDE データベースの設定

[Important]インストール後の AIDE データベースの初期化

お使いのシステムにインストールを行なう前に、メディアのチェックサムが 正しいことを確認し、正当なものであることをご確認ください (詳しくは 項 「メディアのチェック」 (付録A ヘルプとトラブルシューティング, ↑スタートアップ) をお読みください) 。 システムへのインストールが行なわれると、 AIDE のデータベースが初期化 されますが、インストールやインストール後の作業を正しく動作させるため、 コンピュータに対して接続されているネットワークケーブル類をすべて外し、 コンソールから直接作業を行なってください。また、コンピュータを無人の 状態にしたりすることもせず、 AIDE のデータベースが作成されるよりも 前にネットワークに接続することも避けてください。

AIDE は openSUSE の既定のインストール作業でインストールされることは ありません。インストールを行なうには、 YaST を起動して ソフトウエア+ソフトウエア管理 を選択するか、もしくは root の状態からコマンドラインで zypper install aide と入力してください。

AIDE に対してどのファイルに対してどの属性をチェックするのかを指定するには、 設定ファイル /etc/aide.conf から設定を行ないます。 このファイルは実際の設定として使用する前に必ず修正されていなければなりません。 最初のセクションでは、 AIDE のデータベースファイルの場所など、一般的な パラメータ設定を行ないます。ローカル側の設定で重要となる設定は Custom RulesDirectories 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 データベースを作成するには、下記の手順で行ないます:

  1. /etc/aide.conf を開きます。

  2. チェックオプションを設定して、どのファイルをチェックすべきかを設定します。 利用可能なチェックオプションについて、完全な一覧は /usr/share/doc/packages/aide/manual.html をお読み ください。なお、ファイル選択の設定を行なうにあたって、正規表現の 知識が少し必要となります。設定を行なったら保存します。

  3. 設定ファイルに正しく記述できているかどうかを確認するには、下記を実行します:

    aide --config-check

    このコマンドからの出力は、設定ファイルが正しくない場合にその解決の ためのヒントとなるものです。たとえば下記のような出力が発生したと 仮定します:

    aide --config-check
    35:syntax error:!
    35:Error while reading configuration:!
    Configuration error

    上記の出力は /etc/aide.conf ファイルの 36 行目に エラーがあることを示しているものです。エラーメッセージには、設定ファイル の中で正しく読み込まれた最後の行を表示していることに注意してください。

  4. AIDE データベースを初期化するには、下記のコマンドを実行します:

    aide -i
  5. 生成されたデータベースは CD-R や DVD-R 、もしくはリモートのサーバや USB メモリなどにコピーして、後日使用します。

    [Important]

    この手順は、データベースを改ざんされたりしないために必要な作業です。 また、データベースが書き換えられたりすることを防ぐため、一度だけ書き込む ことのできるメディアを使用しておくことをお勧めします。 データベースを監視対象のマシンにだけ残したりすることは、 絶対に しないでください。

12.3. ローカルの AIDE チェック

ファイルシステムのチェックを行なうには、下記の手順で行ないます:

  1. データベースをリネームします:

    mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
  2. 設定を変更したりした場合は毎回、 AIDE のデータベースを再度初期化して 新しく生成したデータベースを移動します。データベースをバックアップして おくことも良い方法です。詳しくは 12.2項 「AIDE データベースの設定」 をお読みください。

  3. 下記のコマンドでチェックを行ないます:

    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 ファイルの変更日時とアクセス 日時が変化したことを示しています。

12.4. システムに依存しないチェック

リスクを嫌う管理者 (管理者以外でもかまいません) の場合は、信頼のおける ソースが提供する AIDE のバイナリを実行しておくことをお勧めします。 このようにすることで、悪意のある攻撃者が AIDE のバイナリまでも改ざん してしまい、本来の改ざんチェックを動作できなくなってしまうような問題を 未然に回避することができます。

これを行なうには、 AIDE をインストール済みシステムから独立した、 レスキューシステムから実行しなければなりません。 openSUSE では 比較的任意のプログラムを追加しやすいレスキューシステムが用意されています ので、ここから作業を行ないます。

レスキューシステムを利用して起動する前に、 2 種類のパッケージを用意する 必要があります。これはシステムに対してドライバ更新ディスクを追加するのと 同じ書式で追加できるもので、 linuxrc から行ないます。詳しくは http://en.opensuse.org/SDB:Linuxrc をお読みください。 下記ではこの手順を説明しています。

手順12.1 AIDE を利用したレスキューシステムの起動

  1. 2 台目のマシンを用意し、 FTP サーバを起動します。

  2. FTP サーバのディレクトリ内に aidemhash の各パッケージをコピーします。 openSUSE の FTP サーバ機能であれば /srv/ftp/ になります。 具体的には アーキテクチャバージョン の項目を実際の値に置き換え、 下記のように実行します:

    cp DVD1/suse/アーキテクチャ/aideバージョン.アーキテクチャ.rpm /srv/ftp
    cp DVD1/suse/アーキテクチャ/mhashバージョン.アーキテクチャ.rpm /srv/ftp
  3. レスキューシステムに対して必要な起動パラメータを提供するため、 /srv/ftp/info.txt ファイルを下記の内容で 作成します:

    dud:ftp://ftp.example.com/aideバージョン.アーキテクチャ.rpm
    dud:ftp://ftp.example.com/mhashバージョン.アーキテクチャ.rpm

    それぞれ ftp.example.com は実際の FTP サーバのドメイン名に、 バージョンアーキテクチャ は実際の値に置き換えてください。

  4. 次に AIDE チェックを行なう必要のあるマシンを再起動し、お持ちの DVD からレスキューシステムを起動します。このとき、下記の起動パラメータを 設定してください:

    info=ftp://ftp.example.com/info.txt

    このパラメータを設定すると、 linuxrc に対して info.txt ファイル内の情報を読み込むように指示します。

レスキューシステムが起動したら、 AIDE プログラムが利用できるようになります。

12.5. さらなる情報

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.


openSUSE セキュリティガイド 13.1