Joh*_*Doe 59 networking security process
我有一个监听 2 个端口的进程:45136/tcp 和 37208/udp(实际上我认为它是同一个进程)。但 netstat 不返回任何 pid :
netstat -antlp | grep 45136
tcp 0 0 0.0.0.0:45136 0.0.0.0:* LISTEN -
Run Code Online (Sandbox Code Playgroud)
结果与“grep 37208”相同。
我也试过 lsof :
lsof -i TCP:45136
Run Code Online (Sandbox Code Playgroud)
但它不会返回任何东西。这是squeeze的新安装,我真的不知道这个过程是什么。任何的想法 ?
ANSWER 感谢您的意见,我发现它是什么。我卸载了 nfs-server nfs-common(在 dkpg --get-selections | grep nfs 搜索之后)并且未知进程消失了。奇怪的是,内核进程没有以任何方式标记。
再次感谢你们两位。;)
slm*_*slm 84
那里有一个过程,您的用户 ID 只是不知道它是什么。这是由lsof它提供的一层保护,使您看不到这一点。只需重新运行该命令,但使用该sudo命令为其添加前缀。
$ sudo netstat -antlp | grep 45136
Run Code Online (Sandbox Code Playgroud)
lsof在顶部的输出中甚至有关于此的警告。
(并非所有进程都可以识别,非拥有的进程信息将不会显示,您必须是 root 才能查看所有内容。)
$ netstat -antlp | grep 0:111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
$ sudo netstat -antlp | grep 0:111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1248/rpcbind
Run Code Online (Sandbox Code Playgroud)
如果你没有任何运气,netstat也许ss会做。您仍然需要使用sudo,并且输出可能有点神秘。
$ ss -apn|grep :111
LISTEN 0 128 :::111 :::*
LISTEN 0 128 *:111 *:*
$ sudo ss -apn|grep :111
LISTEN 0 128 :::111 :::* users:(("rpcbind",1248,11))
LISTEN 0 128 *:111 *:* users:(("rpcbind",1248,8))
Run Code Online (Sandbox Code Playgroud)
在某些情况下,根本没有与正在使用的 TCP 端口相关联的 PID。您可以在@derobert's answer 中阅读有关 NFS的信息,这就是其中之一。还有其他人。我有使用 ssh 隧道连接回 IMAP 等服务的实例。这些显示也没有进程 ID。
在任何情况下,您都可以使用更详细的形式,netstat其中可能会进一步阐明最终使用 TCP 端口的进程。
$ netstat --program --numeric-hosts --numeric-ports --extend
Run Code Online (Sandbox Code Playgroud)
$ netstat --program --numeric-hosts --numeric-ports --extend |grep -- '-' | head -10
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 192.168.1.103:936 192.168.1.3:60526 ESTABLISHED root 160024310 -
tcp 0 0 192.168.1.1:2049 192.168.1.3:841 ESTABLISHED sam 159941218 -
tcp 0 0 127.0.0.1:143 127.0.0.1:57443 ESTABLISHED dovecot 152567794 13093/imap-login
tcp 0 0 192.168.1.103:739 192.168.1.3:2049 ESTABLISHED root 160023970 -
tcp 0 0 192.168.1.103:34013 192.168.1.3:111 TIME_WAIT root 0 -
tcp 0 0 127.0.0.1:46110 127.0.0.1:783 TIME_WAIT root 0 -
tcp 0 0 192.168.1.102:54891 107.14.166.17:110 TIME_WAIT root 0 -
tcp 0 0 127.0.0.1:25 127.0.0.1:36565 TIME_WAIT root 0 -
tcp 0 0 192.168.1.1:2049 192.168.1.6:798 ESTABLISHED tammy 152555007 -
Run Code Online (Sandbox Code Playgroud)
如果您注意到输出包含 INODES,那么我们可以使用此信息回溯到流程中。
$ find -inum 152555007
Run Code Online (Sandbox Code Playgroud)
这将向您显示一个文件,该文件可能会引导您进入一个过程。
der*_*ert 20
另一种选择是套接字不属于进程,它属于内核。这方面的一个常见示例是 NFS。
Watt:~# netstat -ltp | egrep -- '-[[:space:]]*$'
tcp 0 0 *:nfs *:* LISTEN -
tcp 0 0 *:48131 *:* LISTEN -
tcp6 0 0 [::]:55607 [::]:* LISTEN -
tcp6 0 0 [::]:nfs [::]:* LISTEN -
Run Code Online (Sandbox Code Playgroud)
一般来说,我不确定识别这些的好方法。在 NFS 的特殊情况下,rpcinfo往往会告诉我们:
anthony@Watt:~$ rpcinfo -p | grep 48131
100021 1 tcp 48131 nlockmgr
100021 3 tcp 48131 nlockmgr
100021 4 tcp 48131 nlockmgr
Run Code Online (Sandbox Code Playgroud)
不幸的是,这只适用于 IPv4。要获得 v6,您必须关闭-p,然后它会以一种愚蠢的方式显示端口号:作为 IP 地址的两个额外八位字节。端口 55607 因此变成217.55(因为217 ?×?256?+? 55 ?=?55607):
anthony@Watt:~$ rpcinfo | grep -i 217.55
100021 1 tcp6 ::.217.55 nlockmgr superuser
100021 3 tcp6 ::.217.55 nlockmgr superuser
100021 4 tcp6 ::.217.55 nlockmgr superuser
Run Code Online (Sandbox Code Playgroud)