网络管理员面临的最棘手问题之一就是设备上的开放端口。除非你将操作系统手动安装到网络上的每个设备上,确保关闭了所有不必要的端口,否则你就有可能面临攻击的风险。
你应该禁用的端口视系统而异,甚至可能取决于特殊软件的需要(比如说,QuickBooks需要特定的端口才能正常运行――具体哪些端口由版本决定)。你需要列出可以或必须保持开放的端口。一旦你有了这份列表,就可以着手关闭那些机器上的端口了。
但是你又如何才能知道哪些机器的哪些端口是开放的?当然了,你可以过去查看网络上的每个机器,打开用作防火墙的任何设备,手动确保所有必要的端口都开放,所有不必要的端口都关闭。
或者,你可以扫描网络,查明哪些机器的哪些端口是开放的?如果你知道了开放端口的位置,就能对照主列表来核实该信息,关闭必要的每个端口。现在来说说棘手的部分。
如何运行端口扫描?
你如何才能查明哪些机器的哪个端口是开放的?你可以运行端口扫描。假如你不知道如何运行端口扫描,我会逐步介绍整个过程。
我使用一台Linux机器来扫描。原因何在?因为Linux拥有出色的扫描工具,它们随时可以处理这项任务,不仅免费,而且易于使用。
如果你没有Linux运行在上面的机器,也不用担心――你可以下载Kali Linux之类的网络渗透直启动发行版(live distribution),将ISO文件刻录到CD或USB闪驱上,并启动机器、进入到Linux的直启动实例(不需要对所用的机器进行更改,因为直启动实例完全从内存运行)。直启动实例安装并运行起来后,你就有了形形色色的网络取证/分析工具可以使用。
你应该使用的端口扫描工具
最出色的端口扫描工具是Nmap。如果你不想捣鼓命令行,还有一个出色的GUI前端程序,名为Zenmap(https://nmap.org/zenmap/),它可适用于Linux、Windows和Mac等平台。如果你不想为Linux而操心,可以将它安装在Windows上。(Nmap的功能要比Windows内置网络扫描工具强大得多。)Nmap和Zenmap在众多平台上工作起来一模一样,所以如果你知道了如何在一个平台上使用该工具,就可以在所有平台上使用它。
Zenmap安装完毕后,你随时可以对自己的网络运行全面的端口扫描。网络规模将决定运行扫描所花的时间。如果使用Zenmap,你可以运行非常笼统的扫描和非常具体的扫描。不妨先运行非常笼统的扫描,大致了解我们所处理的对象。我们将在整个192.168.1.x网络上运行扫描。
1. 打开Zenmap。
2. 在Target(目标)部分,输入192.168.1.1/24(或者你想要扩展的任何庞大的目标)。
3. 从Profile(配置文件)中选择Intense Scan(精细扫描)。
4. 点击Scan(扫描)按钮。
你应该会立马看到结果批量装入到Nmap Output(输出)选项卡;结果显示网络中机器上的开放端口(图A)。精细扫描要花很长时间,但是如果你想要获得网络方面的最详细信息,就应该进行精细扫描。
图A:使用Zenmap进行精细扫描。
一旦扫描完毕,你会在左窗格看到一份列表,列出了网络上存在的所有设备。点击其中一个设备,滚动浏览Nmap Output(输出),寻找列有Port(端口)、State(状态)和Service(服务)的这几部分(图B)。
图B:Linux生产机器上开放的端口8080和端口8086。
如果你没有时间来梳理扫描,总是可以保存起来,以便之后查看(使用Zenmap查看)。想保存扫描结果,进入到Scan(扫描) | Save Scan(保存扫描),给它取个名字,并点击Save(保存)。
想快速查看网络上的开放端口,点击Ports/Hosts(端口/主机)选项卡,即可查看哪些端口完全开放(图C)。
图C:使用Zenmap快速查看开放端口。
如果你不想依赖GUI,如果使用Nmap(你在安装Zenmap时一并安装),就可以从命令行运行同样的扫描。比如说,你想对单一主机运行精细扫描。打开终端窗口,执行这个命令。
sudo nmap -T4 -A -v 192.168.1.1/24
这些是上述命令的参数选项符。
T4─ 将时间设为4(0-5,5代表最快)
A ─ 启用操作系统检测
v ─ 详细输出
这时候(无论你通过命令行使用Nmap还是使用Zenmap GUI),应该可以获得网络上开放端口的完整列表。既然已知道了哪些机器上的哪些端口开放,保护这些端口安全性、进而保护网络安全性的可能性大大提高。
结束语
Nmap/Zenmap不是市面上唯一的网络扫描选择方案,不过你很难找到使用更简单、功能更强大的工具来帮助发现网络上哪些端口是开放的。
英文:List open ports and listening services