如何判断 Linux 上哪个进程打开了特定端口?

如何判断 Linux 上哪个进程打开了特定端口?

我在服务器上运行了 nmap,发现一个奇怪的端口打开了。我试图找出是否有办法将该端口映射到特定进程,但不知道是否有这样的工具。

有什么建议么?

答案1

和其他帖子中提到的 Netstat 一样,lsof 命令也应该能够很好地完成此操作。只需使用以下命令:

lsof -i :<port number>

并且所有进程都应显示出来。我在 OS X 上经常使用它。

Debian 管理 lsof 文章

答案2

警告:您的系统已被入侵。

您需要的工具是lsof,它将列出文件(以及套接字和端口)。它很可能已安装,并且很可能是攻击者的版本,这意味着它将说谎给你。

这确实是一个 rootkit。我以前见过这种行为,而且总是一个 rootkit。您的系统已受到威胁,您使用的任何来自同一台机器的工具都不可信任。启动到 Live CD(其中包含只读的受信任二进制文件)并使用它提取您的数据、设置等。您拥有的任何程序、任何脚本,抛弃他们不要带他们. 对待他们和系统,就像他们得了麻风病一样,因为他们

完成后,从轨道上用核武器轰炸它

游戏结束了,游戏结束了。

尽快这样做。哦,还有,拔掉你的网络连接--拒绝攻击者访问。

答案3

sudo netstat -lnp  

列出正在监听传入连接的端口以及打开该端口的相关进程。

答案4

如果您无法使用操作系统工具看到打开的端口,并且怀疑存在入侵,则可能是因为已安装了 rootkit。

该 rootkit 可能已经改变了系统工具以避开某些进程和端口,或者改变了内核模块。

您可以使用多种自动化工具来检查 rootkit。在 Ubuntu 中,“apt-cache search rootkit”显示以下内容:

chkrootkit - rootkit detector
rkhunter - rootkit, backdoor, sniffer and exploit scanner
unhide - Forensic tool to find hidden processes and ports

如果你碰巧有一个 rootkit,你可以将“更改”恢复到你的系统,但我建议你找出入侵的方式并强化系统以避免重复发生。


它们并非 Ubuntu 独有,您也可以在 CentOS 中使用它们。只需查找软件包或从其页面下载即可。


从该端口的输出来看,您确实在运行 pcanywhere:“�Ы� <Enter>”与“请按 <Enter>”非常相似,后者是 pcanywhere 欢迎消息。我不知道为什么该进程没有显示在进程列表中。您是 root 吗?

您可以尝试重新启动以查看它是否也是一次性运行的过程。

相关内容