おのたく日記 YouTubeも始めました→
2007-03-25(Sun) SSHでログインエラーしたIPアドレスをブロックする [長年日記]
■ [Security]SSHでログインエラーしたIPアドレスをブロックする
WebのどこかにSSHでエラーしたIPアドレスをブロックするというスクリプトが出ていたんだけど、場所を忘れてしまったので、自分で作ってみた。
#!/bin/sh
AUTHLOG=/var/log/auth.log
BLOCKLIST=/tmp/blocklist.$$
trap "rm -f $BLOCKLIST" 0 1 9 15
REG_DROP="^DROP 0 -- "
# 既にiptableにDROPとして登録済みのリストを作る
iptables -n -L INPUT |egrep "$REG_DROP"|sed "s/$REG_DROP\([^ \/]*\).*0.0.0.0\/0/\1/" >$BLOCKLIST
grep "Invalid user" $AUTHLOG |sed "s/^.*Invalid user .* from //"|uniq -c|awk '$1>20{print $2}'| egrep -v ^192.168. |while read IP DAM ;do
#連続して10回以上ログインミスしているIPアドレスを見つけた
if ! grep "$IP" $BLOCKLIST >/dev/null ;then
#新規だった
echo "New over 20 Invalid user error" $IP
iptables -A INPUT -s "$IP" -j DROP
echo "$IP" >>$BLOCKLIST
fi
done
exit 0
これをcronで一日何回か回せば、10回以上認証エラーを発生したIPアドレスとの通信を遮断できる筈…
★Rebootしたりiptables -Fして、iptablesがリセットされたらauth.logに出てこない古いIP Addressはリストから無くなってしまうので、必要ならばShutdown時にiptableを保存して置く必要があるよ
|