configure-security
配置 agent-ebpf-filter 的安全策略,包括 cgroup 网络拦截、BPF LSM 文件/执行拦截、tracked commands/paths 和 wrapper 规则。
SKILL.md.claude/skills/configure-security/SKILL.md
GitHubConfigure Security - 安全策略配置
本 skill 用于配置 agent-ebpf-filter 的多层安全策略。
使用场景
- 添加或删除被追踪的命令/路径
- 配置 wrapper 规则控制命令执行
- 启用 cgroup 网络拦截策略(阻止特定 IP/端口/进程网络访问)
- 启用 BPF LSM 文件/执行拦截策略
- 查看当前安全配置状态
前置要求
重要:修改安全策略需要在 Runtime Config 中启用 policyManagementEnabled 标志。
可用操作
1. 查看当前配置
使用 MCP 工具 config_snapshot 获取完整配置快照:
调用 MCP 工具 config_snapshot 可获取:
- 所有 tags
- 所有 tracked commands 及其 tag
- 所有 tracked paths 及其 tag
- 所有 wrapper rules
- Runtime settings
2. 添加追踪命令
使用 MCP 工具 add_tracked_command:
{
"command": "python3",
"tag": "ai-agent"
}
追踪命令使用精确 16 字节匹配,不支持通配符。
3. 添加追踪路径
使用 MCP 工具 add_tracked_path:
{
"path": "/home/user/project/src",
"tag": "sensitive-code"
}
追踪路径使用精确 256 字节匹配,不是递归匹配。
4. 网络拦截(cgroup sandbox)
阻止 IP 地址访问
{
"ip": "192.168.1.100"
}
// 或 IPv6
{
"ip": "2001:db8::1"
}
阻止端口访问
{
"port": 443
}
阻止特定进程的所有网络访问
{
"pid": 12345
}
这会阻止该 PID 所在 cgroup 的所有网络流量。
5. 文件/执行拦截(BPF LSM)
阻止特定可执行文件路径
{
"path": "/usr/bin/suspicious-binary",
"isExec": true
}
阻止可执行文件名(basename)
{
"basename": "malware.exe",
"isExec": true
}
阻止文件/目录名访问
{
"basename": "secrets.txt",
"isExec": false
}
这会阻止对该 basename 的 open/read/write/mmap 等操作。
安全边界说明
Cgroup Network Sandbox
- 作用范围:cgroup v2 级别,影响整个 cgroup 内的所有进程
- 拦截点:kernel
cgroup/connect4、cgroup/connect6、cgroup/sendmsg4、cgroup/sendmsg6 - 匹配规则:
- IP 地址:精确匹配(IPv4 或 IPv6)
- 端口:精确匹配 TCP/UDP 目标端口
- Cgroup:按 cgroup v2 inode ID 匹配
- 限制:不支持 CIDR 或端口范围
BPF LSM Enforcer
- 作用范围:全局文件系统 LSM hooks
- 拦截 hooks:
bprm_check_security:execve 拦截file_open、file_permission:文件访问拦截mmap_file、file_mprotect:内存映射拦截inode_*:文件创建/删除/重命名拦截
- 匹配规则:
- Exec path:精确路径匹配
- Exec name:可执行文件 basename 匹配
- File name:文件/目录 basename 匹配(不是全路径)
- 限制:不支持通配符或正则表达式
验证方法
- 查看配置:调用
config_snapshotMCP 工具 - 查看系统健康:调用
get_system_healthMCP 工具查看 enforcement 状态 - 测试拦截:
- 网络拦截:尝试访问被阻止的 IP/端口,应失败
- 文件拦截:尝试访问被阻止的文件,应返回
EPERM - 执行拦截:尝试执行被阻止的程序,应失败
常见场景示例
场景 1:阻止 AI Agent 访问外网
1. 获取 AI agent 进程的 PID
2. 使用 block_process_cgroup 阻止该 PID 的 cgroup
3. Agent 将无法发起任何网络连接
场景 2:保护敏感文件
1. 使用 block_file_access 阻止 "api_keys.json" basename
2. 所有进程尝试打开该文件名都会被拦截
场景 3:追踪特定命令的文件访问
1. 使用 add_tracked_command 添加 "claude" 命令
2. Dashboard 中会显示所有 claude 进程的 syscall 事件
注意事项
- 权限要求:所有策略修改都需要
policyManagementEnabled=true - 持久化:eBPF maps 会被 pin 到
/sys/fs/bpf/agent-ebpf/,重启后保留 - 性能影响:LSM hooks 在每次文件操作时执行,大量规则可能影响性能
- 恢复方法:
- 手动清理:删除
/sys/fs/bpf/agent-ebpf/下的 pinned maps - 或通过 UI 的 Security Policies 页面逐条删除规则
- 手动清理:删除