LazyPanda902/supportops-toolkit

GitHub: LazyPanda902/supportops-toolkit

一款用于 IT 支持运维的 Python CLI 工具,通过扫描账户导出 CSV 和 SSH 身份验证日志来自动发现配置问题和可疑登录行为。

Stars: 0 | Forks: 0

# supportops-toolkit [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/51d19a1f34000438.svg)](https://github.com/LazyPanda902/supportops-toolkit/actions/workflows/ci.yml) ![Python](https://img.shields.io/badge/python-3.11%2B-blue) ![License](https://img.shields.io/badge/license-MIT-green) 用于账户审计和身份验证日志分析的 IT 支持工具。检测 Active Directory / Entra ID 导出文件中的安全问题,并识别 syslog 身份验证文件中的可疑登录模式。 ## 为什么开发此工具 本项目专为实用的帮助台和初级系统管理员工作流程而构建:检查账户导出数据的规范性,并在可疑的 SSH 身份验证模式演变成支持工单之前发现它们。它展示了 CSV 处理、日志解析、结构化 JSON 报告,以及无运行时依赖的可测试命令行自动化。 ## 功能 - **账户审计**:扫描用户账户的 CSV 导出文件以查找安全配置错误 - 缺失或重复的用户名 - 禁用了 MFA 的账户 - 无效的电子邮件地址 - 非活动或停滞账户(90 天或 180 天以上未登录) - 从未登录过的活动账户 - **身份验证日志分析**:解析 syslog 格式的身份验证日志并检测异常 - 来自单个 IP 的暴力破解尝试(10 分钟内失败 5 次以上) - 每个用户账户的重复失败尝试 - 结构化 JSON 报告 ## 快速演示 ``` python -m pip install -e ".[dev]" supportops audit-accounts tests/fixtures/sample_accounts.csv supportops analyze-logs tests/fixtures/sample_auth.log --year 2026 python -m pytest -q ``` 这些测试固定数据文件是虚构的,仅为方便在本地测试工具而包含。 ## 安装 从源码安装: ``` pip install -e . ``` 包含开发依赖项: ``` pip install -e ".[dev]" ``` ## 用法 ### 账户审计 审计用户账户的 CSV 导出文件: ``` supportops audit-accounts accounts.csv ``` 默认输出为 JSON。要保存到文件: ``` supportops audit-accounts accounts.csv --output report.json ``` 筛选为特定的严重级别: ``` supportops audit-accounts accounts.csv --severity critical supportops audit-accounts accounts.csv --severity warning supportops audit-accounts accounts.csv --severity info ``` ### 身份验证日志分析 扫描 auth.log 文件以查找可疑模式: ``` supportops analyze-logs auth.log ``` 如果您的日志使用不包含年份的月/日格式,请指定年份: ``` supportops analyze-logs auth.log --year 2025 ``` 将报告保存到文件: ``` supportops analyze-logs auth.log --output log_report.json ``` ## CSV 格式 `audit-accounts` 命令需要一个包含以下列的 CSV 文件: ``` username,display_name,email,enabled,last_login,mfa_enabled,groups ``` 示例: ``` username,display_name,email,enabled,last_login,mfa_enabled,groups jdoe,Jane Doe,jdoe@corp.example,true,2026-06-01T14:30:00Z,true,Admins;IT bgates,Bill Gates,bgates@corp.example,false,,true,Sales ``` - `username`:账户登录名(必填,必须唯一) - `display_name`:全名 - `email`:电子邮件地址(验证基本格式) - `enabled`:"true", "1", "yes", "false", "0", "no" - `last_login`:ISO-8601 日期时间,或留空表示从未登录 - `mfa_enabled`:"true", "1", "yes", "false", "0", "no" - `groups`:以分号分隔的组名列表 ## 身份验证日志格式 `analyze-logs` 命令解析来自 SSH 的标准 syslog 身份验证条目: ``` Jun 14 10:05:00 host sshd[1234]: Accepted password for jdoe from 192.168.1.1 port 22 ssh2 Jun 14 10:06:15 host sshd[1234]: Failed password for jdoe from 10.0.0.100 port 22 ssh2 ``` 支持的模式: - SSH 登录成功:`Accepted password` 或 `Accepted publickey` - SSH 登录失败:`Failed password` 或 `authentication failure` - 不支持的行将被静默忽略 ## 报告结构 ### 账户审计报告 ``` { "total_accounts": 10, "issue_counts": { "critical": 2, "warning": 3, "info": 0 }, "issues": [ { "username": "jdoe", "severity": "critical", "code": "MFA_DISABLED", "detail": "Active account has MFA disabled." } ] } ``` 问题代码和严重级别: - `MFA_DISABLED`(critical):活动账户缺少 MFA - `INACTIVE_ACCOUNT`(critical):180 天以上未登录 - `DUPLICATE_USERNAME`(critical):用户名出现两次 - `MISSING_USERNAME`(critical):用户名字段为空 - `STALE_ACCOUNT`(warning):90 天以上未登录 - `NEVER_LOGGED_IN`(warning):活动账户,从未使用 - `INVALID_EMAIL`(warning):电子邮件与 `user@domain.tld` 格式不匹配 ### 身份验证日志报告 ``` { "total_events": 150, "event_type_counts": { "login_success": 140, "login_failure": 10 }, "anomaly_count": 1, "anomalies": [ { "username": "(multiple)", "kind": "brute_force_ip", "detail": "IP 10.0.0.100 had 5 failed logins within 10 minutes starting 2026-06-14T10:00:00+00:00.", "count": 5 } ] } ``` 异常类型: - `brute_force_ip`:10 分钟内来自同一 IP 的 5 次以上失败登录 - `repeated_failures`:具有 5 次以上失败尝试的用户账户(任何时间窗口) ## 退出代码 如果发现 critical 问题或异常,命令将返回 `1`,否则返回 `0`。 ``` supportops audit-accounts accounts.csv echo $? # 1 if any critical issues, 0 if clean ``` ## 测试 运行测试套件: ``` pytest ``` 运行特定的测试类: ``` pytest tests/test_core.py::TestAuditAccounts ``` 运行测试并显示详细输出: ``` pytest -v ``` ## 许可证 MIT
标签:Homebrew安装, IT支持, Python, 文档结构分析, 无后门, 红队行动, 账户审计, 运维工具, 逆向工具