KITA Eng.

北海道でサーバー技術者として歩み出したひとが綴るblog。

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日分)。
何か引っかかると「解析結果ログ」という字句が入るので、それを拾うことで、検出されたかを判定するようにしています。