iptable屏蔽和解禁ip和ip段

今天发现2个异常ip段,1天上万次访问,决定屏蔽它!
首先,判断是ip还是ip段,这里用shell中的grep来匹配ip段:
# ip : xxx.*.*.* \| xxx.0.0.0
count=`/bin/echo “$ip” | /bin/grep ‘[0-9]\{1,3\}[.][0|\*][.][0|\*][.][0|\*]’ | /usr/bin/wc -l`
如果是1,则是匹配上了。
同理:
# ip : xxx.xxx.*.* \| xxx.xxx.0.0
count=`/bin/echo “$ip” | /bin/grep ‘[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0|\*][.][0|\*]’ | /usr/bin/wc -l`
# ip : xxx.xxx.xxx.* \| xxx.xxx.xxx.0
count=`/bin/echo “$ip” | /bin/grep ‘[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}[.][0|\*]’ | /usr/bin/wc -l`
剩下的就是ip了。

ip2是ip对应的0段ip,如ip是xxx.*.*.*:ip2=`/bin/echo “$ip” | /usr/bin/awk -F’.’ ‘{print $1″.0.0.0″}’`
如果是ip xxx.*.*.* \| xxx.0.0.0格式,先判断是否已经屏蔽过了,如果没有,则屏蔽它:/sbin/iptables -I INPUT -s $ip2/8 -j DROP
如果是ip xxx.xxx.*.* \| xxx.xxx.0.0格式,屏蔽命令是:/sbin/iptables -I INPUT -s $ip2/16 -j DROP
如果是ip xxx.xxx.xxx.* \| xxx.xxx.xxx.0格式,屏蔽命令是:/sbin/iptables -I INPUT -s $ip2/24 -j DROP

如果是想解禁ip,则将-I修改为-D即可:/sbin/iptables -D INPUT -s $ip2/24 -j DROP