AIDEの戻り値について。

はじめに

AIDEの簡単な操作はAIDEを使ってファイルの改竄検知を行う。で行いました。 今回はaideコマンド実行時の戻り値について「aide(1) - Linux man page」を参考に試してみたことをまとめてみました。


## ヘルプ : -h, --help `-h`オプションを付与することでコマンドオプションについて確認ができます。
$ sudo aide -h
Aide 0.14 

Usage: aide [options] command

Commands:
  -i, --init		Initialize the database
  -C, --check		Check the database
  -u, --update		Check and update the database non-interactively
      --compare		Compare two databases

Miscellaneous:
  -D, --config-check	Test the configuration file
  -v, --version		Show version of AIDE and compilation options
  -h, --help		Show this help message

Options:
  -c [cfgfile]	--config=[cfgfile]	Get config options from [cfgfile]
  -B "OPTION"	--before="OPTION"	Before configuration file is read define OPTION
  -A "OPTION"	--after="OPTION"	After configuration file is read define OPTION
  -r [reporter]	--report=[reporter]	Write report output to [reporter] url
  -V[level]	--verbose=[level]	Set debug message level to [level]
$ echo $?
0

当然ですが戻り値は0です。


# 初期化 : -i, --init ```bash:初期化 $ sudo aide -i

AIDE, version 0.14

AIDE database at /var/lib/aide/aide.db.new.gz initialized.


```bash:戻り値
$ echo $?
0

データベースの初期化は成功すると戻り値として0を返します。


# チェック : -C, --check チェックオプションの場合はいくつかのパターンが考えられます。
## 変更なし チェックした対象に異常(変更)がなかった場合。
$ sudo aide --check

AIDE, version 0.14

### All files match AIDE database. Looks okay!
$ echo $?
0

この場合は正常ということになるので戻り値として**「0」**を返します。


## ファイル追加 知らないファイルが追加された場合を想定して`echo`コマンドでチェック対象下にファイルを作成します。
$ echo test > /root/aide-test.txt

追加したらチェックしてみます。

$ sudo aide --check
AIDE found differences between database and filesystem!!
Start timestamp: 2017-05-09 12:40:40

Summary:
  Total number of files:  60777
  Added files:      1
  Removed files:    0
  Changed files:    1


---------------------------------------------------
Added files:
---------------------------------------------------

added: /root/aide-test.txt

---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /root

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


Directory: /root
  Mtime    : 2017-05-09 12:39:22              , 2017-05-09 12:40:31
  Ctime    : 2017-05-09 12:39:22              , 2017-05-09 12:40:31

先ほど追加したaide-test.txtが__added__として検知されています。 また、追加したのが/root配下だったので/rootが__changed__となってディレクトリもチェック対象となっているのがわかります。 これによってわかることは、誰かが侵入した痕跡を無くすためにファイルを削除しても、ディレクトリのタイムスタンプが変更されるため検知ができるということです。

$ echo $?
5

この場合、戻り値は__「1(added)+4(chenged)=5」__となります。


## ファイル変更 ファイルの改竄を想定してファイルの内容を書き換えてチェックしてみました。
$ sudo aide --check
AIDE found differences between database and filesystem!!
Start timestamp: 2017-05-09 12:37:04

Summary:
  Total number of files:  60777
  Added files:      0
  Removed files:    0
  Changed files:    2


---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /root
changed: /root/aide-test.txt

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


Directory: /root
  Mtime    : 2017-05-09 12:35:38              , 2017-05-09 12:36:58
  Ctime    : 2017-05-09 12:35:38              , 2017-05-09 12:36:58

File: /root/aide-test.txt
  Size     : 0                                , 10
  Mtime    : 2017-05-09 12:35:38              , 2017-05-09 12:36:58
  Ctime    : 2017-05-09 12:35:38              , 2017-05-09 12:36:58
  Inode    : 280877                           , 280993
  MD5      : 1B2M2Y8AsgTpgAmY7PhCfg==         , zWxWuS8Dv/wfLTIjnNCPTg==
  RMD160   : nBGFpcXp/FRhKAiXfuj1SLIljTE=     , 6MFLupcRlOJ+rJvp/EhoDXy0sok=
  SHA256   : 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NM , ZS6XNHjHYKkKpR7In82NBLUv5A6kKDKc

ここで変更があったのは変更したファイルaide-test.txtとそのファイルが存在するディレクトリ/rootになります。

$ echo $?
4

戻り値は__「4(changed)」__となります。2箇所だから「あれ?4(changed)+4(changed)=8じゃないの?」と思ったりもするかもしれないですが、あくまでも戻り値は変更箇所があったということを示すだけですので1つでも2つでも、それ以上でも数は関係ありません。 でないと戻り値でのチェックができなくなってしまいますよね。


## 削除 今度は知らないうちにファイルが削除されていた場合についてです。
$ rm /root/aide-test.txt 
rm: remove regular file ‘/root/aide-test.txt’? y
[root@ip-10-0-0-205 aide]# aide --check
AIDE found differences between database and filesystem!!
Start timestamp: 2017-05-09 12:29:56

Summary:
  Total number of files:  60777
  Added files:      0
  Removed files:    1
  Changed files:    1


---------------------------------------------------
Removed files:
---------------------------------------------------

removed: /root/aide-test.txt

---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /root

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


Directory: /root
  Mtime    : 2017-05-09 12:26:38              , 2017-05-09 12:29:49
  Ctime    : 2017-05-09 12:26:38              , 2017-05-09 12:29:49

aide-test.txtがremovedでその削除したディレクトリである/rootがchangedになります。

$ echo $?
6

ファイルが削除されたので__「2(removed)+4(changed)=6」__となります。


# おわりに とりあえずよく利用するオプションの戻り値を確認しました。 これを使ってスクリプトなんかを作成し、cronで実行したりなんかするといいのかなと思います。