某些應用程式(未知)使用HTTPS 協定向已知主機/連接埠/url(這是WAF 蜜罐,主機/url/連接埠已知)發出零星的、非常規的、罕見的短出站HTTP(S)請求。請求可能每 3-5 天發生一次。這實際上是每 3-5 天一次的簡短請求。目標是定義哪些應用程式(二進位檔案的路徑、PID 等)發出這些請求。伺服器安裝了很多軟體,包括nginx
,,,,等等。php
mariadb
redis
docker
為簡單起見,蜜罐 IP 此處為 7.7.7.7。
到目前為止我嘗試過的:
- tcp轉儲
$ 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 或可執行檔。
- 審計控制/審計
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 天後發生,此時所有磁碟都已滿。
- 網路統計
$ sudo netstat -tupnc | grep 7.7.7.7
看來netstat
與-c
選項(連續)每 1 秒重複讀取一次。由於請求非常短,因此可能會錯過此請求。
- SS
ss
似乎不顯示發起出站連線的進程。
- 拉索夫
lsof -i TCP:80,443 -r 1
出站連線非常短且快,每 1 秒執行 lsof 可能不會記錄它
Wireshark Wireshark 具有良好的過濾功能(按 IP),但它似乎不顯示連接發起者進程名稱或 pid。
目前我堅持解決方案:將
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) 停用寫入本機 log_file
在文件中/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 端套用過濾,並將感興趣的記錄輸出到單獨的日誌檔案中。