Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
コンテンツコンテンツ
セキュリティ強化ガイド
  1. 前書き
  2. 1 セキュリティと機密保持
  3. 2 コモンクライテリア (Common Criteria)
  4. I 認証
    1. 3 PAM を利用した認証
    2. 4 NIS の使用
    3. 5 YaST を利用した認証クライアントの設定
    4. 6 389 LDAP ディレクトリサービス
    5. 7 Kerberos を利用したネットワーク認証
    6. 8 Active Directory サポート
    7. 9 FreeRADIUS サーバの構築
  5. II ローカルセキュリティ
    1. 10 物理的なセキュリティ
    2. 11 seccheck を利用した自動的なセキュリティチェック
    3. 12 ソフトウエア管理
    4. 13 ファイルの管理
    5. 14 パーティションやファイルの暗号化
    6. 15 cryptctl を利用したアプリケーション向けのストレージ暗号化
    7. 16 ユーザ管理
    8. 17 Spectre/Meltdown チェッカー
    9. 18 YaST を利用したセキュリティの設定
    10. 19 PolKit による認可制御
    11. 20 Linux でのアクセス制御リスト
    12. 21 証明書ストア
    13. 22 AIDE を利用した侵入検知
  6. III ネットワークセキュリティ
    1. 23 X Window System と X 認証
    2. 24 SSH: 機密を保持するネットワーク操作
    3. 25 マスカレードとファイアウオール
    4. 26 VPN サーバの設定
    5. 27 X Window System で動作する PKI マネージャ XCA による管理
  7. IV AppArmor による権限の制限
    1. 28 AppArmor の紹介
    2. 29 入門
    3. 30 プログラムに対する予防接種
    4. 31 プロファイルのコンポーネントと文法
    5. 32 AppArmor のプロファイルリポジトリ
    6. 33 YaST を利用したプロファイルの構築と管理
    7. 34 コマンドラインからのプロファイル構築
    8. 35 チェンジハット機能による Web アプリケーションのプロファイル作成
    9. 36 pam_apparmor によるユーザの制限
    10. 37 プロファイルを作成したアプリケーションの管理
    11. 38 サポート
    12. 39 AppArmor 用語集
  8. V SELinux
    1. 40 SELinux の設定
  9. VI Linux 監査フレームワーク
    1. 41 Linux 監査システムの概要
    2. 42 Linux 監査フレームワークの設定
    3. 43 監査ルールセットの紹介
    4. 44 その他の情報源
  10. A GNU ライセンス
ナビゲーション
適用先 openSUSE Leap 15.2

22 AIDE を利用した侵入検知

概要

システムの機密を保持することは、代替のきかないシステムの管理者にとっては必須の課題となります。常にシステムが安全な状態にあることは誰も保証できませんので、定期的に (たとえば cron などで) 追加のチェックを行い、システムが正しく制御されていることを確認することが重要となります。このような要件を満たすことができるのが AIDE (Advanced Intrusion Detection Environment; 高度な侵入検知環境) です。

22.1 AIDE を使用する理由

RPM を使用すれば、不用意な変更が加わっているのかを簡易的に調べることができます。パッケージマネージャには、システム内に存在し、管理下にあるファイルに対して、チェックを行う機能が用意されています。全てのファイルをチェックしたい場合は、 rpm -Va コマンドを実行してください。ただし、このコマンドは設定ファイルなどに対しても変更を検知してしまうため、想定通りに変更されているファイルについては、一覧から取り除いていく作業が必要となってしまいます。

また、 RPM コマンドを使用して調べる方法には、根本的な問題も存在しています。それは、攻撃者が rpm コマンドそのものを書き換えることで、本来は変更されているものとして表示しなければならないものを隠蔽することができてしまう、という問題です。これにより、ルートキットなどの不正なソフトウエアを潜り込ませることができてしまい、不正に root 権限を得ることができてしまいます。この問題を解決するには、インストール済みのシステムからは完全に独立した、もう 1 つのチェックシステムが必要となります。

22.2 AIDE データベースの設定

重要
重要: インストール後の AIDE データベースの準備について

システムをインストールする前に、まずはお使いのメディアのチェックサムを検証し、不正なソフトウエアを使用していないことをご確認ください (詳しくは 4.1項 「メディアの確認」 をお読みください) 。システムをインストールしたあとは、 AIDE のデータベースの準備を行います。なお、インストール中やインストール後に問題なく動作するよう、インストールはコンソールから直接実施するものとし、ネットワークには接続しないでください。また、 AIDE でデータベースの作成が完了するまで、コンソールを誰にでもアクセスできる状態で放置したり、ネットワークに接続したりしないでください。

AIDE は openSUSE Leap の既定ではインストールされません。インストールを行うには、 Computer › Install Software を使用するか、 rootzypper install aide を実行してインストールしてください。

AIDE がファイルをチェックする際、どのような属性をチェック対象にしたいのかを設定したい場合は、 /etc/aide.conf 設定ファイルを変更してください。最初のセクションでは、 AIDE のデータベースファイルの場所など、一般的なパラメータを設定します。それに続く Custom RulesDirectories and Files の各セクションが重要な設定となります。既定のルールでは、下記のような値が設定されています:

Binlib     = p+i+n+u+g+s+b+m+c+md5+sha1

変数 Binlib の定義が終わったら、同じセクション内に存在する他の設定も、必要に応じて変更してください。主なオプションには下記のようなものがあります:

表 22.1: 主な AIDE のチェック項目

オプション

説明

p

選択したファイルやディレクトリのパーミッションのチェック。

i

inode 番号のチェック (それぞれのファイルには、必ずユニークな inode 番号が割り当てられていて、通常は変更されることはありません) 。

n

そのファイルに対して作成されているリンク数のチェック。

u

ファイルの所有者が変更されていないかどうかのチェック。

g

ファイルのグループ設定が変更されていないかどうかのチェック。

s

ファイルのサイズが変わっていないかどうかのチェック。

b

このファイルが使用するブロックカウント数が変わっていないかどうかのチェック。

m

ファイルの修正日時が変わっていないかどうかのチェック。

c

ファイルのアクセス日時が変わっていないかどうかのチェック。

S

ファイルサイズが変わっていないかどうかのチェック。

I

ファイル名の変更を無視するかどうか。

md5

ファイルに対する md5 チェックサムが変わっていないかどうかのチェック。 sha256 もしくは sha512 の使用をお勧めします。

sha1

ファイルに対する sha1 (160 ビット) チェックサムが変わっていないかどうかのチェック。 sha256 もしくは sha512 の使用をお勧めします。

sha256

ファイルに対する sha256 チェックサムが変わっていないかどうかのチェック。

sha512

ファイルに対する sha512 チェックサムが変わっていないかどうかのチェック。

下記は /sbin ディレクトリ内にある全てのファイルをチェックするための設定で、 Binlib オプション内で指定したチェックを実施するものの、 /sbin/conf.d/ ディレクトリについてはチェックを省略する指定です:

/sbin  Binlib
!/sbin/conf.d

AIDE データベースを作成するには、下記の手順を実施します:

  1. /etc/aide.conf ファイルを開きます。

  2. チェック項目を設定して、どのファイルをチェック対象とするのかを設定します。チェック項目全ての一覧については、 /usr/share/doc/packages/aide/manual.html ファイルをお読みください。なお、ファイルを指定する際には、正規表現に関するいくつかの知識が必要となります。設定が終わったら、ファイルを保存してください。

  3. 設定ファイルの書式が正しいことを確認するには、下記のように実行します:

    root # aide --config-check

    このコマンドの出力結果を読むことで、設定ファイルの誤っている箇所のヒントが得られます。たとえば下記のような出力が表示された場合を想定します:

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

    上記のエラーメッセージからすると、 /etc/aide.conf の 36 行目にエラーがあることになります。このとき、エラーメッセージの前の表示される行番号は、最後に正しく処理できた行の番号を示していることに注意してください。

  4. AIDE のデータベースを準備します。下記のように実行します:

    root # aide -i
  5. 生成されたデータベースを、 CD-R や DVD-R 、もしくはリモートのサーバやフラッシュメモリなどにコピーしておいて、後から参照できるようにしておきます。

    重要
    重要:

    このコピー作業は、データベースそれ自身を不正に書き換えられないようにするために重要な作業となります。データベースが不正に書き換えられたりしないよう、一度だけ書き込むことのできるメディアを使用しておくことをお勧めします。また、監視したいコンピュータ内には、データベースを 残してはなりません

22.3 ローカルの AIDE チェック

ファイルシステムのチェックを行うには、下記のようにして行います:

  1. データベースのファイル名を変更します:

    root # mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
  2. 何らかの設定変更を行った場合は、 AIDE のデータベースを再準備して、新しく生成されたほうのデータベースに移動を行う必要があります。この時点でのデータベースをバックアップしておいてもよいでしょう。詳しくは 22.2項 「AIDE データベースの設定」 をお読みください。

  3. あとは下記のコマンドを実行すると、チェックを行うことができます:

    root # aide --check

何も出力が表示されない場合は、全く何も問題が見つからなかったことを表わしています。 AIDE が何らかの変更を検知すると、下記のように概要を表示します:

root # 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 オプションをつけて冗長に出力するように指定してください。上記の出力例の場合、冗長に出力すると下記のようになります:

root # 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 ファイルのタイムスタンプが変わっていることが分かります。

22.4 システムから独立したチェック

AIDE 自身が不正に書き換えられたりする問題を避けるため、 AIDE のプログラムを信頼できるソースから取得して、実行しておくこともできます。これにより、攻撃者が AIDE 自身を書き換えて、警告を出さないようにしてしまう問題を回避することができます。

AIDE 自身を信頼できるソースから実行するには、 AIDE をインストール済みのシステム内で実行するのではなく、レスキューシステム内から実行しなければなりません。 openSUSE Leap では、容易に拡張可能なレスキューシステムを提供していますので、ここから簡単に AIDE を実行することができます。

レスキューシステムを起動する前に、 2 種類のパッケージを用意する必要があります。これらはシステムに対するドライバ更新ディスクと同じ書式で設定することができます。 linuxrc の設定方法に関する詳細は、 https://ja.opensuse.org/SDB:Linuxrc をお読みください。下記の手順では、実現可能な方法のうちの 1 つを説明しています。

手順 22.1: AIDE を利用したレスキューシステムの起動
  1. まずは別のマシンに FTP サーバを準備します。

  2. FTP サーバ内のディレクトリに、 aidemhash の各パッケージを配置します。たとえば /srv/ftp/ のディレクトリに配置するものとします。下記の ARCHVERSION の箇所は、実際のアーキテクチャ名とバージョン文字列に置き換えて実行してください:

    root # cp DVD1/suse/ARCH/aideVERSION.ARCH.rpm /srv/ftp
    root # cp DVD1/suse/ARCH/mhashVERSION.ARCH.rpm /srv/ftp
  3. レスキューシステムで必要な起動パラメータを記述した、 /srv/ftp/info.txt というファイルを作成します。下記の内容で保存してください:

    dud:ftp://ftp.example.com/aideVERSION.ARCH.rpm
    dud:ftp://ftp.example.com/mhashVERSION.ARCH.rpm

    ここで、 FTP サーバのドメイン名はお使いの環境に合わせて変更してください。また、 ARCHVERSION の箇所は、実際のアーキテクチャ名とバージョン文字列に置き換えて実行してください。

  4. まずはお使いのシステムを再起動して、 DVD からレスキューシステムを起動して AIDE を開始します。このとき、起動パラメータには下記を指定します:

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

    このパラメータにより、 linuxrcinfo.txt ファイルを読み込んで、その内容をパラメータとして取り込むようになります。

レスキューシステムが起動したあとは、通常どおり AIDE プログラムを使用することができます。 なお、レスキューシステムは日本語に対応していないため、表示は全て英語になりますので、あらかじめご了承ください。

22.5 さらなる情報

AIDE に関する情報は、それぞれ下記の場所にあります:

  • AIDE の Web ページ: http://aide.sourceforge.net

  • 設定ファイル /etc/aide.conf 内のコメント文 (英語)

  • aide パッケージをインストールしてある環境下であれば、 /usr/share/doc/packages/aide 以下にもいくつかの文書があります。

  • AIDE のユーザ向けメーリングリストが、 https://www.ipi.fi/mailman/listinfo/aide で提供されています。

このページを印刷