使用 Nmap 进行端口扫描

简介

Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap 以新颖的方式使用原始 IP 报文来发现网络上有哪些主机,那些主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然 Nmap 通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。

用途

虽然 3CX 有防火墙检测可以检测 PBX 是否开放了指定端口,但是很多时候我们是作为方案整合商给终端用户做项目,有时候需要开放指定端口到指定 IP。比如:

  • 对接 SIP Trunk 的时候,需要将 SIP 端口开放给 SIP Trunk 的 IP 地址。而向所有 IP 开放 SIP 端口是非常危险的。
  • 3CX 放在云端,但是本地有落地网关。网关也需要向 3CX 开放 SIP 端口。
  • 其他的开放端口的使用场景。。。

而在 VoIP 项目实施中,我们不负责网络部分的实施。如果网络端口开放出现了问题,对于电话系统是个非常大的隐患。

在这里我们使用 Nmap 端口扫描工具扫描端口,可以让我们在 IT 开放端口后检查对方端口的开放是否正确。避免后续带来的一系列问题。

安装

点击此处 下载 nmap-7.70 图形化软件。

如果是安装了chocolatey 的用户可以用管理员权限运行下列命令安装:

Linux 和 MacOS 等用户可以前往官网寻找安装方法:https://nmap.org/download.html

简单扫描

具体的使用介绍网上也有很多文章了,官网也解释的很详细。这里我介绍一下在 3CX 部署领域内使用的一些命令。

使用下列命令可以对域名进行简单扫描:

在上述命令中,-A 用来进行操作系统及其版本的探测。-T4 可以加快执行速度。

如果主机是不可 Ping 的话,需要额外加一个 -Pn 选项。

对指定端口扫描

我们在 3CX 中可能会使用的端口如下所示(实际使用中根据需求开放):

端口 协议 用途
5001 tcp https 端口
5060 tcp 和 udp sip 端口
5061 tcp Secure SIP 端口
5090 tcp 和 udp 3CX Tunnel 端口
9000 – 10999 udp RTP 端口

那么我们演示一下如何对上述端口进行扫描,因为 RTP 端口较多,我们分两次进行:

  • -p : 端口范围,用逗号隔开
  • -sS : Nmap 推荐的 TCP 扫描方式。
  • -sU : 扫描 UDP(需管理员权限)
  • -Pn : 禁止 Ping 扫描

如下图所示端口是开放的。

接下来我们扫描一下 UDP:

可以看到这 2000 个端口都是关闭的。

扫描结果

Nmap 扫描出来不是只有开放和关闭这两种情况,根据防火墙路由器设备的不同,对于 Nmap 的扫描也会有不同的反馈。

Nmap 扫描出来有以下 6 种结果。

状态 描述
open 端口是开放的,应用程序正在该端口接收TCP 连接或者UDP报文。
closed 关闭。关闭的端口对于 Nmap 也是可访问的(它接受 Nmap 的探测报文并作出响应), 但没有应用程序在其上监听。
filtered 被过滤的。由于包过滤阻止探测报文到达端口, Nmap 无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙。
unfiltered 未被过滤的。未被过滤状态意味着端口可访问,但 Nmap 不能确定它是开放还是关闭。
open|filtered 当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。开放的端口不响应就是一个例子。
closed|filtered 该状态用于 Nmap 不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。