Techniical-support

AIDEの最新版をソースインストールしてみた

皆さんこんにちは。構築担当の川合です。

今回は、AIDEの最新版をソースインストールしてみたのでその内容を記事にしたいと思います。
AIDEを触る機会があり、yum で提供されているバージョンより新しいものがソースで提供されているようなので試しにインストールしてみたお話です。

yumで提供されているもので事足りるようで、あまりソースでインストールされる事もないのか情報が少なく苦労しました。

一応インストールと簡単な動作確認は可能でしたが、基本yumで提供されているものを利用されることをお勧めします。

概要

AIDE(Advanced Intrusion Detection Environment)とは、ホスト型侵入検知システムでファイルの改ざん検知で主に利用されているようです。

改ざん検知では、よくTripwireを利用するのですがAIDEはあまり触った事がありませんでした。

Tripwireに比べると設定ファイルや操作が比較的簡単だなぁという印象です。

初めに記載した通り基本的にOSに付属するパッケージ内に存在するので、Tripwireのようにepelリポジトリを追加せずにインストールする事が可能です。
※外部リポジトリの利用が制限される場合には便利かと思います

CentOS7系では、0.15.1 を導入する事が出来ます。
CentOS8系では、0.16 が導入可能です。

よくよく調べてみると、Githubにて0.16.2 が配布されておりこれが最新バージョンです。

インストール準備

今回は、CentOS7.9 の環境で検証しています。

ファイルはGithubにあるので、ダウンロードしてファイルを解凍します。
その後、作成されたディレクトリに移動して configure を実行します。
※解凍して作成されたディレクトリ内に、INSTALL というファイルがあり簡単にインストールについての記載があります
※基本的に、./configure make make install で大丈夫みたいです

cd /usr/local/src/

wget https://github.com/aide/aide/releases/download/v0.16.2/aide-0.16.2.tar.gz

tar zxvf aide-0.16.2.tar.gz

cd aide-0.16.2/

./configure

エラー無く完了すればいいのですが、エラーが発生します。
そしてこのエラーが悩まされる原因となりました。

結果一部抜粋
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes

configure: error: You don't have zlib properly installed. Install it or try --without-zlib.

zlib のパッケージがインストールされていません。
zlibをインストールするか、もしくは--without-zlib を利用してzlibを使わないようにとエラーが表示されます。

エラー解決に向けて

zlibのパッケージがインストールされていないとエラーが出ていますが、既にzlibのパッケージはインストール済みになります。
抜粋した結果にも貼っていますが、エラーの前にzlib のチェックがOKになっていて上手く読み込めていないのでは?と思います。

rpm -qa |grep zlib
zlib-devel-1.2.7-18.el7.x86_64
zlib-1.2.7-18.el7.x86_64

※zlib-devel もインストール済み

仮に上手く読み込めていないと仮定して、オプションを追加して再度configureしてみます。

./configure --without-zlib
configure: error: You need to have libgpg-error.a installed to use libgcrypt.

今度は、libgcrypt と libgpg-error というパッケージが足りないとエラーが出ます。
では、指定のパッケージを追加でインストールしてみます。
※こちらはインストールされていませんでした

yum install libgcrypt-devel

依存性を解決しました

=====================================================================================================================
 Package                            アーキテクチャー       バージョン                     リポジトリー          容量
=====================================================================================================================
インストール中:
 libgcrypt-devel                    x86_64                 1.5.3-14.el7                   base                 129 k
依存性関連でのインストールをします:
 libgpg-error-devel                 x86_64                 1.12-3.el7                     base                  16 k

トランザクションの要約
=====================================================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

総ダウンロード容量: 145 k
インストール容量: 244 k
Is this ok [y/d/N]:

※依存関係で2つのパッケージが一緒にインストールされました

これで解決したと思ったのですが、エラーは解消されず。
ここから、英語サイトを主に色々調べて検証する作業に入りました。

何とか解決?

同様にzlib が入っているにも拘わらずエラーが解消されない。
--without-zlib をオプションで指定しても結果インストール出来ない。

という英語のQAサイトは多数ありました。OS違うとすんなりとインストール出来た。
他にも追加のパッケージを導入すると出来た という内容もあり色々試してみましたがエラーが改善しませんでした。

AIDEのインストールと若干関係なさそうなQAで別のオプションを付与すると出来たという内容を見つけそれを実行したところ、エラーなくインストールが完了しました。
付与したオプションは、以下のものです。--disable-static というオプションを追加しました。

--disable-static        Disable static linking (lowers the security of aide)

最終的には、以下のコマンドで。

./configure --disable-static

その後のmakeとmake install は特に問題なく完了しました。

make install

make  install-am
make[1]: ディレクトリ `/usr/local/src/aide-0.16.2' に入ります
make[2]: ディレクトリ `/usr/local/src/aide-0.16.2' に入ります
 /bin/mkdir -p '/usr/local/bin'
  /bin/install -c aide '/usr/local/bin'
 /bin/mkdir -p '/usr/local/share/man/man1'
 /bin/install -c -m 644 doc/aide.1 '/usr/local/share/man/man1'
 /bin/mkdir -p '/usr/local/share/man/man5'
 /bin/install -c -m 644 doc/aide.conf.5 '/usr/local/share/man/man5'
make[2]: ディレクトリ `/usr/local/src/aide-0.16.2' から出ます
make[1]: ディレクトリ `/usr/local/src/aide-0.16.2' から出ます

コマンドもちゃんと実行する事が出来て、バージョンも正しく認識しています。
aide -v

Aide 0.16.2

Compiled with the following options:

WITH_MMAP
WITH_PCRE
WITH_LSTAT64
WITH_READDIR64
WITH_ZLIB
WITH_GCRYPT
CONFIG_FILE = "/usr/local/etc/aide.conf"

※ソースインストールしているので、設定ファイルの位置が少し違うので注意が必要です
※zlib も最終的にはちゃんと認識しているようです

動作確認

ソースインストールなので勿論設定ファイルは設置されていません。

ll /usr/local/etc/aide.conf
ls: /usr/local/etc/aide.conf にアクセスできません: そのようなファイルやディレクトリはありません

解凍したディレクトリ内にdoc というディレクトリがありその中に設定ファイルがあったので使ってみます。

ls -la doc/
合計 88
drwxr-xr-x 2 centos centos   134  1月  9 17:26 .
drwxr-xr-x 6 centos centos  4096  1月  9 17:27 ..
-rw-r--r-- 1 root   root    4354  1月  9 17:26 aide.1
-rw-r--r-- 1 centos centos  4351  5月 20  2019 aide.1.in
-rw-r--r-- 1 root   root    3664  1月  9 17:26 aide.conf
-rw-r--r-- 1 root   root   15641  1月  9 17:26 aide.conf.5
-rw-r--r-- 1 centos centos 15637  5月 20  2019 aide.conf.5.in
-rw-r--r-- 1 centos centos  3681  5月 31  2018 aide.conf.in
-rw-r--r-- 1 centos centos 25063  5月 20  2019 manual.html

では、aide.conf を指定の場所にコピーします。

cp doc/aide.conf /usr/local/etc/

設定ファイルも用意出来たので、一度初期化してみます。

aide --init
138:Error in restriction: L
Configuration error

138行目の記載は、以下の通りです。

!@@{TOPDIR}/src/(aide|core)$ L

最後のLが邪魔みたいですけれど、そもそも無視するディレクトリの記載部分なので一旦対象の行を削除してみます

再度、初期化を実行します。

DBG: md_enable: algorithm 7 not available
gcry_md_enable 7 failedStart timestamp: 2021-01-09 22:20:34 +0900 (AIDE 0.16.2)
AIDE initialized database at aide.db.new
Verbose level: 20

Number of entries:      126

---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

aide.db.new
  MD5      : d/hwYfqp7yAkH/MC9iIQpQ==
  SHA1     : bpcFSulHOkVnbheHs80LL0aLN2E=
  RMD160   : M1788TCTAtsnkBM+fINvtAsynh4=
  TIGER    : aQNazs/vOBRPTkT0A59cNw2ICdzkRQ5J
  SHA256   : LuJrarnnwyX2xwhwzZueUTvNLrfjUWMY
             dDtfFa8nWQ4=
  SHA512   : tXD/VQcD3qSDuZ99XJxqyqepegw9DFAO
             zdnwCBrTKQ/4p1AMldoHLngzf/riE6iw
             pjKtX3qcs0NRBdRQP60R9w==

End timestamp: 2021-01-09 22:20:34 +0900 (run time: 0m 0s)

生成された【aide.db.new】は、カレントディレクトリに生成されるようです。
なので、今いるディレクトリから設定ファイルに記載の置き場にファイルをコピーします。

cp aide.db.new doc/aide.db

ちなみに設定ファイル抜粋
@@define TOPDIR /usr/local/src/aide-0.16.2
database=file:@@{TOPDIR}/doc/aide.db

TOPDIRは、どうやらファイルを解凍したディレクトリになるようで
データベース置き場は、doc ディレクトリの下になる様子。

では、準備がこれで整ったのでファイルの改ざんをチェックしてみます。

aide --check

DBG: md_enable: algorithm 7 not available
gcry_md_enable 7 failedStart timestamp: 2021-01-09 22:20:58 +0900 (AIDE 0.16.2)
AIDE found differences between database and filesystem!!
Verbose level: 20

Summary:
  Total number of entries:      126
  Added entries:                0
  Removed entries:              0
  Changed entries:              1

---------------------------------------------------
Changed entries:
---------------------------------------------------

d >.       . : /usr/local/src/aide-0.16.2/doc

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------

Directory: /usr/local/src/aide-0.16.2/doc
  Size     : 134                              | 149

---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/usr/local/src/aide-0.16.2/doc/aide.db
  MD5      : d/hwYfqp7yAkH/MC9iIQpQ==
  SHA1     : bpcFSulHOkVnbheHs80LL0aLN2E=
  RMD160   : M1788TCTAtsnkBM+fINvtAsynh4=
  TIGER    : aQNazs/vOBRPTkT0A59cNw2ICdzkRQ5J
  SHA256   : LuJrarnnwyX2xwhwzZueUTvNLrfjUWMY
             dDtfFa8nWQ4=
  SHA512   : tXD/VQcD3qSDuZ99XJxqyqepegw9DFAO
             zdnwCBrTKQ/4p1AMldoHLngzf/riE6iw
             pjKtX3qcs0NRBdRQP60R9w==

End timestamp: 2021-01-09 22:20:58 +0900 (run time: 0m 0s)

チェック対象もデフォルトだと、ファイルを解凍したディレクトリ配下になるようです。
色々ファイルが生成されていますが、これをベースラインとしてデータベースを更新してみます。

aide --update

DBG: md_enable: algorithm 7 not available
gcry_md_enable 7 failedgcry_md_enable 7 failedStart timestamp: 2021-01-09 22:22:17 +0900 (AIDE 0.16.2)
AIDE found differences between database and filesystem!!
New AIDE database written to aide.db.new
Verbose level: 20

Summary:
  Total number of entries:      126
  Added entries:                0
  Removed entries:              0
  Changed entries:              1

---------------------------------------------------
Changed entries:
---------------------------------------------------

f =b       ..: /usr/local/src/aide-0.16.2/config.log

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------

File: /usr/local/src/aide-0.16.2/config.log
  Bcount   : 896                              | 512

---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/usr/local/src/aide-0.16.2/doc/aide.db
  MD5      : joA7mnQZ1LOOq0KN4N69Tg==
  SHA1     : 5DMvuH7POxO7rSYlOTiBXWORchE=
  RMD160   : Fdqe0ko71qJfbeh+uKU7DklM7Q4=
  TIGER    : 8nWa4BIdUl6yAHdtIVNNhMb3HaiBjfQ+
  SHA256   : tS5oX2I/Kv+1OvGCeNX2uczyn6GewskE
             y/+dIpOfl7Y=
  SHA512   : p0pSNTOImvN5F4IzAgRpc4DKKQdqIUKL
             rCpEqCshdbP+TuM31bHjTOOS+fQGEf6w
             ftstYXZFWaKlYUeHdq2i1Q==

aide.db.new
  MD5      : 80KYRhIJEMX5pAUZm5s/lA==
  SHA1     : L91DXHHYeoSU2vXA0/uSBx1L15Q=
  RMD160   : 1yfPh7NF4U7FiucJc/q9zKnSIZs=
  TIGER    : 6YJuXgxnSjs8bFSTZ9oaaCKhRRs4qm25
  SHA256   : va1+cMp6zsIiqJ0s0znon6iYYUJyy02w
             G18b7H86nxk=
  SHA512   : pAI3J41gwlGTj6lbbxzHDqYOpVC/Xrjy
             CWghNjrgNO3Zt+VkuxWnmr7lI+VLALbi
             9oRpTB5QAGAfILoAhAoaBw==

End timestamp: 2021-01-09 22:22:17 +0900 (run time: 0m 0s)

update オプションを付与するとカレントディレクトリに生成される【aide.db.new】のファイルが更新されるので、そのファイルをデータベース置き場のファイルに上書きします。
そうすることで今後のチェックで差分が出ていたものが適用され、今後新しいファイルが設置されるとそれらのファイルから差分がチェックされます。

上書きした後に、チェックすると以下の通りです。

aide --check
DBG: md_enable: algorithm 7 not available
gcry_md_enable 7 failedStart timestamp: 2021-01-09 22:22:39 +0900 (AIDE 0.16.2)
AIDE found NO differences between database and filesystem. Looks okay!!
Verbose level: 20

Number of entries:      126

---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/usr/local/src/aide-0.16.2/doc/aide.db
  MD5      : 80KYRhIJEMX5pAUZm5s/lA==
  SHA1     : L91DXHHYeoSU2vXA0/uSBx1L15Q=
  RMD160   : 1yfPh7NF4U7FiucJc/q9zKnSIZs=
  TIGER    : 6YJuXgxnSjs8bFSTZ9oaaCKhRRs4qm25
  SHA256   : va1+cMp6zsIiqJ0s0znon6iYYUJyy02w
             G18b7H86nxk=
  SHA512   : pAI3J41gwlGTj6lbbxzHDqYOpVC/Xrjy
             CWghNjrgNO3Zt+VkuxWnmr7lI+VLALbi
             9oRpTB5QAGAfILoAhAoaBw==

End timestamp: 2021-01-09 22:22:39 +0900 (run time: 0m 0s)

まとめ

色々と調べて検証してみた結果、一応インストールと簡単な動作確認までは実施する事は出来ました。
ただ、無理やり解決させている感じが否めないので普通にyumでインストールする事をお勧めします。
yum 版だと色んな参考サイトが出てくるので、設定ファイルの編集や後々の管理が楽になるかと思います。
※yum だとバージョンアップが楽になるのですが、そもそもそんなにバージョンアップ自体はされていないようです

もし私と同じように最新バージョンをソースインストールしようとされている方の参考になれば幸いです。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA