はじめに
本記事はLinuxのセキュリティ対策として、ホストの侵入検知について記載しています。
ホストの侵入検知の目的は、ルートキットの存在やマルウェアを検知することです。
本記事では以下のツール(※)を扱います。
- chkrootkit
- rkhunter
- maldetect
(※)バージョンについては本記事執筆時点の最新バージョンを使用
chkrootkit
chkrootkitはルートキットの存在を検知するためのツールです。
CentOSの標準リポジトリには、Ubuntuのようにchkrootkitのパッケージは含まれていません。
chkrootkitは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時に実行し、メールで通知します。
0 3 * * * (cd /usr/local/chkrootkit; ./chkrootkit 2>&1 | mail -s "chkrootkit output" root)
rkhunter
rkhunterもルートキットの存在を検知するためのツールです。
chkrootkitと同じくCentOSの標準リポジトリには含まれてはいないため、rkhunterをsourceforge.netからダウンロードします。あるいは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を参照。
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等を利用することで、セキュリティを向上することはできます。