垂直安全Agent搭建,自动化漏洞扫描

垂直安全Agent是一类针对特定业务场景定制的自动化安全检测程序,它能把漏洞扫描、风险分析和告警处置串成一条流水线;
而Prompt安全沙箱则用来隔离大模型处理外部输入的运行环境,防止恶意提示词突破系统边界。
本文站在零基础视角,带你在 Linux 服务器上从零搭建一个可用的垂直安全Agent,接入自动化漏洞扫描,并配置Prompt安全沙箱,最终能看到真实扫描结果和沙箱拦截日志。

一、先把环境准备到可执行状态

建议准备一台 2核4G 以上的 Linux 服务器,系统选用 Ubuntu 22.04 或 Debian 12,同时确保可以访问外网。
下面命令会安装 Python3、pip、Docker 和常用扫描工具:

sudo apt update
sudo apt install -y python3 python3-pip docker.io git curl nmap
sudo systemctl enable --now docker
sudo usermod -aG docker $USER

执行后退出当前 SSH 会话重新登录,让 docker 组权限生效。
接着安装 Python 依赖:

pip3 install flask requests tenacity

这里把 Flask 用于提供 Agent 的 HTTP 接口,requests 负责调用扫描工具和模型 API,tenacity 用于重试失败的请求。
完成以上步骤后,运行 docker --versionpython3 --version,能看到版本号就说明环境就绪。

二、编写垂直安全Agent主体

垂直安全Agent的核心是一个调度程序:接收扫描任务,调用漏洞扫描器,再通过大模型对结果做语义分析,最后输出高置信度报告。
先建一个项目目录:

mkdir ~/sec-agent && cd ~/sec-agent

创建 agent.py,写入以下简化逻辑:

from flask import Flask, request, jsonify
import subprocess, requests, json

app = Flask(__name__)

MODEL_API_URL = "http://your-llm-api:8000/v1/chat/completions"
# 这里替换成你自己的大模型API地址

def run_scanner(target):
    # 调用Nuclei或Nmap的示例,实际请按需调整
    result = subprocess.run(
        ["nmap", "-sV", "-T4", target],
        capture_output=True, text=True, timeout=300
    )
    return result.stdout

def analyze_with_llm(scan_data):
    payload = {
        "messages": [
            {"role": "system", "content": "你是安全分析专家,请从扫描结果中提取真实漏洞并给出修复建议"},
            {"role": "user", "content": scan_data[:4000]}
        ]
    }
    resp = requests.post(MODEL_API_URL, json=payload, timeout=120)
    return resp.json().get("choices", [{}])[0].get("message", {}).get("content", "")

@app.route("/scan", methods=["POST"])
def scan():
    data = request.get_json()
    target = data.get("target")
    if not target:
        return jsonify({"error": "缺少 target 参数"}), 400
    raw = run_scanner(target)
    analysis = analyze_with_llm(raw)
    return jsonify({"target": target, "analysis": analysis})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

启动服务:

python3 agent.py

这样最基本的垂直安全Agent就跑起来了,它接受外部传入的扫描目标,执行 nmap 扫描,并调用大模型生成解读。
实际落地时可以替换为更专业的扫描器,例如 Nuclei、OpenVAS 或 Nessus。

三、接入自动化漏洞扫描并定时执行

Agent只提供单个接口还不够,自动化漏洞扫描需要定时触发、结果入库。
使用 cron 即可满足多数场景。
先新建扫描脚本 scheduled_scan.py

import requests, time

targets = ["https://example.com", "http://test-server.local"]
for t in targets:
    try:
        resp = requests.post("http://127.0.0.1:5000/scan", json={"target": t}, timeout=360)
        print(resp.json())
    except Exception as e:
        print(f"扫描失败 {t}: {e}")

然后添加 crontab 任务,比如每天凌晨2点执行:

crontab -e

加入这一行:

0 2 * * * cd /root/sec-agent && python3 scheduled_scan.py >> scan.log 2>&1

这样漏洞扫描就按计划自动运行,日志写入 scan.log
检查定时任务是否生效:

crontab -l

如果要更复杂的调度(重试、并发、结果回传),建议把扫描任务放进 Redis 队列,再用 Celery 做 Worker,但零基础起步先跑通 cron 更简单。

四、把Prompt安全沙箱真正落地

大模型处理外部输入时,Prompt 可能包含恶意指令。
安全沙箱要做的是把模型调用和外部环境隔离,即使 Prompt 触发模型输出异常命令,也无法影响宿主机。
最轻量的方案是让 Agent 在一个受限 Docker 容器中运行,只暴露必要网络。

创建沙箱配置 sandbox/docker-compose.yml

services:
  agent-sandbox:
    image: python:3.11-slim
    container_name: sec-agent-box
    network_mode: bridge
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true
    read_only: true
    tmpfs:
      - /tmp
    volumes:
      - ./agent-code:/app:ro
    working_dir: /app
    command: python agent.py

这个配置做了几件关键事:删除所有 Linux capabilities禁止提升权限文件系统只读,这样即使沙箱被攻破,攻击者也无法写文件或提权。
启动沙箱:

cd sandbox && docker compose up -d

如果不想用 Docker Compose,也可以直接运行容器:

docker run -d --name sec-agent-box --cap-drop ALL --security-opt no-new-privileges --read-only --tmpfs /tmp -v ./agent-code:/app:ro python:3.11-slim python /app/agent.py

注意,沙箱里的 Agent 要访问大模型 API,需要在容器里配置网络白名单,或用 --network host 并做好防火墙限制。
生产环境建议把大模型 API 放在内网,只允许沙箱容器通过内网地址访问。

五、常见坑和验证结果的方法

扫描结果误报率高:垂直安全Agent依赖大模型做分析,模型可能把低危信息当成漏洞。
建议在提示词里要求模型输出置信度,并设置阈值过滤,例如只保留 severity 为 high 或 critical 的项。

沙箱内请求超时:容器默认 DNS 可能失效,运行 docker exec sec-agent-box cat /etc/resolv.conf 确认 DNS;
如果使用宿主机网络,用 --dns 8.8.8.8 重新指定。

cron 任务不执行:注意 crontab 里的环境变量和 PATH,Python3 路径写绝对路径更稳妥,例如 /usr/bin/python3
检查日志 scan.log,确认没有权限或路径报错。

验证整个链路是否通,用一条命令发起测试扫描:

curl -X POST http://127.0.0.1:5000/scan -H "Content-Type: application/json" -d '{"target":"127.0.0.1"}'

能看到返回带大模型分析结果的 JSON 说明 Agent 正常;
再查看沙箱容器 docker logs sec-agent-box,里面会出现对应请求记录。
另外可以故意构造一个恶意 Prompt 发送给 Agent,观察沙箱是否只返回模型输出而不会影响宿主机文件,这是验证隔离效果最简单的手段。

如果你正在处理垂直安全Agent搭建、自动化漏洞扫描与Prompt安全沙箱实践,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
后续也可以把扫描结果接入告警平台,例如飞书机器人或企业微信,让 Agent 真正发挥自动化价值。

分享到:
上一篇
Agent RBAC权限模型,限制Agent调用Shell
下一篇
Agent工具劫持Tool Hijacking攻击原理与防御
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意