iLogScannerで攻撃兆候を検出
IPAから公開されている、ウェブサイトの攻撃兆候検出ツール iLogScannerを使って、NGINXのアクセスログを元にした攻撃兆候検出をサーバー上で行うようにしました。
環境
- Ubuntu 18.04 Server
- NGINX
- iLogScanner
準備
1. IPAのページからオフライン版iLogScannerをダウンロード
https://www.ipa.go.jp/security/vuln/iLogScanner/ からダウンロードできる。
ダウンロードの直リンクURLは、さくっとは拾えない。利用規約に同意したよのチェックがついているか確認される兼ね合いなのだろう。
頑張れば拾えるけど
ZIPで圧縮されているので、適当なディレクトリに展開しておく。
以下は、~/iLogScanner
として展開したものとしてコマンド類は記載。
2. JAVAの実行環境を用意
OpenJDK 11 以上がオフライン版iLogScannerの実行には必要。
Ubuntu 18.04 であれば、以下のコマンドでインストールできる。今回はサーバー上で解析させる(GUI不要)ので、headless版をインストール。
user@localhost:~$ sudo apt-get install openjdk-11-jre-headless
3. 試しに動かしてみる
オプション引数は、https://www.ipa.go.jp/security/vuln/iLogScanner/の利用方法(CUI版)のパラメーター一覧を参照。
user@localhost:~$ ./iLogScanner/1_bin/iLogScanner.sh mode=cui logtype=apache accesslog=/var/log/nginx/access.log outdir=/home/user/ reporttype=text level=detail
./iLogScanner/1_bin/iLogScanner.sh --help
とか打っても、何も出てくれない悲しみがある。
出力された解析結果の文字コードは、Shift_JISなので、nkf
で文字コード変換して表示するのが良いでしょう。
user@localhost:~$ nkf -w iLogScanner_20191100_000000.txt | less
4. 自動実行用のスクリプトを用意する
こんなスクリプトにして、CRONで1時間に1回ぐらいのペースで実行するようにした。
アクセスログが肥大化するにつれて実行時間が延びるのが辛み。
#!/bin/sh iLogScanner=/home/user/iLogScanner/1_bin/iLogScanner.sh LOGDIR=/home/user/logs/iLogScanner ACCESS_LOG=/var/log/nginx/access.log $iLogScanner mode=cui logtype=apache accesslog=$ACCESS_LOG outdir=$LOGDIR/ reporttype=text level=detail LOGFILE="${LOGDIR}/$(ls -1t $LOGDIR | head -n1)" if [ $(/usr/bin/nkf -w $LOGFILE | grep -c -E "^解析結果ログ") -ge 1 ];then /usr/bin/nkf -w $LOGFILE fi find ${LOGDIR} -daystart -mtime +7 -type f -exec rm {} \;
LOGDIR
にひたすら解析ログが溜まっていく(7日分)。
何か引っかかると「解析結果ログ」という字句が入るので、それを拾うことで、検出されたかを判定するようにしています。