前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSH日志审计脚本优化

SSH日志审计脚本优化

作者头像
Elapse
发布2021-03-03 14:34:17
8080
发布2021-03-03 14:34:17
举报
文章被收录于专栏:E条咸鱼E条咸鱼E条咸鱼

在实际用的时候,感觉体验不怎么样,后来仔细想了一下, 觉得少了点什么东西,于是就加上了一个检测爆破是否成功的功能,这样就更直观的发现问题了

我还把失败的记录改成了,如果超过10条,那么不显示了,太多了,没必要,详细的保存在单独的txt里了

同时,使用了PrettyTable进行输出,更美观点

主要加了以下代码

def intrusion_detection(wfile,success_ip,failed_ip,fdst):
    check_result=set(success_ip).intersection(set(failed_ip)) # 查看成功的IP和失败的IP中是否有交集,检查是否爆破成功
    if check_result:
        print("\n[+]入侵检测:")
        wfile.write("\n[+]入侵检测: \n")
        prcheck=PrettyTable(field_names=["登录IP","结果","原因"])
        for i in check_result:
            if int(fdst[i])>5:
                prcheck.add_row([i,"成功","该IP进行密码爆破,猜解到成功的密码后,登录了系统..."])
                wfile.write("  检测到IP:"+str(i)+" 爆破成功\n")
            else:
                wfile.write("  检测到IP:"+str(i)+" 可疑,请核实\n")
                prcheck.add_row([i,"可疑","该IP已登录过系统,但是因为次数过少不像是暴力破解,请核实..."])
        print(prcheck)
    else:
        print("\n[-]未发现有可疑|成功事件\n")

我用set的方式来看两组数据中是否存在交集

set(success_ip).intersection(set(failed_ip))

后来测试的时候,又发现了一个新的问题,因为有的时候只是手抖敲错了密码,并非是爆破导致的连接失败的操作被记录在日志里

所以稍微改了一下形式,并且输出了原因

if int(fdst[i])>5:
prcheck.add_row([i,"成功","该IP进行密码爆破,猜解到成功的密码后,登录了系统..."])
    wfile.write("  检测到IP:"+str(i)+" 爆破成功\n")
else:
    wfile.write("  检测到IP:"+str(i)+" 可疑,请核实\n")
    prcheck.add_row([i,"可疑","该IP已登录过系统,但是因为次数过少不像是暴力破解,请核实..."])

效果图:

github链接

https://github.com/Ernket/SSH-log-audit
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 E条咸鱼 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
主机安全
主机安全(Cloud Workload Protection,CWP)基于腾讯安全积累的海量威胁数据,利用机器学习为用户提供资产管理、木马文件查杀、黑客入侵防御、漏洞风险预警及安全基线等安全防护服务,帮助企业构建服务器安全防护体系。现支持用户非腾讯云服务器统一进行安全防护,轻松共享腾讯云端安全情报,让私有数据中心拥有云上同等级别的安全体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档