我正在诊断旧的 Solaris 10 版本,在端口扫描期间我发现了一个开放端口,该端口不在该服务器的批准列表中。
我尝试了各种开关组合netstat
,但似乎无法获得正确的输出来提供相关的服务名称或开放端口的 PID。
与更高版本的 Solaris 版本和其他 UNIX 操作系统相比,此版本上的 netstat 功能集似乎受到限制。netstat -tulpn
例如不起作用。
lsof
由于安全限制,我也无法安装。
有任何想法吗?
答案1
对于 Solaris,您可以使用pfiles <pid>
查看某个进程打开了哪些网络端口。使用 for 循环,/proc/*
您可以在每个正在运行的进程上使用它pfiles
来查找您要查找的端口。缺点是您需要使用root
Solaris 10,或者能够pfexec pfiles
在 Solaris 11 上获得特权 ( ) 才能获取信息。
如果您能够进入root
Solaris 主机,您应该能够使用以下内容:
PORT=22; for PID in /proc/*; do pfiles ${PID} |grep "port: ${PORT}" && echo ${PID}; done
这将迭代/proc/*
并过滤指定的端口,如果找到匹配项,则进程 ID ( /proc/####
) 将显示在下一行。