shell 编程实战拒绝恶意IP登录

当服务器对外提供服务时,每天会有大量试图登录服务器的行为。难免会猜出密码,可以使用shell脚本,将自动尝试登录服务器密码错误超过设定次数的IP列表加入到防火墙配置中。
shell脚本实现服务器拒绝恶意IP登录,编程思路:
登录服务器日志/var/log/secure;
检查日志中认证失败的行为并打印其IP地址;
将IP地址写入防火墙;
禁止该IP访问服务器SSH 22端口;
将脚本加入crontab实现自动禁止恶意IP。
shell脚本实现服务器拒绝恶意IP登录代码:
#!/bin/bash
#Auto drop ssh failedIP address
#By author tang.com2018
#Define Path variables
SEC_FILE=/var/log/secure
IP_ADDR=`awk '{print$0}' /var/log/secure|grep -i "fail" |egrep -o"([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -nr|uniq -c|awk '$1>=15 {print$2}'`
IPTABLE_CONF=/etc/sysconfig/iptables
echo
cat <<EOF
++++++++++welcome touse ssh login drop failed ip+++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
EOF
echo
for((j=0;j<=6;j++));do echo -n "-";sleep 1;done
echo
for i in `echo$IP_ADDR`
do
cat$IPTABLES_CONF |grep $i >/dev/null
if  [ $? -ne 0 ];then
sed-i "/lo/a -A INPUT -s $i -m state --state NEW -m tcp -p tcp --dport 22 -jDROP" $IPTABLE_CONF
fi
done
NUM=`find/etc/sysconfig/ -name iptables -a -mmin -1|wc -l`
if [$NUM -eq 1 ];then
/etc/init.d/iptablesrestart
fi