我见过几个类似的问题 - 但没有一个真正回答了这个问题。所以这里是:
问题:我们的一台服务器上正在运行一个脚本,该脚本正在发出传出帖子(和其他)请求,我们怀疑该脚本使用了 CURL。它正在尝试查找其他服务器中的漏洞 - 在本例中具体指运行 WordPress 的服务器中的漏洞,但还有其他请求。
问题:是否有一个 GUI 工具可用于监视和查看这些请求的来源,以便我们可以隔离脚本并将其关闭?
我们正在运行 AWS 实例,我们确实有可用的 Webmin(如果有帮助的话),并且这是一台不能明显减慢速度或其正常流量受阻的生产机器。
提前感谢大家的帮助!
答案1
我知道您在寻找 GUI,但没有带有“告诉我是谁黑了我”魔法按钮的 GUI。这不是电视,这是系统管理。您需要使用适当的工具。
首先,您可以通过以下方式阻止所有目标端口为 80 的传出通信iptables
:
iptables -t filter -A OUTPUT -p tcp --dport 80 -j DROP
无论哪个进程尝试启动它,这都会中断所有通信。然后您可以开始操作netstat
并ps
找出哪个进程在您的宝贵机器上做了坏事:
netstat -np | grep ^tcp | grep ":80"
在我的计算机上,上述命令的结果是这样的:
tcp 0 0 192.168.1.2:34831 185.31.17.246:80 ESTABLISHED 22640/spotify
tcp 0 0 192.168.1.2:48809 104.16.105.85:80 ESTABLISHED 10572/iceweasel
如您所见,只有两个进程通过 HTTP 与某些服务器进行通信 - iceweasel 和 spotify。最后一列是 [process_number]/[process_name]。通过它,您可以查询ps
并获取实际进程:
ps axu | grep 22640
再次,在我的计算机上,它显示(缩写)如下:
mkudlac+ 22682 0.2 2.0 1003656 123440 ? Sl 09:12 0:31 /opt/spotify/spotify-client/Data/SpotifyHelper --type=renderer --js-flags=--harmony-proxies --no-sandbox --lang=en-US --lang=en-US --locales-dir-path=/opt/spotify/spotify-client/Data/locales --log-severity=disable --resources-dir-path=/opt/spotify/spotify-client/Data --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=22640.1.2031916850
现在我知道了可执行文件的路径以及它运行的用户。
将所有这些组合成“简单”的一行:
netstat -np | awk '/^tcp/{print $5 "/" $7}' | grep ":80" | awk -F'/' '{print $1; if ($2 != "-") system("ps axu | grep " $2 " | grep -v grep"); print "================"; }'
我的机器上的结果显示如下:
104.16.104.85:80
mkudlac+ 10572 6.3 6.5 1016592 401108 ? Sl 11:38 2:18 iceweasel http://serverfault.com/questions/715556/is-there-a-gui-tool-to-log-and-view-outgoing-curl-requests-from-a-linux-server
================
第一行是目标 IP 地址。第二行是恶意进程的完整信息。第三行是分隔符,用于光学划分大量输出。
这些命令(至少netstat
和ps
)需要在 root 下执行。清理机器时,可以iptables
使用以下命令删除阻止命令:
iptables -t filter -D OUTPUT -p tcp --dport 80 -j DROP
编辑:
为了能够让此脚本无人值守并登录到文件,您可以按以下方式更改它:
while (true); do netstat -np | awk '/^tcp/{print $5 "/" $7}' | grep ":80" | awk -F'/' '{print $1; if ($2 != "-") system("ps axu | grep " $2 " | grep -v grep"); print "================"; }' | tee -a hack.log; sleep 30; done
这将每 30 秒检查一次恶意连接并将其写入 hack.log 文件。
答案2
答案3
我还想提议“伊夫托普“,这对于从您的机器获取现有连接很有用:它监听命名接口上的网络流量并显示主机对当前带宽使用情况的表格