防止SSH爆力破解shell

最近公司国外服务器被无限尝试SSH登入

于是有了以下自动ip黑名单添加,及经过一断时间从黑名单中去ip的SSH脚本

#!/bin/bash
#用于防止ssh暴力破解

hr=8            #ip在黑名单中保存的次数 每次运行本定时任务hr减1
tryNum=15       #定时间内可以尝试的次数

denyIps=`grep 'sshd:.*#####' /etc/hosts.deny|awk '{print $1"="$2}'`
for tmp in $denyIps
do
        #echo tmp:$tmp
        ip=`echo $tmp| awk -F= '{print $1}'`
        num=`echo $tmp| awk -F= '{print $2}'`

        num=${num:5}
        #echo $ip:$num  
        if [ -z $num ];then #如果num为空,则黑名单不是脚本添加的,不做处理
                denyIpTemp=$ip$denyIpTemp"\n"
                #echo zz$denyIpTemp

        elif [ $num -gt 0 ];then #num自减1 
                denyIpTemp=$ip"\t#####"$((num-1))"\n"$denyIpTemp
                #echo ss$denyIpTemp
        fi

done
#echo $denyIpTemp
day=$(date +" %d %H:")   #获取当前时间       #查询当前小时内ip登入失败的次数
failStatus=`grep "$day.* Failed password for" /var/log/secure | awk '{print $(NF-3)}'|sort|uniq -c|sort -rn|awk '{print $1"="$2}'`
for i in $failStatus
do
        failNum=`echo $i| awk -F= '{print $1}'`
        failIp=`echo $i| awk -F= '{print $2}'`
        #echo $denyIpTemp 
        if [ $failNum -gt $tryNum ];then         #如果次数达到设定置,
                denyIp=`echo $denyIpTemp|grep $failIp`
                len=${#denyIp}
                mag="sshd:${failIp}""\t#####${hr}\n"
                if [ $len -le 0 ];then     #如果当前ip不在黑名单中,则将当前ip加入黑名单
                        denyIpTemp=${denyIpTemp}${mag}

                fi
        fi
done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值