jhars2/authguard-log-analyzer

GitHub: jhars2/authguard-log-analyzer

一款跨平台认证日志分析工具,通过 CLI 和实时 Web 仪表盘检测暴力破解、权限提升等十种认证异常行为,一键部署即可获得完整的 SOC 可视化能力。

Stars: 0 | Forks: 0

# AuthGuard 日志分析器 一个跨平台的身份验证日志分析工具和实时 SOC 仪表盘。检测系统身份验证日志中的可疑登录行为、权限滥用和暴力破解模式,然后通过经过加固的 HTTPS 提供实时 Web 仪表盘来展示发现的结果。 ## 功能介绍 AuthGuard 包含两个协同工作的组件: **CLI 分析器** (`log_analyzer.py`) - 扫描 Linux 身份验证日志或 Windows 安全事件日志,并在终端输出带有颜色标记的发现结果,同时生成结构化的 `.txt` 事件报告。 **Web 仪表盘** (`app.py`) - 一个 Flask 应用程序,持续对实时的 systemd journal 运行分析,并通过基于浏览器的 SOC 仪表盘展示结果,该仪表盘由经过加固的 Apache 反向代理通过 HTTPS 提供服务。 ## 仪表盘 ![AuthGuard 终端输出](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/db38310882213555.png) 仪表盘提供以下功能: - 带有严重级别过滤的实时发现结果源 - 攻击时间线图表(按小时统计的发现结果) - 检测类型分布(环形图) - 威胁 IP 源排行表 - 用户风险评分板(按账户计算的风险分数) - 近期活动事件日志 - 每 60 秒自动刷新 ## 检测项 | # | 检测项 | 严重级别 | |---|-----------|----------| | 1 | 暴力破解尝试 | CRITICAL | | 2 | 多次失败后的成功登录 | CRITICAL | | 3 | Root / 管理员登录尝试 | HIGH | | 4 | 凭据填充(多 IP 对应单用户) | HIGH | | 5 | 权限提升尝试 (sudo / Event 4672) | HIGH | | 6 | 账户锁定 | HIGH | | 7 | 异常时间登录 | HIGH / MEDIUM | | 8 | 新增 / 未知用户登录 | MEDIUM | | 9 | 来自未知 IP 的登录 | MEDIUM | | 10 | SSH 异常(无效用户,预认证扫描) | MEDIUM | ## 安装说明 安装脚本会自动设置完整的技术栈: ``` git clone https://github.com/jhars2/authguard-log-analyzer.git cd authguard-log-analyzer sudo bash install.sh ``` **安装程序执行的操作:** - 安装 Apache、Python、Gunicorn、ModSecurity 及相关依赖 - 创建专用的低权限 `authguard` 系统用户 - 生成自签名 SSL 证书 - 加固 Apache:隐藏版本信息、安全响应头、CSP、带有 OWASP CRS 的 ModSecurity WAF - 强制 HTTP → HTTPS 重定向 - 将 Apache 配置为通过 Unix socket 反向代理到 Flask 应用 - 安装并启用在开机时自动启动的 systemd 服务 安装完成后,可以通过 `https://localhost/dashboard` 访问仪表盘。 ## 系统架构 ``` Browser → Apache (HTTPS/443) → Unix Socket → Gunicorn → Flask → journalctl ``` - **Apache** 负责处理 TLS 终结、安全响应头、ModSecurity WAF 以及反向代理 - **Gunicorn** 是运行 Flask 应用的生产级 WSGI 服务器 - **Unix socket** - Flask 永远不会暴露网络端口;所有通信都通过 socket 文件进行 - **authguard 系统用户** - Flask 进程以最低权限运行,仅需要通过组成员身份获得对 systemd journal 的读取权限 ## CLI 使用 ``` # 针对系统日志运行 (在大多数 Linux 系统上需要 sudo) sudo python3 log_analyzer.py # 针对内置示例日志运行 (无需 sudo,可在任何 OS 上运行) python3 log_analyzer.py --sample ``` **Windows** - 需要 `pywin32`: ``` pip install pywin32 python log_analyzer.py ``` ## 启动脚本 安装完成后,使用启动脚本来验证所有服务是否正在运行,并打开仪表盘: ``` bash /opt/authguard/launch.sh ``` ## 配置说明 在 `log_analyzer.py` 的顶部,调整这些常量以适应被分析的系统: ``` BRUTE_FORCE_THRESHOLD = 5 # failed logins to trigger brute force alert BRUTE_FORCE_WINDOW_MINUTES = 10 # time window for brute force detection NORMAL_HOURS_START = 7 # business hours start (24h) NORMAL_HOURS_END = 20 # business hours end (24h) KNOWN_USERS = {"root", "admin"} # expected accounts on this system KNOWN_IPS = {"127.0.0.1"} # trusted IP addresses ``` ## 工作原理 分析器对日志源执行一次 O(n) 的遍历,同时针对每一行运行所有的正则表达式模式。在遍历期间会累积每个用户的状态(失败时间戳、源 IP),而基于阈值的检测(如暴力破解)则使用在全量遍历完成后评估的滑动窗口。 在现代 Linux 系统上,日志通过 `journalctl --grep` 直接从 systemd journal 中提取。在较旧的系统或基于 RHEL 的发行版上,它会回退到读取平面日志文件(`/var/log/auth.log`、`/var/log/secure`)。Windows 通过 `pywin32` 从安全事件日志 中提取数据。 Web 仪表盘以无登录 shell 的专用系统用户身份运行,通过 Unix socket 与 Apache 通信,并且在运行时永远不需要 root 访问权限。 ## 示例日志 包含了一个真实的 `sample_auth.log` 文件,用于在没有提权权限的情况下进行测试: ``` python3 log_analyzer.py --sample ``` ## 后续改进计划 - [ ] 被标记 IP 的地理位置查询 (MaxMind GeoLite2) - [ ] 威胁情报源匹配 (AbuseIPDB API) - [ ] HTML 报告输出 - [ ] SIEM 集成 (Elastic/Splunk forwarder) - [ ] CRITICAL 级别发现的邮件告警 - [ ] 针对公网部署环境的 Let's Encrypt 证书支持
标签:AMSI绕过, Apache反向代理, CSV导出, Flask, Gunicorn, HTTPS, Linux auth.log, ModSecurity, PB级数据处理, Python, SOC工具, SSH异常检测, Web仪表盘, Windows事件日志, 免杀技术, 凭证滥用, 威胁检测, 子域名变形, 子域名枚举, 安全事件响应, 安全运维, 安全运营中心, 攻击时间轴, 无后门, 暴力破解检测, 权限提升检测, 漏洞发现, 系统安全, 红队行动, 网络安全, 网络映射, 蓝军防御工具, 跨平台安全工具, 身份验证日志, 逆向工具, 隐私保护, 风险评分