You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH堡垒机与SOCKS代理的出站连接审计方案咨询

SSH堡垒机与SOCKS代理的出站连接审计方案咨询

看起来你现在需要解决的是Debian 12堡垒机下,覆盖SSH跳转和SOCKS5代理两种场景的出站TCP连接审计问题,还要满足ISO合规和SIEM接入的要求——我之前在客户的合规项目里刚好处理过几乎一模一样的场景,给你一套可落地的方案:

先明确你的核心需求

你需要的是无死角覆盖两种访问方式的出站连接日志,每条日志必须关联到具体的技术人员账号,同时日志格式要能被RSyslog正常转发到SIEM。

现有auditctl规则的不足

你提到的auditctl -a always, exit -S connect规则其实是个不错的起点,但它只追踪了connect系统调用,没区分IPv4/IPv6,也没做用户上下文的强关联,而且对于SOCKS代理这种由SSH进程发起的连接,需要确保规则能捕捉到SSH进程的系统调用。

我的完整解决方案

1. 用auditd做核心审计(覆盖所有场景)

Debian 12的auditd已经很成熟,只要规则配置正确,能完美捕捉所有出站TCP连接,包括SOCKS代理的:
首先,添加完整的auditd规则:

# 追踪64位系统下所有成功和失败的IPv4 connect调用,标记为outbound-tcp
auditctl -a always,exit -F arch=b64 -S connect -F a0=2 -F exit=0 -k outbound-tcp
auditctl -a always,exit -F arch=b64 -S connect -F a0=2 -F exit!=-EPERM -k outbound-tcp
# 追踪IPv6的connect调用
auditctl -a always,exit -F arch=b64 -S connect -F a0=10 -F exit=0 -k outbound-tcp-ipv6
auditctl -a always,exit -F arch=b64 -S connect -F a0=10 -F exit!=-EPERM -k outbound-tcp-ipv6

然后把这些规则保存到持久化文件,避免重启后丢失:

# 把当前规则导出到规则文件
auditctl -l > /etc/audit/rules.d/99-outbound-tcp-audit.rules
# 重启auditd服务
systemctl restart auditd

这条规则会追踪所有进程的connect系统调用,并且在日志里包含auid(发起连接的用户ID)、saddr(目标IP)、dport(目标端口)这些关键字段——哪怕是SOCKS代理的连接,因为SOCKS是由用户启动的SSH进程发起的,auditd会通过auid关联到对应的技术人员账号。

2. 处理SOCKS代理的日志关联

SOCKS代理的连接是由ssh -D启动的进程发起的,auditd的日志里会显示comm=ssh,结合auid就能明确是哪个用户在使用SOCKS代理访问哪个目标。你可以用ausearch测试一下:

ausearch -k outbound-tcp -ua <你的测试用户UID>

输出的日志里会有十六进制的saddr,SIEM工具一般都能自动解析成明文IP,或者你可以在RSyslog里加个简单的解析规则(不过大部分SIEM都能处理)。

3. 可选:用iptables做日志备份

如果担心auditd有遗漏(比如某些特殊进程绕过了系统调用追踪),可以给每个用户的出站连接加iptables日志作为补充:

# 给用户UID为1001的出站连接打标记
iptables -t mangle -A OUTPUT -m owner --uid-owner 1001 -j MARK --set-mark 1001
# 记录这个标记的出站连接,日志前缀带上UID
iptables -t filter -A OUTPUT -m mark --mark 1001 -j LOG --log-prefix "OUTBOUND_USER_1001: " --log-level info

这种方式的好处是日志更简洁,直接能在syslog里看到,但需要给每个用户单独配置,适合用户数量不多的团队。

4. 确保SIEM能正确解析字段

不管用auditd还是iptables,都要确保SIEM能提取到以下核心字段:

  • auid/UID:对应技术人员的堡垒机账号
  • 目标IP地址(auditd里的saddr,iptables里的DST)
  • 目标端口(auditd里的dport,iptables里的DPT)
  • 进程名(auditd里的comm,区分是SSH跳转还是SOCKS代理)

验证步骤

配置完后一定要做测试:

  1. 用技术人员账号登录堡垒机,通过ssh -J跳转到一台测试服务器,检查SIEM里是否有对应的日志
  2. 启动SOCKS代理ssh -D 1080 localhost(或者直接用堡垒机的SOCKS配置),然后用curl测试:curl -x socks5://localhost:1080 http://testip.cn,检查SIEM里是否有对应的出站连接日志,并且关联到正确的用户名

备注:内容来源于stack exchange,提问作者Rodolfo Saccani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:33:15