ファイル改ざん検知システム(AIDE)を構築してみる

運用の中の担当のunoです。

最近、セキュリティ向上の一環として、サーバ中にファイル改ざんチェックをすることが必須な要件や、クラック検知をしたい等、ファイル改ざん検知をさせたいシチュエーションがありました。
今回は、比較的簡単にLinux環境で構築できる、ファイル改ざん検知システムの一つであるAIDEの構築・設定方法をご紹介します。

コーポレートサイトなどの会社の顔となるWebコンテンツの改ざんチェックで、費用をあまりかけずに利用したいなどの用途で使えると思います。

 

AIDEとは

AIDEとはAdvanced Intrusion Detection Environment の略で、オープンソースの改ざん・侵入検知システムです。

おもにサーバホストのファイル改ざん・侵入検知の機能を有しています。

この分野では『Tripwire』が最も有名です。

AIDEの魅力としては、CentOSやRedhatであれば、外部レポジトリを用いることなく、オリジナルのパッケージが使えることです。

AIDEのインストール方法

今回のサーバはCentOS6 64bit 環境で、CentOSのオリジナルパッケージが存在するので、これを用いてインストールします。

インストールコマンドは以下の通りです。

 

aideのインストールコマンド

 

 

設定ファイル

AIDEの編集ファイルは以下のファイルに設定されています。

各種設定内容を変更する場合はこのファイルを編集しましょう。

 

設定ファイルの編集方法

詳細は、『/etc/aide.conf』の中身に詳細の設定情報が記載されていますので、割愛しますが、簡単には以下のように記載します。

 

改ざん検知させたいディレクトリを指定する場合

上記の場合、『/root』と『/var/www/html』 配下のディレクトリをチェックするようになります。

ディレクトリの記載の後ろにつく『NORMAL』 とは、どのようなアルゴリズムで検査するかを定義しています。

実際の定義を見てみましょう

設定ファイルの中にHELPが書いてあり、それを読み解くと、、

『 NORMAL』は『R+rmd160+sha256』を検査するようです。

『R』は『p+i+n+u+g+s+m+c+acl+selinux+xattrs+md5』とあります。

纏めると、以下を検査することになります。

p パーミッション
i i-node
n リンク番号
u ユーザー
g グループ
s サイズ
m mtime(内容の最終更新日?)
c ctime(属性の最終更新日?)
acl アクセスコントロール
selinux SELinuxセキュリティ・コンテキスト
xattrs 拡張ファイル属性
md5 md5チェックサム
rmd160 rmd160チェックサム
sha256 sha256チェックサム

 

改ざん検知させたくないディレクトリを除外して指定する場合

procとかsysなど、システムで動的に生成するディレクトリなどは、除外しておくとよいでしょう。

ここのチューニングが肝になるので、要件とマッチするか調整しつつ設定します。

 

 

主なAIDEコマンド

ここでは主に使用するAIDEのコマンドに関して軽く解説します。

 

監視対象のファイル・ディレクトリのデータベースファイル作成コマンド

監視対象のファイル・ディレクトリに関するデータベースを作成します。このデータベースファイルを用い、比較して更新等がなかったか確認する重要なファイルです。

 

コマンド形式

 

コマンド実行例

コマンドを実行すると/etc/aide.confで定義した場所に保存されますので、保存場所を変更したい場合は適時設定に合わせてください。

 

定義箇所(/etc/aide.conf)

上記の場合 、aide -i コマンドを実行すると、/var/lib/aide/aide.db.new.gzへ作成されたデータベースファイルが保存されます。

比較する元データということで、非常に重要なファイルのため、サーバ内だけで保存せず異なる場所へ保存することを推奨します。

 

 

監視対象のファイル・ディレクトリのデータベースファイルの更新コマンド

作成コマンドを実行しても、参照するデータベースファイルへ自動的には置き換わりません。

手動で、aideが参照するデータベースファイルと置き換える必要があるため、以下のコマンドを実行し更新行います。

 

コマンド形式

参照するデータベースファイルは、/etc/aide.confで定義しておりますので、適時設定に合わせてください。

 

定義箇所(/etc/aide.conf)

上記の場合 、チェックコマンドを実行すると、/var/lib/aide/aide.db.gzのデータベースファイルを参照して各種チェックを実施します。

 

 

改ざん・侵入チェックコマンド

監視対象のファイル・ディレクトリをチェックします。

コマンド形式

 

コマンド実行例(更新されたファイル等が無い場合)

 

コマンド実行例(更新されたファイル等がある場合)

上記は、『/root/test』というファイルを作成し、チェックコマンドを実行した結果です。
このケースでは、『/root/test』と『/root』に更新された記録があることを検知しております。
問題の有無に関しては、状況によって変わるため、結果はあくまでも判断材料の一部として捉え、総合的に問題が無いか判断してください。

 

 

改ざんチェックスクリプトの作成と設定

aideを設定しても、定期的にチェックコマンドを実行しなければ、監視はしませんし役に立ちません。
今回は以下の要件を元に定期的にチェックする設定を行います。

 

改ざんチェックスクリプト

ファイル名 /usr/local/sbin/aide_scan.sh
オーナー設定 root
グループ設定 root
パーミッション 700
動作概要 “aide -c “コマンドを実行し、実行結果をsyslogへ転送する。
Syslogで転送する場合、タグ名は”aide_scan”、syslogのpriorityは”local6.notice”とする

 

改ざんチェックスクリプト

 

改ざんチェックスクリプトの実行例

 

改ざんチェックスクリプトのsyslog出力例(/var/log/messages)(更新されたファイル等が無い場合)

 

改ざんチェックスクリプトのsyslog出力例(/var/log/messages)(更新されたファイル等がある場合)

 

改ざんチェックスクリプトの定期実行設定例(/etc/crontabの設定)

上記コマンドを設定したら定期的にチェックするようcronに設定します。今回の場合は”/etc/crontab”へ毎時15分に実行する設定を施します。

 

いかがだったでしょうか。

今回はsyslogへの転送でしたが、問題があればメール転送するなど、カスタマイズ方法はいっぱいあります。

また、コーポレートサイトの改ざんチェックにも容易に導入が可能ですのでぜひ試してみてください。

 

なお、このような改ざんチェックは設定よりも日々の運用監視が大切ですので、導入される場合は、運用後の方策についてもしっかりと検討してみてください。おそらく、導入よりも、設定後の運用のほうがチューニングなどで時間がかかると思います。

 

 

 

 

 

Share on LinkedIn
LINEで送る
Pocket

uno

uno

cobaltサーバやbluequartz大好き、bash大好きなclaraの中の人です。