Young Leaves

CentOS 8にAIDE を導入しファイルの改ざんをチェックする方法

今回はCentOS 8 にAIDE を導入しファイルの改ざんをチェックする方法について説明します。本記事は2020年6月9日の記事であり、現在ではOS のサポートが切れているため、手順などに違いがある可能性があるため、そのあたりを考慮の上確認をお願いします。

若葉 香月
9 June, 2020

実施環境

OS

CentOS 8 最小限のインストール

AIDE

0.16.11

AIDEとは

AIDE

AIDEは1999年にRami LehtiとPablo Virolainenによって開発されたホスト型のIDSです。AIDEはホストの構成等をデータベースに保存しておき、データベースに保存された状態と現在の状態を比較することで、ファイルやディレクトリの整合性をチェックします。ファイルやディレクトリが不正に改ざんされていないか、見に覚えのないファイルやディレクトリが存在する、ファイルが削除されている等を検知することができるため、ファイルやディレクトリの不正な改ざんの検知に役立つソフトウェアです。

AIDEのインストール

CentOS 8 ではパッケージからインストールする方法とソースファイルからインストールを行う方法があります。今回はパッケージからインストールを行います。

# AIDEをインストールする。
dnf -y install aide

aide.confの設定

AIDEの設定ファイルは/etc/aide.conf です。チェックする項目やファイル等を設定することができます。チェックする項目については、項目に「+」を指定する形で設定します。

#/etc/aide.confを編集する
vi /etc/aide.conf

■ aide.conf
データベースとログフォルダを変数で指定
@@define DBDIR /var/lib/aide@@define LOGDIR /var/log/aide
データベースファイルを指定
database=file:@@{DBDIR}/aide.db.gz
データベース作成時の出力先を指定
database_out=file:@@{DBDIR}/aide.db.new.gz
スキャン後のログファイル出力先を指定
report_url=file:@@{LOGDIR}/aide.log
チェックする項目を指定
#p:            パーミッション#i:            iノード#n:            リンクの数#u:            ユーザー#g:            グループ#s:            サイズ#b:            ブロックカウント#m:             mtime#a:             atime#c:             ctime#S:             拡張サイズ#acl:           ACL#selinux        SELinuxのセキュリティコンテキスト#xattrs:        ファイルの拡張属性#md5:           md5チェックサム#sha1:          sha1チェックサム#sha256:        sha256チェックサム#sha512:        sha512チェックサム
NORMAL = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha512
<省略>
CONTENT_EX = sha512+ftype+p+u+g+n+acl+selinux+xattrs
<省略>
チェックするファイルとチェック項目を関連付ける
/etc/hosts$      CONTENT_EX/etc/host.conf$  CONTENT_EX/etc/hostname$   CONTENT_EX/etc/issue$      CONTENT_EX<省略>------------------------------------------------------------

データベースの初期化

AIDEでスキャンを行うためには、初めにデータベースの初期化をします。

#データベースを初期化するaide --init
Start timestamp: 2020-06-09 04:25:06 -0400 (AIDE 0.16)AIDE initialized database at /var/lib/aide/aide.db.new.gz
Number of entries:      60752

The attributes of the (uncompressed) database(s):
/var/lib/aide/aide.db.new.gz  MD5      : jt4XY4uEPcuhPDDTdOdxPw==  SHA1     : vI1MFGowbSQClst69erThRhBNIg=  RMD160   : VBfFYTAWxOVcZtouP/alfqSiCic=  TIGER    : r+hqDsqnktYnMRQbitOHeamkoblf1jrS  SHA256   : Zc9NKy/Gyc2znMJqxrhGjS62gKYsCwaX             ENdgWmmN1ng=  SHA512   : Qr15PIFsAc/0b8cxCTZkWQZJ3vX79WX+             Z7fYqtuZSbp2L+oSnhpA0X0QALiFy2bZ             aPh3BLRAlitMMDI0apmi0w==
End timestamp: 2020-06-09 04:25:28 -0400 (run time: 0m 22s)
データベースが作成されたことを確認する
ls /var/lib/aide/

データベースの適用

データベースの初期化後、データベースを適用します。適用する名前は/etc/aide.confで指定したdatabaseの項目の名前を指定します。

# データベースを適用するcp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

ファイルシステムの改ざんをチェック

データベース適用後、AIDEでチェックを行います。

#ファイルの改ざんをチェックするaide --check
Start timestamp: 2020-06-09 04:44:18 -0400 (AIDE 0.16)AIDE found NO differences between database and filesystem. Looks okay!!
Number of entries:      60752

The attributes of the (uncompressed) database(s):
/var/lib/aide/aide.db.gz  MD5      : FL5r5T9A8m6SuMz7nj+MZw==  SHA1     : qdpuNd/eZ2oq1O9VZtzEDApytnI=  RMD160   : jZh7GGZqGZC8iY4f0YfCH6CeAsk=  TIGER    : SZ6sPDBglWRBSPorAznfwnyQuDCORiJd  SHA256   : u0Bri7Fb1Zzy4cqV/EMNwb+vuOucPgvK             7lu8+SMPIc0=  SHA512   : NZKCjCnFfpzf+hf38BzZWcNiPltjopWY             Wz5TINSRGxYeochS9fAfxZrieeYGTQwz             iqwdEZOMLAFARLLZcJIuEw==
End timestamp: 2020-06-09 04:44:39 -0400 (run time: 0m 21s)

改ざんが何もない場合は「AIDE found NO differences between database and filesystem. Looks okay!!」と表示されます。

次に改ざんがある場合の表示をします。今回は/etc/hosts を意図的に変更しチェックをします。

# /etc/hostsを変更後、ファイルの改ざんをチェックするaide --check
Entry /etc/hosts in databases has different attributes: b8020081d a8020081dStart timestamp: 2020-06-09 04:48:29 -0400 (AIDE 0.16)AIDE found differences between database and filesystem!!
Summary:  Total number of entries:      60752  Added entries:                0  Removed entries:              0  Changed entries:              1

Changed entries:
f   ...    .C..- : /etc/hosts

Detailed information about changes:
File: /etc/hosts  SHA512   : YobgpcvAMPey0QX1lK4K+5EFySF1xrB/ | mTQ22WqW13gkuAhKY2WwE2mB9D6bDdgn             9FRzTCPNC93+13Y5/lm2inC4x4rydlf2 | vnJlgr+NzyUecZHSR5yYe0D+Bf9Y3GE8             EcvonCf3pHuXj6lEmAjBnw==         | CIokmmN2JlTyu3X7y3qVRA==

The attributes of the (uncompressed) database(s):
/var/lib/aide/aide.db.gz  MD5      : FL5r5T9A8m6SuMz7nj+MZw==  SHA1     : qdpuNd/eZ2oq1O9VZtzEDApytnI=  RMD160   : jZh7GGZqGZC8iY4f0YfCH6CeAsk=  TIGER    : SZ6sPDBglWRBSPorAznfwnyQuDCORiJd  SHA256   : u0Bri7Fb1Zzy4cqV/EMNwb+vuOucPgvK             7lu8+SMPIc0=  SHA512   : NZKCjCnFfpzf+hf38BzZWcNiPltjopWY             Wz5TINSRGxYeochS9fAfxZrieeYGTQwz             iqwdEZOMLAFARLLZcJIuEw==
End timestamp: 2020-06-09 04:48:51 -0400 (run time: 0m 22s)

「AIDE found differences between database and filesystem!!」と表示された場合は、データベースの作成から何かしらの変更や改ざんがあるということです。改ざんを確認した場合、該当ファイルを確認し見に覚えのない変更等がないか確認してください。