ログ分析に関する小技
サーバーへの攻撃は常時発生している。いち早く異常なアクセスを検知することが大切である。
さらに検知した内容をメールで送信するなどして一刻も早く対処すべきことがあれば実行しなくてはならない。
そのために役立つコマンドがdateコマンド
dateコマンドのオプションに過去の時間を設定するものがある。
例えば
date –date “10min ago”
で現在時刻から10分前の時間を指定できる。
これによって、直近の10分間にあったアクセスを抽出することが可能になる。
状況に合わせ、5分にするか15分にするかは判断すればよい。
さらにcronによる自動実行とメール送信を併せればそれなりの対応が可能であろう。
スクリプトの詳細は割愛するが、注意が必要なのは
cronにスクリプトのオプションとしてdateコマンドを設定する場合、
%をエスケープしないと正しく動作しないことである。
仮に、5分間のつもりで
*/5 * * * * /usr/bin/scriptname.sh date --date "5min ago" "+%Y-%m-%d%H:%M"
とすると、エラーとなる。
%の前に\を入れてエスケープしないと正しく解釈されないようである。
単独のスクリプトとして実行するのであれば問題はないが、ちょっとした落とし穴かもしれない。