前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将SSH多次登录失败的IP加入黑名单

将SSH多次登录失败的IP加入黑名单

作者头像
Li_XiaoJin
发布2022-09-01 16:51:58
1.8K0
发布2022-09-01 16:51:58
举报
文章被收录于专栏:Lixj's Blog

最近刚搞完网络安全攻防演练,正好整理用到的一些命令。

这次记录的是将SSH多次登录失败的IP加入黑名单的过程。

代码语言:javascript
复制
# 统计暴力破解次数
awk '/Failed/{fa[$(NF-3)]++}END{for(pol in fa)print pol,fa[pol]}' /var/log/secure|column -t

我虽然将ssh的端口更改了,但还是免不了被人发现,并且尝试暴力破解

查看记录才发现一直有被爆破的记录,最离谱的一个IP爆破了2W次......

代码语言:javascript
复制
列出登入失败的用户记录
lastb

经过查询网上网友们的解决方案,发现可以使用定时任务来检查登录失败主机列表,并将达到登录失败次数的主机IP地址加入到黑名单。

感觉很不错,为了服务器的安全,我决定在服务器也弄一个,降低 sshd 服务的压力。

脚本如下:

代码语言:javascript
复制
#!/usr/bin/bash

# 通过lastb获取登录失败的IP及登录失败的次数
lastb | awk '{print $3}' | grep ^[0-9] | sort | uniq -c | awk '{print $1"\t"$2}' > /tmp/host_list
list=`cat /tmp/host_list`
line=`wc -l /tmp/host_list | awk '{print $1}'`
count=1

# 如果/tmp/host_list中有数据,循环至少需要执行一次
while [[ "$line" -ge "$count" ]]; do
        ip_add=`echo $list | awk '{FS="\t"} {print $2}'`
        num=`echo $list | awk  '{FS="\t"} {print $1}'`
        #   登录失败达到5次就将该IP写入文件
        if [[ "$num" -ge 5 ]]; then
                grep "$ip_add" /etc/hosts.deny &> /dev/null
                if [[ "$?" -gt 0 ]]; then
                        # --------> 此处添加当前系统时间,请根据实际情况定义日期格式
                        echo "# $(date +%F' '%H:%M:%S)" >> /etc/hosts.deny
                        echo "sshd:$ip_add" >> /etc/hosts.deny
                fi
        fi
        let count+=1
        #   删除已经写入文件的IP
        sed -i '1d' /tmp/host_list
        #   修改$list变量
        list=`cat /tmp/host_list`
done

# 清空临时文件
echo '' > /tmp/host_list
exit 0

弄好脚本将其加到 crontab 定时任务执行就完成了~

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/将ssh多次登录失败的ip加入黑名单

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档