2011年11月11日金曜日

ログから特定IPをiptablesで拒否るスクリプト

毎日毎日、某国から大量にSFTPサーバに色んな名前でアクセスしてくる。
公開鍵認証を使っているから、大丈夫なんだろうけどちょっとログ見ていると
腹立たしいので、ログから指定回数のアクセス失敗したIPはiptablesで
拒否する設定をするようにシェルスクリプト書いてみた。

うまくいくかは今日から運用で見てみようかと。

一応、1時間おきに登録したIPを開放してみるスクリプトも書いてみたので
それはまた後日。

------------------

#!/bin/sh
LOG_PATH="/var/log/messages"
Limit="10"

#Checking Rhost which used unknown user.
LIST=`grep "Invalid user" $LOG_PATH|awk -F "from " '{print $2}'|sort|uniq|grep -v '^$' `

for rhost in $LIST
do
COUNT=`grep "Invalid user" $LOG_PATH|grep -w "$rhost"|wc -l`

if test `grep -w "$rhost" chkAttackHost.log`
then
echo "Already Registered : "$rhost
else
if [ $COUNT -ge $Limit ]
then
echo "Attack Detected : "$COUNT " times ["$rhost"]"
echo $rhost >> chkAttackHost.log
`/sbin/iptables -I INPUT -s $rhost -j DROP`
fi
fi
done

0 件のコメント:

コメントを投稿