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


32

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

有什么建议么?


在2018
。– SDsolar

Answers:


57

就像其他文章中提到的Netstat一样,lsof命令应该也可以做到这一点。只需使用此:

lsof -i :<port number>

并且所有流程都应该出现。我在OS X上经常使用它。

关于lsof的Debian管理文章


有趣。我对此一无所知。但是,由于黑客尝试,我正在对此进行调查。机器是朋友的。您可以远程登录到有问题的端口,但lsof和netstat都不会显示该端口为开放状态。
jnman

端口是5631,根据/ etc / services是pcanywheredata,所以非常可疑。
jnman 2009年

现在,很好,我不知道!始终使用netstat。谢谢
破坏者

4
如果netstat和lsof均未显示该端口已被使用,但计算机正在响应该端口,则可能是安装了root kit。我建议将任何数据从计算机上移到其他地方,然后对其进行处理。
卡米尔·基西尔

6
这确实是一个rootkit。我以前已经看到过这种行为,并且它始终是一个rootkit。您的系统已受到威胁,并且您使用的任何工具都不可信任。引导到Live CD(具有只读的受信任的二进制文件)中,然后使用它来提取数据,设置等。您拥有的所有程序,脚本都将其放弃。不要带他们。将系统视为麻风病,因为/ does /。完成后,从轨道上将其弹开。尽快执行此操作。哦,拔下网络连接-拒绝攻击者访问。
艾利·佩恩 Avery Payne)2009年

23

警告:您的系统已损坏。

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

这确实是一个rootkit。我以前见过这种行为,这是始终是一个rootkit。您的系统已受到威胁,并且您使用的源自同一台计算机的任何工具都不能被信任。引导到Live CD(具有只读的受信任的二进制文件),然后使用它来提取数据,设置等。您拥有的所有程序,脚本都将其放弃不要带它们。对待他们和系统,就好像他们患有麻风病一样,因为它们确实如此

完成后,从orbit对其进行核弹

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

尽快执行此操作。哦,拔下网络连接-拒绝攻击者访问。


1
这说明了一切。找出问题所在,将服务器展平,从上次已知的良好备份中还原。生活太短暂了,无法玩游戏。
罗布·摩尔

2
只需添加:请确保您知道入侵的日期,因为您可能正在还原刚删除的同一rootkit。否则,请从该日期之前/之前恢复。
艾利·佩恩

1
那是一个有趣的图形。我知道系统受到威胁(幸运的是它不是我的)。我更好奇的问题是首先追踪他的身份。我怀疑是通过php / joomla进行的,但想了解当没有任何根工具包检测工具显示该端口时,该端口如何/为什么保持打开状态。
jnman

1
大声笑@“哦,拔掉你的网络连接”
theman_on_osx

6
得出该结论之前,还有其他可能的解释说明未预期的端口被打开。例如您安装但忘记了的软件包。
David J.

14
sudo netstat -lnp  

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


4

netstat -anp

“ -p”告诉它列出打开端口的进程ID。-an告诉它列出侦听端口,而不解析名称。在繁忙的系统上,可以大大加快返回速度。

netstat -anp | grep“列表”

那只会给你打开的端口。


4

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

rootkit可能已更改了系统工具,以避免某些进程和端口或更改了内核模块。

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

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

如果您碰巧拥有rootkit,则可以将“更改的文件”还原到系统中,但是我建议您了解入侵的产生方式并强化系统,以防止重复。


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


通过该端口的输出,您似乎确实在运行pcanywhere:“ ... <Enter>”与pcanywhere欢迎消息“请按<Enter>”非常相似。我不知道为什么该过程没有出现在过程列表中。你是根吗?

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


对centos有什么建议吗?
jnman 2009年

奇怪的是,unhide-tcp不会显示任何可疑端口。chkrootkit / rkhunter报告了所有清楚的信息(但主要是因为我在问这个问题之前删除了可疑的目录)
jnman 2009年

FWIW,rootkit已将自己作为apache安装在/ var / tmp / ...和/var/tmp/.ICE-Unix/*中,第二个是偷偷摸摸的,因为我第一次没有注意到它,我想知道bash进程被杀死后不断产生。
jnman

原来,饼干安装了cron作业。
jnman

0

要详细说明@bjtitus的答案,您可以获得一些非常详细的信息,例如:

$ lsof -i :8000
COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
squid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)

$ ps -fp 1289
UID        PID  PPID  C STIME TTY          TIME CMD
proxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf

我在那里可以看到鱿鱼是一个过程,但实际上是我squid-deb-proxy占据了港口。

Java应用程序的另一个好例子:

$ lsof -i :4242
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)

$ ps -fp 3075
UID        PID  PPID  C STIME TTY          TIME CMD
root      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl

您可以在lsof(LiSt打开文件)中看到它是Java,这没有什么用。ps使用PID 运行命令,我们可以立即看到它是CrashPlan。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.