imacintosh 发表于 2014-11-29 16:41:05

放2个bash脚本,用于屏蔽ssh的穷举密码攻击!

为了更好的保护linux的ssh 不被坏人用于 密码穷举,首先必须保证 ssh 的配置是:
#vim /etc/ssh/sshd_config

里面有一行是
MaxAuthTries 3



==================================

然后可以写2个小脚本,
A--ssh_scan.sh---用iptables屏蔽ssh穷举密码的 ip地址 (记得先安装好 iptables 软件包)
B---secure_ssh.sh---用hosts.deny 同样也是屏蔽在不断猜密码的 对方ip地址


==================================

我举例,是用在 centos 上(debian 则需要更改一个小地方,就没问题了的)


源码如下所列

A--ssh_scan.sh

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

#export LC_ALL=UTC

#扫描10分钟内的登陆失败的IP
SCANNER=$( tm=$(date -d '10 minutes ago' +"%h %d %H") && \
             awk -v tm="$tm" ' $0 ~ tm &&/Failed password/ && /ssh2/ { print $(NF-3) ; } ' /var/log/secure \
         | sort \
         | uniq -c \
         | awk '{print $1"="$2;}' \
      )

for i in $SCANNER

do
    #截取IP与数量
   IP=`echo $i|awk -F= '{print $2}'`
    NUM=`echo $i|awk -F= '{print $1}'`

    #数量大于8次,则使用iptables禁止IP
    if [ $NUM -gt 8 ]
    then
      iptables -vnL | grep DROP | grep $IP &>/dev/null
      [ $? -eq 0 ] || /sbin/iptables -I INPUT -s $IP -j DROP
      echo "`date` $IP($NUM)" >> /var/log/scanner.log
    fi

done
#End of Script


================================================

B--secure_ssh.sh

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt

DEFINE=5

for i in `cat/root/black.txt`

do

IP=`echo $i |awk -F= '{print $1}'`

NUM=`echo $i|awk -F= '{print $2}'`

if [ $NUM -gt $DEFINE ];then

grep $IP /etc/hosts.deny > /dev/null
      if [ $? -gt 0 ];then
          echo "sshd:$IP:deny" >> /etc/hosts.deny
      fi
    fi
done


========================================

工作原理大致是 一样的!

然后 可以在定时任务器里面添加
添加定时任务
.# crontab -e
*/2 * * * * /bin/bash /home/softs/ssh_scan.sh

*/1 * * * * /bin/bash /home/softs/secure_ssh.sh

========================================

最后说明一下,debian的 记录被人在穷举密码的文件是
/var/log/auth.log

centos 下 则是 /var/log/secure

因此,稍微替换一下 脚本的对应位置,则同样可以放在 debian 下运行的!

感谢

最后,打包好了 脚本,我放压缩包,给大家下载 研究的!




[ 本帖最后由 imacintosh 于 2014-11-29 16:43 编辑 ]
页: [1]
查看完整版本: 放2个bash脚本,用于屏蔽ssh的穷举密码攻击!