AI:咚咚咚!您好,请查收这份《主机安全体检报告》

主机御医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模型协同工作的模式。

该架构将审计流程解耦为三个核心阶段:

  1. 标准化数据采集: 利用Python的paramiko库,通过SSH协议远程连接目标主机。脚本会以只读方式执行一系列预定义的Shell命令,采集覆盖10余个安全维度的原始数据。
  2. 分模块AI分析: 这是系统的核心。脚本将采集到的数据按资产清单、系统配置、网络暴露面、历史痕迹等模块进行划分。随后,针对每一个模块,使用专门设计的Prompt模板,独立调用大模型API进行分析。这种“分而治之”的策略显著降低了单次请求的复杂性,使AI能够对每个安全域进行更专注和深入的推理,并返回结构化的JSON结果。
  3. 自动化报告生成: 脚本聚合所有模块返回的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
2
3
4
5
6
7
8
9
10
11
12
13
14
# main.py - 精细化计分模型示例
def post_process_and_calibrate(analyzed_data, template_data):
# ...
# 定义扣分规则 (基于风险类型加权)
scoring_rules = {
"credentials": {"high": 12, "medium": 6, "low": 2},
"integrity": {"high": 8, "medium": 4, "low": 2},
"software_vuln": {"high": 8, "medium": 4, "low": 1},
"config": {"high": 6, "medium": 3, "low": 1},
"forensics": {"high": 5, "medium": 3, "low": 1},
"network": {"high": 6, "medium": 3, "low": 1},
"identity": {"high": 8, "medium": 4, "low": 1},
}
# ... 循环遍历所有模块,根据规则进行扣分 ...
2. 报告呈现层: templates/report_template.html

该文件定义了最终报告的结构、样式与交互行为,是一个独立的前端应用。

  • 数据注入点: 文件内的const reportData = {};是关键的数据接口,由main.py在生成报告时动态填充。
  • 前端渲染逻辑: 报告页面加载后,内置的JavaScript会解析reportData中的JSON数据,通过DOM操作动态生成所有图表(使用Chart.js)、表格和风险条目。
  • 高级交互功能: 实现了侧边栏折叠、模块风险摘要、全局风险等级筛选、动态滚动导航高亮等一系列高级交互功能,旨在提升报告的可读性和易用性。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!-- templates/report_template.html - 资产清单模块结构示例 -->
<section id="assets" class="module">
<div class="module-header">
<h2><i class="fa-solid fa-cubes"></i> 资产清单与软件风险</h2>
<i class="fa-solid fa-chevron-down toggle-icon"></i>
</div>
<div class="module-content">
<!-- JS会在此处填充风险摘要 -->
<div class="module-summary"></div>
<h4><i class="fa-solid fa-box-open"></i> 已安装软件 (风险评估)</h4>
<table class="data-table">
<thead>...</thead>
<!-- JS会在此处填充软件列表 -->
<tbody id="software-table-body"></tbody>
</table>
...
</div>
</section>
3. 环境配置
  • .env & config.json: 分别用于存储API密钥和目标主机连接信息,实现了配置与代码的分离,提高了安全性和可维护性。

五、结论与展望

主机御医1.0项目成功验证了将大型语言模型作为核心分析引擎,与传统自动化脚本相结合的技术路径是完全可行的。它不仅将数小时的手动审计工作压缩到几分钟,还通过结构化、可视化的方式,提供了一致且专业的审计输出。

未来的工作可以在此基础上进一步扩展,例如:集成自动化修复脚本生成、实现基于时间序列的风险变化监控、或将审计能力扩展到容器、云环境等更广泛的领域。

希望本次的开发实践分享,能为探索AI在网络安全领域的应用提供一些有价值的参考。