主机御医1.0:基于大模型自动化检查主机安全情况
本文导览
- 一、引言
- 二、成果展示:主机御医1.0 交互式安全报告 ✨ (核心亮点)
- 三、架构的演进:从单体智能到协同分析
- 四、项目核心组件解析
- 五、结论与展望
一、引言:挑战与AI赋能的思考
在网络安全领域,主机安全审计是保障信息系统安全的关键环节。传统的审计工作流不仅耗时耗力,而且分析结果的深度与广度严重依赖于审计人员的专业经验,难以实现标准化和规模化。
随着大型语言模型在理解、推理与内容生成方面展现出的卓越能力,我们开始思考新的可能性:是否可以构建一个由AI驱动的自动化审计引擎,将繁杂的原始数据转化为结构化的、附带专家级见解的安全报告?
本文将详细阐述我们从概念构思到最终实现 “主机御医1.0”——一个AI驱动的主机安全自动化审计工具的全过程。在此之前,让我们首先展示这款工具的最终成果。











(为展示得更加清晰而不杂乱,此处的全局展示隐藏了最左侧的导航栏,且查看详情功能仅每个模块仅展示一例)
控制台运行演示:

二、成果展示:主机御医1.0 交互式安全报告 ✨ (核心亮点)
主机御医1.0 的核心产出是一份独立的、交互式的HTML安全报告。它不仅呈现了详尽的审计结果,更通过现代化的UI设计和丰富的数据可视化,将复杂的主机安全态势变得直观、易于理解和跟进。(展示的数据来源为公司一台Linux服务器)
亮点1:一目了然的安全态势总览
报告顶部是“报告概览”区域,它将主机的核心安全指标汇于一处,让您对整体安全状况一目了然。
- 动态标题与扫描元信息: 报告标题会自动嵌入被扫描主机的IP地址。下方清晰展示了本次扫描所使用的AI模型(如
deepseek-ai/DeepSeek-V3
)、引擎版本和扫描协议,增强了报告的专业性和透明度。 - 精细化的加权安全评分: 我们摒弃了传统的简单风险计数扣分法,设计了一套基于风险类型的加权计分模型。例如,一个“高危”的凭证泄露(-12分)比一个“高危”的软件漏洞(-8分)扣分更多,这使得分数能更真实地反映主机的安全水位。点击分数旁的帮助图标,用户可以看到每一项具体的扣分明细,让分数不再是一个黑盒。
- 风险统计可视化: 通过直观的条形图,将所有风险项按“高、中、低”三个等级进行分类统计,便于快速把握风险分布。
亮点2:超越传统扫描的深度审计维度
主机御医1.0 的核心价值在于其审计的深度。除了常规的端口和软件版本扫描,我们更注重那些容易被传统自动化工具忽略、却对主机安全至关重要的细节:
- 权限配置深潜: 我们不仅检查用户列表,更深入分析
/etc/sudoers
文件,排查是否存在过度的权限授予。同时,对所有用户的authorized_keys
文件进行扫描,这对于发现潜在的、通过SSH密钥留下的“后门”至关重要,这是许多传统扫描器容易忽视的盲点。 - 文件完整性校验: 通过
rpm -V
校验核心系统工具(如ps
,ls
,sshd
等)的完整性,这是检测Rootkit等深层威胁的有效手段。如果核心系统文件被篡改,报告将发出高危警报。 - 内核参数审计: 对
net.ipv4.ip_forward
等关键内核参数进行检查,确保操作系统底层配置的安全性,防止主机被用作攻击跳板。 - 网络拓扑可视化: 报告能够基于
netstat
的输出,生成主机网络连接拓扑图。它清晰地展示了本机与所有外部IP的连接关系,帮助审计人员快速从视觉上识别出潜在的异常通信或恶意连接,这远比阅读纯文本列表要高效得多。
亮点3:为效率而生的强大交互体验
一份优秀的报告不仅要内容详实,更要易于使用。为此,我们设计了多种高效的交互功能:
- 优秀的风险筛选: 这是我们最具特色的功能之一。每个模块展示时优先展示重点或者异常模块,将不重要或者正常模块先隐藏,当用户需要查看所有信息时就可自行点击查看所有。用户也可以点击报告中任意一个风险标签(如“高危”),整个报告页面将即时过滤,仅显示与该风险等级相关的条目。这使得安全人员能够迅速聚焦于最高优先级的任务,极大提升了响应和修复效率。
- 一键展开/折叠: 面对包含12个模块的详细报告,用户可以通过顶部的“展开/折叠”按钮一键切换全局视图,既能宏观浏览,又能深入细节,操作便捷高效。
- 双版本PDF导出: 考虑到不同的汇报场景,我们提供两种导出选项:摘要版(只包含各模块概览)和完整版(包含所有展开的风险详情),满足从管理层汇报到技术归档的全部需求。
三、架构的演进:从单体智能到协同分析
在项目初期,我们曾尝试一种“端到端”的解决方案。构想是利用Cherry Studio
等平台的知识库和高级提示词工程能力,将所有安全基线和审计逻辑植入知识库,然后将采集到的主机信息一次性提交给大模型,期望其直接生成最终的HTML报告。
实践证明,这种方法存在显著的瓶颈。大规模、异构的原始数据(数十个命令的输出)同时输入,会给大模型的上下文处理能力和API稳定性带来巨大挑战,导致请求超时、响应截断等问题频发。
这次尝试使我们认识到,AI的最优应用模式是作为分析核心,而非流程执行器。基于此,我们重新设计了系统架构,采用Python脚本与AI模型协同工作的模式。
该架构将审计流程解耦为三个核心阶段:
- 标准化数据采集: 利用Python的
paramiko
库,通过SSH协议远程连接目标主机。脚本会以只读方式执行一系列预定义的Shell命令,采集覆盖10余个安全维度的原始数据。 - 分模块AI分析: 这是系统的核心。脚本将采集到的数据按资产清单、系统配置、网络暴露面、历史痕迹等模块进行划分。随后,针对每一个模块,使用专门设计的Prompt模板,独立调用大模型API进行分析。这种“分而治之”的策略显著降低了单次请求的复杂性,使AI能够对每个安全域进行更专注和深入的推理,并返回结构化的JSON结果。
- 自动化报告生成: 脚本聚合所有模块返回的JSON数据,并执行最终的后处理逻辑,包括基于加权模型的安全评分计算。最后,利用
Jinja2
模板引擎,将完整的、结构化的数据注入到预设的HTML模板中,生成最终的交互式安全报告。
四、项目核心组件解析
主机御医1.0
的实现主要依赖于以下几个关键文件:
(其中final_security_report和report_data文件为生成的文件)
1. 核心控制器: main.py
作为项目的引擎,该Python脚本承担了整个审计流程的编排工作:
- 命令定义 (
COMMANDS_TO_RUN
): 以字典形式精确定义了需要采集的命令,覆盖了从主机信息到内核参数的各个层面。 - AI接口封装 (
call_llm_for_analysis
): 负责与大模型API(本项目选用deepseek-ai/DeepSeek-V3
)进行通信,并内置了重试与错误处理机制。 - 分析工作流 (
analyze_module_by_module
): 实现了将原始数据与特定Prompt相结合,分模块调用AI进行分析的核心逻辑。 - 评分与校准 (
post_process_and_calibrate
): 这是项目的关键创新之一。该函数实现了一套基于风险类型的加权评分模型,替代了传统的简单风险计数。
1 | # main.py - 精细化计分模型示例 |
2. 报告呈现层: templates/report_template.html
该文件定义了最终报告的结构、样式与交互行为,是一个独立的前端应用。
- 数据注入点: 文件内的
const reportData = {};
是关键的数据接口,由main.py
在生成报告时动态填充。 - 前端渲染逻辑: 报告页面加载后,内置的JavaScript会解析
reportData
中的JSON数据,通过DOM操作动态生成所有图表(使用Chart.js
)、表格和风险条目。 - 高级交互功能: 实现了侧边栏折叠、模块风险摘要、全局风险等级筛选、动态滚动导航高亮等一系列高级交互功能,旨在提升报告的可读性和易用性。
1 | <!-- templates/report_template.html - 资产清单模块结构示例 --> |
3. 环境配置
.env
&config.json
: 分别用于存储API密钥和目标主机连接信息,实现了配置与代码的分离,提高了安全性和可维护性。
五、结论与展望
主机御医1.0
项目成功验证了将大型语言模型作为核心分析引擎,与传统自动化脚本相结合的技术路径是完全可行的。它不仅将数小时的手动审计工作压缩到几分钟,还通过结构化、可视化的方式,提供了一致且专业的审计输出。
未来的工作可以在此基础上进一步扩展,例如:集成自动化修复脚本生成、实现基于时间序列的风险变化监控、或将审计能力扩展到容器、云环境等更广泛的领域。
希望本次的开发实践分享,能为探索AI在网络安全领域的应用提供一些有价值的参考。