it-swarm.cn

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

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

有什么建议么?

32
jnman

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

lsof -i :<port number>

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

有关lsof的Debian管理文章

57
bjtitus

警告:您的系统已损坏。

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

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

完成后, 从轨道上将其核弹

Game over man, game over.

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

23
Avery Payne
Sudo netstat -lnp  

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

14
Joe

netstat -anp

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

netstat -anp | grep“列表”

那只会给你打开的端口。

4
sysadmin1138

如果您看不到使用操作系统工具打开的端口,并且怀疑入侵,则可能是安装了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>”非常相似。我不知道为什么该过程没有出现在过程列表中。你是根吗?

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

4
chmeee

要详细说明@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,这没有什么用。使用PID运行ps命令,我们可以立即看到它是CrashPlan。

0
ErebusBat