↑日記で日々積み重ねた情報をトップの「わんこのページ」にまとめています。

おのたく日記 [RDF] 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を保存して置く必要があるよ

本日のPingbacks(全0件)

Google Web検索 on-o.com内を検索