ssh访问控制,多次失败登录即封掉IP,防止暴力破解-ITB运维部落—http://www.itbcn.cn—ITB运维技术交流之家平台
记录工作点滴
分享运维知识

ssh访问控制,多次失败登录即封掉IP,防止暴力破解

#!/bin/bash
#第一次运行创建记录文件
-f 1.txt || touch 1.txt
while :
do
#查看日志中登陆失败的ip次数超过10次的用户ip
fip=`awk '/Failed/{ip[$11]++;}END{for (i in ip){if (ip[i]>10){print i}}}' /var/log/secure`
#循环取出登陆失败超过十次的ip进行处理
for i in $fip
do
#查看处理记录文件如果该ip没有存在处理记录中说明是没有处理过该ip
a=`awk -F: -v i=$i '$2==i{print}' 1.txt | wc -l`
#如果有查到结果则说明已经处理过该ip
if [ "$a" -ne 0 ]
then
echo "服务器安全"
else
#将新的***ip加入防火墙阻止(方入drop的区域则该ip发送的数据包会立刻丢弃不做回应)区域
firewall-cmd --zone=drop --add-source=$i && echo "成功将:$i:加入防火墙block区域" >> 1.txt
fi
done
#120s执行一次
sleep 120
done

一直发现站内的流量和IP不太正常,读取/var/log/secure 很多失败的登录信息!必须要整个方法整死他们,虽然我已经把ssh port修改为了XXX(能告诉你吗?)!但是攻击还是不断,随即请教了铭哥大神。由于担心没有测试机,直接线上操作把自己也加入black list就不好了。找了很多资料,最终也成功了。分享给大家!
一、系统:Centos6.9 64位

二、方法:读取/var/log/secure,查找关键字 Failed,(#cat /var/log/secure | grep Failed)例如(注:文中的IP地址特意做了删减):

Sep 17 09:08:09 localhost sshd[29087]: Failed password for root from 13.7.3.6 port 44367 ssh2
Sep 17 09:08:20 localhost sshd[29087]: Failed password for root from 13.7.3.6 port 44367 ssh2
Sep 17 09:10:02 localhost sshd[29223]: Failed password for root from 13.7.3.6 port 56482 ssh2
Sep 17 09:10:14 localhost sshd[29223]: Failed password for root from 13.7.3.6 port 56482 ssh2

从这些行中提取IP地址,如果次数达到10次(脚本中判断次数字符长度是否大于1)则将该IP写到 /etc/hosts.deny中。

三、步骤:

1、先把始终允许的IP填入 /etc/hosts.allow ,这很重要!比如:

sshd:19.16.18.1:allow

sshd:19.16.18.2:allow
由于手机(移动的网络)经常更改IP,但是我还经常需要使用手机来登录去查看一些使用情况,经过查看IP地址发现一直都是某个IP地址段的,所以:

sshd:132.213.:allow
2、脚本 /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.list
for i in `cat /usr/local/bin/black.list`
do
IP=`echo $i |awk -F= ‘{print $1}’`
NUM=`echo $i|awk -F= ‘{print $2}’`
if [ ${#NUM} -gt 1 ]; then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo “sshd:$IP:deny” >> /etc/hosts.deny
fi
fi
done
3、将secure_ssh.sh脚本放入cron计划任务,每1分钟执行一次。
# crontab -e

*/1 * * * *  sh /usr/local/bin/secure_ssh.sh

四、测试:

1、原本还想着是不是找个另外的方法测下呢。就在疑问还没有结束的时候,想要不先看看吧,就发现:上个图吧:

[root@ ~]#  cat /usr/local/bin/black.txt
还逮了个不小的呢!!!

再看看服务器上的hosts.deny

[root@ ~]# cat /etc/hosts.deny

2、从另一个终端窗口继续“暴力”连接服务器。

看看服务器上的黑名单文件:
[[email protected]~]# cat /usr/local/bin/black.txt
13.26.21.27=6

再看看服务器上的hosts.deny
[[email protected]~]# cat /etc/hosts.deny
sshd:13.7.3.6:deny
sshd:92.4.0.4:deny
sshd:94.10.4.2:deny
sshd:94.4.1.6:deny
sshd:11.64.11.5:deny
sshd:13.26.21.27:deny

IP 已经被加入到服务器的hosts.deny,再用正确的密码连接服务器,被拒绝:
$ [email protected] 2333
ssh_exchange_identification: Connection closed by remote host

事实证明,改了端口后+此自动添加黑名单,暴力破解的ssh连接数锐减~

未经允许不得转载:ITB运维部落—http://www.itbcn.cn—ITB运维技术交流之家平台 » ssh访问控制,多次失败登录即封掉IP,防止暴力破解

如果文章对你有帮助,欢迎点击上方按钮打赏作者

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址