Linuxセキュリテイ対策　ホストの侵入検知（chkrootkit/rkhunter/maldetect）

# はじめに
本記事はLinuxのセキュリティ対策として、ホストの侵入検知について記載しています。

ホストの侵入検知の目的は、ルートキットの存在やマルウェアを検知することです。

本記事では以下のツール（※）を扱います。

- chkrootkit
- rkhunter
- maldetect

（※）バージョンについては本記事執筆時点の最新バージョンを使用

## chkrootkit
chkrootkitはルートキットの存在を検知するためのツールです。
CentOSの標準リポジトリには、Ubuntuのようにchkrootkitのパッケージは含まれていません。

chkrootkitは[chkrootkit.org](http://www.chkrootkit.org/)の[Download](http://www.chkrootkit.org/download/)からダウンロードできます。
本記事ではCentOS 7を例にchkrootkitの導入手順について解説します。

なお、chkrootkitは以下のコマンドを使用します。既に改ざんされた後では意味がないため、導入時には考慮が必要です。また、chkrootkitはrootkitを検出しても自動的に対処する機能はないため、検出後は手動で対応する必要があります。

次のコマンドは、chkrootkitスクリプトによって使用されます。

**awk、cut、echo、egrep、find、head、id、ls、netstat、ps、strings、sed、uname**

### chkrootkitの導入

- 必要なパッケージのインストール
`# yum groups install -y "Development Tools"`
`# yum install -y wget glibc-static`

- chkrootkitのダウンロード
`# wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz`

- 解凍
`# tar xzvf chkrootkit.tar.gz`
- make
`# cd chkrootkit-0.53`
`# make sense`

- シンボリックリンク作成
`# cd ../; mv chkrootkit-0.53/ /usr/local/ `
`# ln -s /usr/local/chkrootkit-0.53/ /usr/local/chkrootkit`

### chkrootkitの実行

- ルートキットの検出   
`# cd /usr/local/chkrootkit`   
`# ./chkrootkit`
- ルートキットの検出（指定したディレクトリを対象に実行）    
`# ./chkrootkit -r ＜ディレクトリ＞`

cronで設定することで定期的に検査を行うことができます。
以下は毎日3時に実行し、メールで通知します。

```console
0 3 * * * (cd /usr/local/chkrootkit; ./chkrootkit 2>&1 | mail -s "chkrootkit output" root)
```

## rkhunter
rkhunterもルートキットの存在を検知するためのツールです。
chkrootkitと同じくCentOSの標準リポジトリには含まれてはいないため、[rkhunter](http://rkhunter.sourceforge.net/)を[sourceforge.net](https://sourceforge.net/projects/rkhunter/files/rkhunter/1.4.6/)からダウンロードします。あるいはEPELリポジトリからインストールすることができます。

### rkhunterの導入
- rkhunterのダウンロード   
`# wget https://sourceforge.net/projects/rkhunter/files/rkhunter/1.4.6/rkhunter-1.4.6.tar.gz`
- 解凍
`# tar xzvf rkhunter-1.4.6.tar.gz`

- rkhunterのインストール
`# cd rkhunter-1.4.6`
`# ./installer.sh --install`

EPELリポジトリからインストールする場合は、以下の手順でインストールできます。

- epel-releaseのインストール   
`# yum install -y epel-release`
- rkhunterのインストール   
`# yum install rkhunter `

### rkhunterの実行
rkhunterの動作設定は`/etc/rkhunter.conf`で設定し、デフォルトのデータベースディレクトリは`/var/lib/rkhunter/db`になります。ルートキットの検出を実行すると、` /var/log/rkhunter.log`ファイルにログが出力されます。

- rkhunterのアップデート   
`# rkhunter --update`
- コマンドの実行ファイルの状態を更新   
`# rkhunter --propupd`
-  ルートキットの検出（`--check`でルートキットの検知を実行、`-skip-keypress`でEnterの入力を行わない、`--report-warnings-only`でコマンドの結果について警告のみ表示）   
`# rkhunter --check --skip-keypress --report-warnings-only`

## maldetect（Linux Malware Detect）
maldetect（Linux Malware Detect）は**GNU GPLv2**のライセンスのもとリリースされている無料のマルウェア検知ツールです。公式ブログは[R-FX NETWORKS](https://www.rfxn.com/projects/linux-malware-detect/)を参照。

maldetectの特徴は以下になります。

- マルウェア検知用のシグネチャ（※）の自動更新
- 検出エンジンにオープンソースのアンチウイルスソフトウェアとしてClamAVを採用
- 検知対象とするファイルシステムの情報をデータベース化し、検査した情報と比較して改ざんを検知する

（※）特定のマルウェア検体に共通するバイトシーケンスのこと

### maldetectの導入

- ダウンロード   
`# wget http://www.rfxn.com/downloads/maldetect-current.tar.gz`
- 解凍   
`# tar xzvf maldetect-current.tar.gz `
- インストール   
`# cd maldetect-1.6.4/`   
`# ./install.sh`

maldetectによってインストールされたcronjobは`/etc/cron.daily/maldet`に配備されます。定期的にスキャンおよびシグネチャのアップデートを行う様に設定されます。

### maldetectの実行
maldetectの動作設定は何も指定しない場合、`/usr/local/maldetect/conf.maldet`にインストールされます。

- アップデート   
`# maldet --update`
- マルウェアのスキャン実行（指定したディレクトリを対象に実行）    
`# maldet --scan-all ＜ディレクトリ＞`

# おわりに
サーバを構築して運用する場合は、システムを管理する責任があります。

システム管理は知識の集合です。無理にお金をかけなくてもOSS等を利用することで、セキュリティを向上することはできます。