Ubuntu的 – 我怎样才能看到一个IP在我的服务器正在做什么?

我的服务器出现问题,并且一直在使用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正在做的事情…但是,因为它是一个出站连接,我怎么知道它是真的在做什么?

46414是由您的操作系统创build的随机生成的端口。 这用于输出端口来维护会话。

这是连接端口,你需要看看,这将是由https所示的443。 这意味着您的IP实际上是通过https连接到远程服务器,而不是相反。

有了以下选项,您可以进一步debugging(端口信息):

 iftop -i eth0 -P 

一些端口(如80 dest)将被转换为服务名称(www),或25到smtp。 其他人,你必须弄清楚IANA端口作业:

http://www.ietf.org/assignments/port-numbers

你也可以使用tcpdump,但是如果stream量很大,它会在你的屏幕上显示很多信息。

看起来你的机器正在通过端口443与远程服务器进行出站连接。使用你最喜欢的networking嗅探器(ngrep,tcpdump等),并查看远程ip和端口443的连接。

执行lsof -i:46414 ,您将看到哪个进程/命令,PID,User …等已经启动了与远程服务器的连接。 顺便说一句,这个远程服务器的IP由Twitter拥有 – http://www.mensus.net/browser/ipis.shtml?url=199.16.156.20

考虑到所有的答案,在我看来,在您的Web服务器上有一个脚本或网页正在进行此连接。 我基于这个事实,即它是拥有连接的Web服务器用户,而且是出站服务器。

我一定会担心这一点,尤其是考虑到远程服务器的名称是ns.... 这听起来好像在您的网站上有一些恶意脚本连接到另一台已被入侵的服务器。 当然,也有可能有人正在使用例如mod_proxy从远程服务器获取图片或javascript,但是通过HTTPS做这件事并不常见。

所以我的build议是通过您的网站上使用的网页和脚本,并试图find一个包含对该服务器的请求。 如果您对启动时间有所了解,则可以使用find /path/to/webserver/contents -mtime -15如果您认为它在15天前开始),以列出过去15天内所更改的所有文件。

您可能还想在您的防火墙中丢弃199.16.156.20的stream量,但我仍然应该警惕您的服务器是否开始连接到其他远程站点。

谈到防火墙 – 一般来说,我认为不应允许Web服务器启动与外部世界的连接,除了必要的服务,如DNS,电子邮件(可能仅限于您的主中继服务器)以及与相关的连接升级您的操作系统的服务。 入站连接应该只允许来自您自己的networking的SSH和您的Web服务器端口。