JustaNotion/SSH-Log-Analyzer

GitHub: JustaNotion/SSH-Log-Analyzer

一个用 Python 编写的 SSH 认证日志解析练习工具,通过统计失败登录尝试来识别潜在的暴力破解源 IP。

Stars: 0 | Forks: 0

# SSH-Log-Analyzer 这是一个 Python 工具,用于解析 SSH 认证日志,统计登录尝试次数,正确格式化结果, 并对多次失败的登录尝试发出警告。它还包含一个基于 IP 的统计功能,当失败登录尝试达到设定的 5 次或以上的阈值时,将触发警告。 该项目旨在作为一项模拟练习,用于编写通知暴力破解攻击的脚本,以及进行日志解析。 ## 目的与目标 本项目的主要目的包含两个独立的目标: 1. 创建一个项目,让我初步了解 Python 中的核心工具 2. 构建一个可以作为任何类型日志解析/日志分析起点的工具。 ## 所学工具 这是我在 Python 学习之旅中较早完成的项目之一,它比基础的/简单的函数 (计算器、计时器、猜数字游戏等)更进了一步。该项目介绍了 .split()、索引和字典, 并且这些都作为核心组件在项目中得到了展示。 ## 用法 需要 Python 3.6+(使用了 f-strings)。无外部依赖。 将需要分析的日志文件放在与 logchecker.py 相同的目录下,并命名为 sample_auth.log,然后运行: ``` py logchecker.py ``` 任何出现 5 次或以上失败密码尝试的源 IP 都会在终端打印一行 [WARNING] 信息。 ## 示例输出 结果清晰地直接展示出具有 5 次或以上失败尝试的源 IP 地址。 攻击 IP 以及具体的失败尝试次数都会与 [WARNING] 信息一同显示。 198.51.100.7 在示例日志中出现了 3 次失败尝试,并被正确排除,同时被排除的还有成功的登录记录以及 [preauth] 行。 ![示例输出](https://static.pigsec.cn/wp-content/uploads/repos/cas/f2/f2e287c3fb16da8f297e2889daea3e605a8ea1b7e2427b87bc2685e382e8b369.png) ## 已知限制 - 输入文件名被硬编码为 sample_auth.log;不支持命令行参数 - 没有错误处理机制 —— 文件缺失会引发 FileNotFoundError 并退出 - 阈值被硬编码为 5,不可配置 - 解析程序假定使用标准的 OpenSSH 语法。如果某行包含 "Failed password" 和 "from " 但没有 " port",将会生成 格式错误的键,而不是被跳过 - 仅检测 "Failed password" 事件。其他认证失败类型 (如 publickey 失败、"Invalid user" 的 preauth 行)不计入统计 ## 关于所提供示例 IP 的说明 sample_auth.log 中提供的所有 IP 均来自 RFC 5737 文档规定的地址段。 项目中包含的 sample_auth.log 实际上是直接由 AWS Serverless 日志解析器项目中的脚本生成的, 该项目可以在这里找到:[Failed-Login_Parser](https://github.com/JustaNotion/Failed-Login_Parser) ## 从脚本到 Serverless 这个项目成为了最终促成我的 AWS Serverless 日志解析器诞生的催化剂。我意识到,通过使用 AWS 提供的 S3、DynamoDB 和 Lambda 等服务, 我可以模拟将日志输入到 S3 存储桶并显示为攻击 IP 的过程,从而模拟出我作为 SOC Analyst 会遇到的环境和情况。
标签:Python, 无后门, 脚本工具, 运维工具, 逆向工具