call518/LogSentinelAI
GitHub: call518/LogSentinelAI
一款基于 LLM 的声明式安全日志分析器,通过 Pydantic 模型定义输出结构实现零正则的威胁检测与异常监控。
Stars: 56 | Forks: 11
# LogSentinelAI — AI 日志分析器
**基于 LLM 的声明式安全事件、系统错误和异常日志分析器**
**关键词**:`AI 日志分析` • `网络安全自动化` • `SIEM 集成` • `威胁检测` • `DevSecOps` • `日志监控` • `安全情报` • `异常检测`
[](https://opensource.org/licenses/MIT)


[](https://www.buymeacoffee.com/call518)
[](https://github.com/call518/LogSentinelAI/actions/workflows/pypi-publish.yml)


LogSentinelAI 是一款 **AI 驱动的网络安全工具**,它利用 LLM 结合**声明式提取**技术,分析来自 Apache、Linux 等各种日志中的安全事件、异常和错误,并将其转换为结构化数据,以便通过 Elasticsearch/Kibana 进行 **SIEM 集成**。这款 **DevSecOps 自动化解决方案** 能够实现**实时威胁检测**和**安全监控**——只需将您期望的结果结构声明为 Pydantic class,AI 便会自动分析日志并返回匹配该 schema 的 JSON。无需复杂的解析或 regex 规则。
## 架构与内部原理
[](https://deepwiki.com/call518/LogSentinelAI)
## 安装与使用指南
**环境要求**:Python 3.11 或 3.12(由于依赖兼容性问题,暂不支持 Python 3.13+)
有关 LogSentinelAI 的安装、环境配置、CLI 用法、Elasticsearch/Kibana 集成及所有实用指南,请参阅下方安装文档。
**[前往安装与使用指南:INSTALL-and-USAGE.md](./INSTALL-and-USAGE.md)**
## Dashboard 示例

## JSON 输出示例

## Telegram 告警示例
当检测到严重的安全事件时,LogSentinelAI 可以自动向 Telegram 发送实时告警:
```
🚨 [CRITICAL+ EVENTS] 🚨
• Highest Severity: CRITICAL
• Immediate Attention: Not Required
📊 Alert Events Summary (1 total):
• CRITICAL: 1
📋 Summary
➤ The analysis indicates several potential security events in the system logs.
🔥 Event-1
• Severity: CRITICAL
• Event Type: AUTH_FAILURE
• Description: Multiple authentication failures attempted against the SSH daemon.
• Confidence: 0.9
• Human Review: Required
• Related Logs:
1. Jun 14 15:16:01 combo sshd(pam_unix)[19939]: authentication failure; logname= uid=0 euid=0 tty=NODEV...
2. Jun 14 15:16:02 combo sshd(pam_unix)[19937]: check pass; user unknown
3. Jun 15 02:04:59 combo sshd(pam_unix)[20882]: authentication failure; logname= uid=0 euid=0 tty=NODEV...
... and 5 more log entries
• Recommended Actions:
➤ Review login history and account activity for suspicious patterns.
➤ Implement multi-factor authentication to enhance security.
➤ Monitor network traffic for unauthorized connections.
📊 Statistics:
• total_events: 8
• auth_failures: 8
• unique_ips: 0
• unique_users: 0
🔍 ES/Kibana Metadata:
• Index: logsentinelai-analysis
• @chunk_analysis_start_utc: 2025-08-17T22:42:32Z
• @chunk_analysis_end_utc: 2025-08-17T22:43:02Z
• @chunk_analysis_elapsed_time: 30
• @processing_result: success
• @log_count: 10
• @processing_mode: batch
• @access_mode: local
• @llm_provider: vllm
• @llm_model: Qwen/Qwen2.5-1.5B-Instruct
• @log_path: /var/log/messages
• @token_size_input: 1834
• @token_size_output: 618
• @timestamp: 2025-08-17T22:43:02.261161
• @log_type: linux_system
• @document_id: linux_system_20250817_224302_261129_chunk_1
• @host: {"hostname":"linux.foo.com","ip_addresses":["123.123.123.123/24"]}
```
## 核心功能
```
# 示例:只需在您的 HTTP Access log analyzer 中声明您想要的结果结构
from pydantic import BaseModel
class MyAccessLogResult(BaseModel):
ip: str
url: str
is_attack: bool
# 通过如上所述仅定义结果结构(Pydantic class),
# LLM 会自动分析每条日志并返回如下 JSON:
# {
# "ip": "192.168.0.1",
# "url": "/admin.php",
# "is_attack": true
# }
```
## 系统架构

- **日志源**:从各种来源收集日志,包括本地文件、远程 SSH 连接、HTTP endpoint、Apache 错误日志、系统日志以及 TCPDump 输出。
- **LogSentinelAI Core**:采用声明式方法处理解析和提取。使用 Pydantic model 定义日志结构,并由 LLM 执行实际提取。系统会对提取的数据进行验证和结构化。
- **LLM Provider**:与外部或本地 LLM(如 OpenAI、vLLM、Ollama、Google Gemini、Anthropic Claude)集成,根据用户自定义的 schema 解释原始日志并将其转换为结构化 JSON。
- **Elasticsearch**:将结构化输出、原始日志和元数据索引到 Elasticsearch 中,以实现可搜索性和事件关联。
- **Kibana**:提供可视化和 Dashboard,以便即时洞察安全事件和运营数据。
- **Telegram 告警**:当检测到严重(CRITICAL)安全事件或发生处理失败时,自动向 Telegram 群组/频道发送实时通知,从而实现即时的事件响应。
### AI 驱动的分析
- **声明式提取**:只需声明您期望的结果结构(Pydantic class),LLM 就会自动分析日志
- **LLM Provider**:OpenAI API、Ollama、vLLM、Google Gemini、Anthropic Claude
- **支持的日志类型**:HTTP Access、Apache Error、Linux System、常规日志
- **威胁检测**:SQL 注入、XSS、暴力破解、网络异常检测
- **输出**:由 Pydantic 验证的结构化 JSON
- **只需定义 Pydantic class,LLM 就会自动按该结构生成结果**
- **自适应敏感度**:检测敏感度由 LLM 模型和日志类型 prompt 自动调整
### 处理模式
- **批处理**:对历史日志进行批量分析
- **实时**:基于采样的实时监控
- **访问方式**:本地文件、SSH 远程
### 数据富化
- **GeoIP**:MaxMind GeoLite2 City 查询(包括坐标,支持 Kibana geo_point)
- **统计数据**:IP 计数、响应码、各种指标
- **多语言支持**:可配置的结果语言(默认:韩语)
### 集成与输出
- **存储**:Elasticsearch(支持 ILM policy)
- **可视化**:Kibana Dashboard
- **部署**:Docker container
- **实时告警**:针对严重(CRITICAL)安全事件和系统故障的 Telegram 通知
### CLI 命令映射
```
# 映射到 analyzer 脚本的 CLI 命令:
logsentinelai-httpd-access → analyzers/httpd_access.py
logsentinelai-httpd-server → analyzers/httpd_server.py
logsentinelai-linux-system → analyzers/linux_system.py
logsentinelai-geoip-download → utils/geoip_downloader.py
```
### 示例日志预览
#### HTTP Access 日志
```
54.36.149.41 - - [22/Jan/2019:03:56:14 +0330] "GET /filter/27|13%20%D9%85%DA%AF%D8%A7%D9%BE%DB%8C%DA%A9%D8%B3%D9%84,27|%DA%A9%D9%85%D8%AA%D8%B1%20%D8%A7%D8%B2%205%20%D9%85%DA%AF%D8%A7%D9%BE%DB%8C%DA%A9%D8%B3%D9%84,p53 HTTP/1.1" 200 30577 "-" "Mozilla/5.0 (compatible; AhrefsBot/6.1; +http://ahrefs.com/robot/)" "-"
31.56.96.51 - - [22/Jan/2019:03:56:16 +0330] "GET /image/60844/productModel/200x200 HTTP/1.1" 200 5667 "https://www.zanbil.ir/m/filter/b113" "Mozilla/5.0 (Linux; Android 6.0; ALE-L21 Build/HuaweiALE-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36" "-"
31.56.96.51 - - [22/Jan/2019:03:56:16 +0330] "GET /image/61474/productModel/200x200 HTTP/1.1" 200 5379 "https://www.zanbil.ir/m/filter/b113" "Mozilla/5.0 (Linux; Android 6.0; ALE-L21 Build/HuaweiALE-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36" "-"
40.77.167.129 - - [22/Jan/2019:03:56:17 +0330] "GET /image/14925/productModel/100x100 HTTP/1.1" 200 1696 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "-"
91.99.72.15 - - [22/Jan/2019:03:56:17 +0330] "GET /product/31893/62100/%D8%B3%D8%B4%D9%88%D8%A7%D8%B1-%D8%AE%D8%A7%D9%86%DA%AF%DB%8C-%D9%BE%D8%B1%D9%86%D8%B3%D9%84%DB%8C-%D9%85%D8%AF%D9%84-PR257AT HTTP/1.1" 200 41483 "-" "Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0)Gecko/16.0 Firefox/16.0" "-"
40.77.167.129 - - [22/Jan/2019:03:56:17 +0330] "GET /image/23488/productModel/150x150 HTTP/1.1" 200 2654 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "-"
40.77.167.129 - - [22/Jan/2019:03:56:18 +0330] "GET /image/45437/productModel/150x150 HTTP/1.1" 200 3688 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "-"
40.77.167.129 - - [22/Jan/2019:03:56:18 +0330] "GET /image/576/article/100x100 HTTP/1.1" 200 14776 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "-"
66.249.66.194 - - [22/Jan/2019:03:56:18 +0330] "GET /filter/b41,b665,c150%7C%D8%A8%D8%AE%D8%A7%D8%B1%D9%BE%D8%B2,p56 HTTP/1.1" 200 34277 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
40.77.167.129 - - [22/Jan/2019:03:56:18 +0330] "GET /image/57710/productModel/100x100 HTTP/1.1" 200 1695 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" "-"
```
#### Apache Server 日志
```
[Thu Jun 09 06:07:04 2005] [notice] LDAP: Built with OpenLDAP LDAP SDK
[Thu Jun 09 06:07:04 2005] [notice] LDAP: SSL support unavailable
[Thu Jun 09 06:07:04 2005] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Thu Jun 09 06:07:05 2005] [notice] Digest: generating secret for digest authentication ...
[Thu Jun 09 06:07:05 2005] [notice] Digest: done
[Thu Jun 09 06:07:05 2005] [notice] LDAP: Built with OpenLDAP LDAP SDK
[Thu Jun 09 06:07:05 2005] [notice] LDAP: SSL support unavailable
[Thu Jun 09 06:07:05 2005] [error] env.createBean2(): Factory error creating channel.jni:jni ( channel.jni, jni)
[Thu Jun 09 06:07:05 2005] [error] config.update(): Can't create channel.jni:jni
[Thu Jun 09 06:07:05 2005] [error] env.createBean2(): Factory error creating vm: ( vm, )
```
#### Linux System 日志
```
Jun 14 15:16:01 combo sshd(pam_unix)[19939]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=218.188.2.4
Jun 14 15:16:02 combo sshd(pam_unix)[19937]: check pass; user unknown
Jun 14 15:16:02 combo sshd(pam_unix)[19937]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=218.188.2.4
Jun 15 02:04:59 combo sshd(pam_unix)[20882]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=220-135-151-1.hinet-ip.hinet.net user=root
Jun 15 02:04:59 combo sshd(pam_unix)[20884]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=220-135-151-1.hinet-ip.hinet.net user=root
Jun 15 02:04:59 combo sshd(pam_unix)[20883]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=220-135-151-1.hinet-ip.hinet.net user=root
Jun 15 02:04:59 combo sshd(pam_unix)[20885]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=220-135-151-1.hinet-ip.hinet.net user=root
Jun 15 02:04:59 combo sshd(pam_unix)[20886]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=220-135-151-1.hinet-ip.hinet.net user=root
Jun 15 02:04:59 combo sshd(pam_unix)[20892]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=220-135-151-1.hinet-ip.hinet.net user=root
Jun 15 02:04:59 combo sshd(pam_unix)[20893]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=220-135-151-1.hinet-ip.hinet.net user=root
```
### 更多公开示例日志
要测试更多日志类型和格式,您可以利用这个公开的示例日志仓库:
- GitHub:[示例日志文件仓库](https://github.com/SoftManiaTech/sample_log_files)
如何配合 LogSentinelAI 使用:
- Clone 并为您的分析器选择合适的文件
- 使用 `--log-path` 让分析器 CLI 指向所选文件
## 常见问题解答 (FAQ)
### Q: LogSentinelAI 与传统的日志分析工具有何不同?
**A**:传统工具需要复杂的 regex 模式和手动解析规则,与之不同的是,LogSentinelAI 采用**声明式提取**——您只需定义一个 Pydantic model 结构,LLM 就会自动提取并验证安全数据。针对新的日志格式无需进行编程。
### Q: 我可以将 LogSentinelAI 用于合规性和审计报告吗?
**A**:可以!LogSentinelAI 提供包含完整审计追踪、时间戳和置信度分数的结构化 JSON 输出——非常适合 **SOX compliance**、**PCI DSS 审计**和**安全事件报告**。所有分析结果都会被索引到 Elasticsearch 中以进行长期保存。
### Q: 它适用于自定义或专有日志格式吗?
**A**:绝对适用!AI 可以适应任何日志格式。只需使用您期望的输出 schema 创建一个新的分析器,LLM 就会自动学习解析您的自定义日志。无需编写解析逻辑。
### Q: 它适用于高吞吐量的企业环境吗?
**A**:是的,LogSentinelAI 支持针对大流量场景的**实时处理**、**批处理分析**和**基于采样的监控**。它通过 Elasticsearch 与企业级 SIEM(安全信息和事件管理)解决方案集成,并提供**水平扩展**能力。
### Q: 数据隐私和本地部署方面情况如何?
**A**:LogSentinelAI 支持使用 Ollama 或 vLLM 进行**本地 LLM 部署**——您的日志永远不会离开您的基础设施。非常适合对**数据驻留**和**隐私合规**有严格要求的组织。
- 某些格式可能需要调整分析器的 prompt/schema
## 📄 License
本项目基于 MIT License 授权。
标签:AI日志分析, AI风险缓解, AMSI绕过, DevSecOps, DLL 劫持, DOE合作, Python, SIEM集成, 上游代理, 大语言模型, 威胁检测, 无后门, 红队行动, 请求拦截, 越狱测试, 逆向工具