LINUX实战:阻止远程IP进行ssh登录密码猜解
发布时间:2021-04-22

ü

实验(一):阻止远程IP进行ssh登录密码猜解

#实验概述:

UPWEN公司的Web服务器最近经常受到外部的渗透测试,系统日志log里记录了大量的远程IP尝试密码猜解的方式频繁ssh登录Web服务器;由于Web服务器的重要性,需要通过防御手段来阻止、减少密码频繁猜解的动作。

UPWEN公司的UP楠哥编写一个脚本/tmp/checkip.sh,实现每5分钟检查一次,如果发现通过ssh登录失败次数超过10次,自动将此远程IP放入tcp_Wrapper的黑名单中予以禁止防问,这样可以有效的减少频繁密码猜解。

接下来,我们查看如何具体实现。

#环境描述:

操作系统:Centos7.x、RHEL8.x。

#具体实现:

vim /tmp/checkip.sh

#!/bin/bash

#定义休眠时间

sleeptime=300


#定义通过ssh登录失败次数

num=10


#定义黑名单文件

file=/etc/hosts.deny


#无限循环

while true;do

#将失败登录的记录逐行读入变量

lastb | grep ssh|awk -F "[ ]+" '{print $3}'|uniq -c | while read conn ip;do

#判断失败次数

if  [ "$conn" -ge "$num" ];then

#判断记录的IP是否存在

egrep -q ^sshd.*$ip $file

#如果不存在记录,将追加记录至指定黑名单文件

[ $? -ne 0 ] &&  echo "sshd:$ip" >> $file

fi

done

sleep $sleeptime

done

#结果:

通过终端工具进行通过ssh登录失败次数10次以上,达到频繁的交互式登录的效果。

此时,UP楠哥所写的shell脚本监控到非法登录到10次以上,会把此远程IP送到/etc/hosts.deny中,触发了tcp_tcp_wrappers,实现无法基于ssh进行远程登录。



#知识点:

tcp_wrappers机制;

shell脚本中的while循环;

shell脚本中的if判断语句;

awk 文本处理工具。




我要留言:
微信公众号
微信咨询
尚文公众号

尚文公众号二维码

尚文咨询

尚文咨询二维码