查找发出出站 HTTP 调用的进程,并尝试使用 syslog-ng 进行审计

查找发出出站 HTTP 调用的进程,并尝试使用 syslog-ng 进行审计

某些应用程序(未知)使用 HTTPS 协议向已知主机/端口/URL(这是一个 WAF 蜜罐,主机/URL/端口已知)发出零星、不规则、罕见的短出站 HTTP(S) 请求。请求可能每 3-5 天发生一次。实际上,每 3-5 天发出一次短请求。目标是定义哪个应用程序(二进制文件路径、PID 等)发出这些请求。服务器安装了大量软件,包括nginx、、、等。phpmariadbredisdocker

为了简单起见,蜜罐IP在这里将为7.7.7.7。

我到目前为止已经尝试过:

  1. tcpdump
$ sudo tcpdump -i any dst host 7.7.7.7 and "tcp[tcpflags] & (tcp-syn) != 0" and "tcp[tcpflags] & (tcp-ack) == 0" &> /tmp/out_7.7.7.7_$(date "+%Y.%m.%d-%H.%M.%S").log &

它似乎tcpdump不允许检测发出出站 http 请求的进程 ID 或可执行文件。

  1. auditctl/auditd
sudo auditctl -a exit,always -F arch=b64 -S connect -k connectLog

auditctl/auditd似乎可以输出路径和 pid,但它缺乏过滤功能。如果我启动 3-5 天的审计规则,我的磁盘将充满审计日志。或者,如果审计日志正在轮换,我可能会错过日志文件中已轮换和清除的所需日志数据。如果auditctl在写入时(而不是在解析日志时)有按目标 IP 过滤功能,它可能是最佳候选者。也许我遗漏了什么,它有过滤功能?

我想到另一个选择是制作一些 bash 脚本,它:

  • 开始审计connect
  • 像这样启动监控过程: ( tail -f -n0 /var/log/audit/audit.log & ) | grep -q "7.7.7.7"
  • 一旦监视器检测到此情况,停止审计auditctl -d...

问题是,此事件可能在 3-5 天后发生,届时所有磁盘都将满。

  1. 网络状态
$ sudo netstat -tupnc | grep 7.7.7.7

似乎netstat使用-c选项 (continuos) 会每 1 秒重复读取一次。由于请求非常短,它可能会错过此请求。

  1. 党卫军

ss似乎没有显示发起出站连接的进程。

  1. lsof
lsof -i TCP:80,443 -r 1

出站连接非常短且快,每秒运行一次 lsof 可能无法记录

  1. wireshark Wireshark 具有良好的过滤功能(通过 IP),但它似乎不显示连接发起者进程名称或 pid。

  2. 目前我只能使用这个解决方案:将syslog-ng(通过 TCP/网络接收日志时具有过滤功能)合并为接收方和auditd日志事件发送方。我成功地syslog-ng从端口 2222 启动,从网络接收数据并通过一些字符串对其进行过滤(已使用 进行测试curl)。但我无法管理auditd将日志发送到网络。

我做了什么:

7.1)安装audisp-remote-plugin

$ sudo apt install audispd-plugins

7.2) 已启用audisp-remote plugin

在文件中/etc/audit/plugins.d/au-remote.conf:设置active = yes

7.3)配置audisp-remote插件:

在文件中/etc/audit/auditsp-remote.conf

remote_server = 127.0.0.1
port = 2222

7.4) 禁用写入本地日志文件

在文件中/etc/audit/auditd.conf

write_logs = no

并重新启动auditd:

$ sudo systemctl restart auditd

7.5)添加审计规则来捕获连接(connect系统调用):

$ sudo auditctl -a exit,always -F arch=b64 -F saddr_fam=2 -S connect -k sckt

7.6)轮换日志以清除auditd日志中以前的数据

$ service auditd rotate

7.7)进行测试HTTP调用:

$ curl -v https://7.7.7.7/api/v1/t

7.8) 检查syslog-ng日志,但没有预期的记录。

如果有人知道最合适、最简单、最简单的方法来做到这一点,任何帮助都将不胜感激!

答案1

您可能可以使用文件源将审计日志导入 syslog-ng,然后使用相对较短的保留时间保留审计日志。

这样,您可以在 syslog-ng 端应用过滤,并将有趣的记录输出到单独的日志文件中。

相关内容