ssh暴力破解:防御篇

任务

尝试配置ssh登录云服务器对ssh有了一定的认识,ssh暴力破解:进攻篇的目的也是为了更好的理解如何防御。相对于提升安全系数,这里是更为积极的防御措施,主动分析攻击IP并加入黑名单,并结合自己的攻击实现实战演示。

识别攻击IP【1】

查看日志

无效用户名

cat /var/log/secure | grep 'Invalid' | awk '{print $10 "\t" $8}' | sort
  • cat /var/log/secure 显示日志文件secure,包括登录信息
  • grep ‘Invalid’ 将包含关键词’Invalid’的登录信息筛选出,是无效的用户名
  • awk ‘{print $10 “\t” $8}’ 只打印这一行中第10个与第8个字串,分别是登录IP地址与尝试登录名
  • sort 排序

在这里插入图片描述

上面是尝试攻击我的云服务器的地址,只是用户名无效部分。

登录失败

 cat /var/log/secure  | grep 'failure' | awk '{print $14 "\t" $15 }' | sort

在这里插入图片描述

上面是所有尝试登录失败的记录,包括自己输错密码也会记录下来。此外还有其他尝试用root进行攻击的IP。

所有失败

cat /var/log/secure|awk '/Failed/{print $(NF-3)}'| sort
  • awk ‘/Failed/{print $(NF-3)}’
    • /Failed/ 匹配文本中包括Failed的行,与grep ‘Failed’的作用相同
    • NF-3,NF为一行中的最后一列,-3即最后向前推3个,为倒数第4个;同理有FS为从前数,当然也可以不加FS,直接用$1代表第一列

统计攻击次数

cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > ipblacklist.txt
  • uniq -c 去重统计每一行出现次数
  • sort -bn 倒序排列次数打印结果
  • awk ‘{print $2″=”$1;}’ 排好序的输出结果如下图所示,这里就是将ip提到前面,次数放在后面
  • > ipblacklist.txt 重定向输出到文件中保存结果

在这里插入图片描述

脚本加黑名单【2】

vim /usr/local/bin/secure_ssh.sh

编辑内容如下:

#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt
for i in `cat  /usr/local/bin/black.txt`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
   if [ $NUM -gt 5 ];then
      grep $IP /etc/hosts.deny > /dev/null
    if [ $? -gt 0 ];then
      echo "sshd:$IP:deny" >> /etc/hosts.deny
    fi
  fi
done
  • awk -F= ‘{print $1}’
    • -F=以=为分隔符
  • grep $IP /etc/hosts.deny > /dev/null
    • grep的函数功能Exit status is 0 if any line is selected, 1 otherwise;
    • if [ $? -gt 0 ]
      • $? 获取函数返回值或者上一个命令的退出状态
    • 则如果文件中没有出现命中列入黑名单规则的IP,就继续将IP加入deny规则
  • /etc/hosts.deny【3】
    • 用来配置使用TCP Wrappers 服务的访问控制
    • sshd即是说明sshd的端口控制

实战效果

在通过将自己的服务器做为靶机实施攻击后【4】,通过上述方法追踪并进行控制。攻击后,自己也成功上榜。

在这里插入图片描述

执行脚本

. /usr/local/bin/secure_ssh.sh

查看黑名单统计数据black.txt

cat /usr/local/bin/black.txt

在这里插入图片描述

查看访问控制文件hosts.deny

cat /usr/local/bin/black.txt

在这里插入图片描述

无法攻击

在这里插入图片描述

注释掉自己

在这里插入图片描述

可以重新暴力破解成功

在这里插入图片描述

参考资料

  1. 想知道你的服务器被暴力登录次数吗?教你统计ssh登录日志
  2. centos7添加ip黑名单禁止某个ip访问
  3. CentOS 访问控制列表(tcp wrappers)
  4. ssh暴力破解:进攻篇

Leave a comment

Your email address will not be published. Required fields are marked *