| 
 
 | 
 | |||||||
  | |||||||||
巻き戻し中。
  | 
  | 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2012-09-12(水) 効果 [長年日記]
_ 
 中韓
ipfwのカウント見てると、結構な数をdropしてる。
アドレス帯域で見ると、中国は薄く広く。
韓国は特定のレンジからしつこく来てる。
一方、遮断はポートじゃなくてIP丸ごとなので、sshのブルートフォースを監視してるツールは日に1件以下しか検知しなくなった。
そりゃそうだ、大半の攻撃元はこの2国なんだし。
うざい百度のクローラーも当然バッサリw
_ 
 改良
先日のツール、exitの戻り値はAPNICの更新無しか、指定国の差分無しかが分かるのだけど、
cronのメールはもう少しメッセージがないと状況が分かりにくいので、標準出力にもうちょっと情報出すように改良。
【IP-country-BL.sh】
#!/bin/sh
WGET_CMD="/usr/local/bin/wget"
WGET_URL="http://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest"
TIME=`date +%Y%m%d%H%M%S`
LOG_DIR="/var/log/ipfwcount"
IFNAME="msk0"
IPFW_CMD="/sbin/ipfw"
C_DIR="/usr/local/etc/IP-country-list"
PERL_CMD="/usr/bin/perl"
# Parameter check
if [ "$1" = "" ];then
        echo 'Usage: IP-country-BL.sh [IPFW-number] [Country code(2byte)]'
        exit 1
fi
if [ "$2" = "" ];then
        echo 'Usage: IP-country-BL.sh [IPFW-number] [Country code(2byte)]'
        exit 1
fi
# Log dir check
if [ ! -d $LOG_DIR ];then
        mkdir $LOG_DIR
fi
# Set variable
IPFWNUM=`echo $1`
COUNTRY=`echo $2`
# File move
if [ -f $C_DIR/IP-country-BL_$COUNTRY.sh ];then
        mv $C_DIR/IP-country-BL_$COUNTRY.sh $C_DIR/IP-country-BL_$COUNTRY.sh.prev
else
        touch $C_DIR/IP-country-BL_$COUNTRY.sh
fi
# Get IP list from APNIC with checking diff
if [ -f $C_DIR/delegated-apnic-latest ];then
        $WGET_CMD -S $WGET_URL --spider -o $C_DIR/wgetlog.tmp
        TIME_STAMP=`grep "Last-Modified" $C_DIR/wgetlog.tmp|awk '{print $4$5$6$7}'`
        TIME_STAMP_LATEST=`grep "Last-Modified" $C_DIR/wgetlog.latest|awk '{print $4$5$6$7}'`
        echo "Current "$TIME_STAMP
        echo "Local "$TIME_STAMP_LATEST
        if [ $TIME_STAMP != $TIME_STAMP_LATEST ];then
                rm -f $C_DIR/delegated-apnic-latest
                $WGET_CMD -S $WGET_URL --spider -o $C_DIR/wgetlog.latest
                $WGET_CMD $WGET_URL -O $C_DIR/delegated-apnic-latest
        fi
else
        rm -f $C_DIR/delegated-apnic-latest
        $WGET_CMD -S $WGET_URL --spider -o $C_DIR/wgetlog.latest
        $WGET_CMD $WGET_URL -O $C_DIR/delegated-apnic-latest
fi
# Exec convert
$PERL_CMD $C_DIR/convert_cidr.pl < $C_DIR/delegated-apnic-latest > $C_DIR/CIDR.txt
/usr/bin/grep $COUNTRY $C_DIR/CIDR.txt|\
awk -v IPFWCMD=`echo $IPFW_CMD` -v IPFWNUM=`echo $IPFWNUM` -v IFNAME=`echo $IFNAME` '{
print IPFWCMD" add "IPFWNUM" deny ip from "$2" to any via "IFNAME
}' > $C_DIR/IP-country-BL_$COUNTRY.sh
# Check diff for each countries
/usr/bin/diff $C_DIR/IP-country-BL_$COUNTRY.sh $C_DIR/IP-country-BL_$COUNTRY.sh.prev
DIFF=`echo $?`
if [ $DIFF != "0" ];then
        echo "Updating IPFW with "IP-country-BL_$COUNTRY.sh
        $IPFW_CMD -a list |grep 00$IPFWNUM > $LOG_DIR/ipfwcount_$COUNTRY.log.$TIME
        $IPFW_CMD delete $IPFWNUM
        /bin/sh $C_DIR/IP-country-BL_$COUNTRY.sh
        exit 2
else
        echo "There is no difference for "$COUNTRY
fi
exit 0
[ツッコミを入れる]
| Tweets by RC31E | |||||||||
  | |||||||||
  | |||||||||


