在一次标准安全扫描中,我们发现有什么东西正在监听我们未知的端口 2030,而且我们无法确定其来源。
# netstat -anp | grep LIST
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
....
tcp 0 0 0.0.0.0:2030 0.0.0.0:* LISTEN -
两者都没有“进程”。连接到它没有产生任何信息(输入后断开连接,很可能是因为未遵循预期的协议),lsof -i :2030
也没有任何东西。只是为了确保我复制了一个新的lsof
二进制文件,但我不确定它调用了哪些额外的、可能被破坏的库。2049
我知道的是来自 nfs-kernel-server,它的行为方式相同(没有来自 netstat 或 lsof 的进程信息)。瞧,在 debian 机器上重新启动 nfs-kernel-server 后,监听 2030 的进程消失了……
所以,我的问题是:
- 我是否应该担心盒子受到损害,或者这确实是 nfs-kernel-server 问题?
- 如果这是 nfs-kernel-server 问题,那么究竟发生了什么,为什么无法
lsof
显示这些信息?
。
Linux 2.6.39-2-686-pae
nfs-kernel-server 1:1.2.3-3
lsof 4.81.dfsg.1-1
答案1
例如,您是否有自动安装的 NFS 主目录?如果有,这些监听端口将在每个用户注销后几秒/几分钟消失。
答案2
端口 2049 肯定与内核中的 nfs 服务相关。在我的系统上,我正在运行 nfsd。
:; sudo netstat -anp | grep LIST
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
那么,让我们看看我是否正在运行 kmod:
:; lsmod | grep nfs
nfsd 287337 17
exportfs 38849 1 nfsd
auth_rpcgss 81889 1 nfsd
nfs 298541 1
lockd 101297 3 nfsd,nfs
fscache 52385 1 nfs
nfs_acl 36673 2 nfsd,nfs
sunrpc 200073 19 nfsd,auth_rpcgss,nfs,lockd,nfs_acl
是的!现在我们来检查一下内核线程是否启动了:
:; ps -aefd | grep nfs
root 3648 171 0 2011 ? 11:46:48 [nfsiod]
root 3882 171 0 2011 ? 00:00:00 [nfsd4]
root 3883 1 0 2011 ? 00:00:00 [nfsd]
root 3884 1 0 2011 ? 00:00:00 [nfsd]
root 3885 1 0 2011 ? 00:00:00 [nfsd]
root 3886 1 0 2011 ? 00:00:00 [nfsd]
root 3887 1 0 2011 ? 00:00:00 [nfsd]
root 3888 1 0 2011 ? 00:00:00 [nfsd]
root 3889 1 0 2011 ? 00:00:00 [nfsd]
root 3890 1 0 2011 ? 00:00:00 [nfsd]
是的!
因此至少,您可以通过这种方式确认 2049 实际上是 NFS。
我不知道 2030 年是什么时候。