用大模型做安全审计,如何发现隐藏的配置错误?
为什么用大模型做安全审计能发现隐藏配置错误?
传统安全审计依赖人工逐行检查配置文件,效率低且容易遗漏。
大模型能快速扫描大量配置文本,识别出不符合最佳实践的风险点——比如开启了不安全的 SSH 密码登录、防火墙规则过于宽松、未加密的 HTTP 服务等。
本文以 Linux 服务器为例,教你零基础用大模型完成一次安全审计,发现那些藏得很深的配置错误。
前置准备:你需要什么?
- 一台 Linux 服务器(本文以 Ubuntu 22.04 为例)。
- 大模型工具:推荐使用本地部署的 Ollama(免费)或调用云端 API(如 ChatGPT)。下文以 Ollama + Llama 3 为例。
- 基本的 SSH 登录能力,以及 sudo 权限。
安装 Ollama:
curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3
测试是否可用:
ollama run llama3 "Hello"
看到正常返回即表示安装成功。
三步操作:用大模型扫描隐藏问题
第一步:收集关键配置文件
常见的配置文件包括:
- SSH 配置:
/etc/ssh/sshd_config - Nginx/Apache 配置:例如
/etc/nginx/nginx.conf - 防火墙规则:
/etc/iptables/rules.v4 - 系统服务:
/etc/sudoers,/etc/pam.d/下的文件
用命令把内容整合到一个文本文件中:
cat /etc/ssh/sshd_config > /tmp/audit_input.txt
echo "---NGINX---" >> /tmp/audit_input.txt
cat /etc/nginx/nginx.conf >> /tmp/audit_input.txt
第二步:将配置输入大模型,给出审计提示词
创建一个审计脚本 audit.sh:
#!/bin/bash
# 将配置内容传递给 Ollama
cat /tmp/audit_input.txt | ollama run llama3 "
你是一个安全审计专家。以下是一个 Linux 服务器的配置文件内容。
请找出所有可能的安全配置错误,并指出风险等级(高/中/低)。
每一条错误请给出修复建议。
"
运行:bash audit.sh
示例输出:
- 高:SSH 允许 root 登录(
PermitRootLogin yes),建议改为no。 - 中:Nginx 未禁用服务器版本号,建议添加
server_tokens off; - 低:防火墙未限制 SSH 源 IP 范围。
第三步:根据反馈修复,并二次确认
逐条修改配置后,用相同命令再次审计。
你会发现大模型返回的新报告中,之前的问题已消失。
例如修改 SSH:
sudo sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
然后重复审计步骤,观察是否还有警告。
避坑指南:防大模型“胡说”和隐私泄露
- 人工验证关键建议:大模型可能产生幻觉,比如推荐了不存在的配置项。修改前务必查阅官方文档(例如用
man sshd_config)。 - 脱敏处理:配置文件中可能包含密码、密钥、IP 地址。审计前先用脚本替换敏感信息,例如:
sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/X.X.X.X/g' 配置.conf
- 提示词要具体:避免笼统的“检查安全问题”,而是要求“仅检查配置错误,忽略性能建议”,减少无关输出。
- 不要直接生产环境运行审计脚本:先在测试环境验证,确保大模型不会误改配置。
效果验证:如何确认安全审计成果?
- 再次运行大模型审计,如果返回“未发现配置错误”或仅有低风险项,说明初步达标。
- 使用专业工具交叉验证,例如检查 SSH 配置:
sshd -T会输出当前生效配置,并标记错误。
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication'
应看到 permitrootlogin no 和 passwordauthentication no(如果已禁用密码登录)。
- 用漏洞扫描器(如 Nikto)扫描 Web 服务,看是否还有版本信息泄露等问题。
如果你正在处理用大模型做安全审计的任务,建议先按本文步骤完整执行,再根据自己的环境微调;
遇到异常时优先回看避坑和高频问题部分。