如何列出打开但未使用的(由进程/程序)端口?

如何列出打开但未使用的(由进程/程序)端口?

我有一个安装了 debian wheezy 的 VPS。防火墙处于活动状态,默认情况下不允许所有端口。防火墙可以通过 VPS 提供商的 Web 界面进行管理,最近,我通过此 Web 界面打开了一个端口。实际上没有进程连接到此端口。

由于我有 SSH 访问权限,我想知道是否有命令或方法可以从终端获取我的 VPS 的未阻止端口列表。

答案1

这主要取决于防火墙如何阻止关闭的端口。

远程端口扫描可能是一种方法。关闭端口,该端口未被防火墙阻止,但没有相关进程主动监听和接受连接,可以通过这种方式确定。

nmap 手册有一些背景信息就此而言。

答案2

这完全取决于所讨论的防火墙的性质。

如果它是一个物理上独立的设备,那么检测端口是否“开放”(即“未被阻止”)的唯一可靠方法是实际从外部向其发送流量,并查看流量是否到达内部。其他所有方法充其量只能提供间接证据,因为防火墙可以以任何它认为合适的方式自由响应被阻止端口上的流量。它可能使端口显示为“开放”(即“由进程提供服务”),“关闭”(即“没有进程监听”)或“过滤”(即“根本没有响应”)。

如果它实际上是通过 iptables 在服务器本身上实现的,那么在获得 root 访问权限的情况下,您可以读取和分析当前的 iptables 配置,从中提炼出哪些端口未经修改就通过的信息。您必须自行决定是否将以某种非平凡方式(例如 NAT)处理的端口包括在“未阻止”、“阻止”或其他类别中。

相关内容