我的服务器出现了问题,一直iftop
在实时显示与服务器的连接。
它显示了一个不断与我连接的 IP 地址,但我找不到有关其用途的任何信息。
我怎样才能知道该 IP 到底对我的服务器做了什么?
编辑:在答案的帮助下,我能够使用 iftop 看到以下内容
my.ip.address:46414 => 199.16.156.20:https
然后使用 netstat -a 我看到以下内容
tcp 0 0 my.ip.address:46414 199.16.156.20:https ESTABLISHED
我确实有一个 Apache Web 服务器,但日志中没有显示该 IP。此外,它为什么连接到端口 46414?他在做什么!
谢谢
编辑2:好的,感谢 Daniel t 的回答。我越来越接近了。我尝试使用 lsof -i:46475,这是输出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 22003 www-data 19u IPv4 716074 0t0 TCP ns.arg2.wirall.com:46475
因此看起来 apache 正在做一些事情...但由于它是一个出站连接,我怎么知道它真正在做什么?
答案1
46414 是操作系统随机生成的端口。这是为传出端口创建的,用于维持会话。
您需要查看的是连接端口,即 https 所指示的 443。这意味着您的 IP 实际上是通过 https 连接到远程服务器,而不是相反。
答案2
使用以下选项,您可以进一步调试(端口信息):
iftop -i eth0 -P
一些端口(如 80 dest)将被转换为服务名称(www),或 25 转换为 smtp。其他端口,您必须在 IANA 端口分配中弄清楚:
http://www.ietf.org/assignments/port-numbers
您也可以使用 tcpdump,但如果流量很大,它会在您的屏幕上显示大量信息。
答案3
看起来您的机器正在与端口 443 上的远程服务器建立出站连接。使用您最喜欢的网络嗅探器(ngrep、tcpdump 等)查看与远程 ip 和端口 443 的连接。
答案4
综合考虑所有答案,我认为您的 Web 服务器上有一个脚本或网页正在建立此连接。我之所以得出这一结论,是因为 Web 服务器用户拥有此连接,并且此连接指向出站服务器。
我当然会担心这一点,尤其是考虑到远程服务器的名称是ns....
。在我看来,这听起来好像您的网站上有一些恶意脚本正在连接到另一台已被入侵的服务器。当然,同样有可能有人正在使用例如mod_proxy
从远程服务器获取图片或 javascript,但通过 HTTPS 这样做并不常见。
因此,我的建议是检查您网站上使用的网页和脚本,并尝试找到包含对该服务器的请求的网页和脚本。如果您知道它何时开始,您可以使用find /path/to/webserver/contents -mtime -15
如果您认为它是 15 天前开始的,列出过去 15 天内更改的所有文件。
您可能还想在防火墙中删除 199.16.156.20 的流量,但我仍然应该保持警惕,看看您的服务器是否开始与其他远程站点建立连接。
说到防火墙 - 一般来说,我认为 Web 服务器不应该被允许发起与外界的连接,除非是必要的服务,例如 DNS、电子邮件(可能仅连接到您的主中继服务器)以及与您的操作系统相关的升级服务的连接。入站连接只应允许来自您自己网络的 SSH 和您的 Web 服务器端口。