nmap入门

    技术2024-07-01  83

    Nmap是一个功能强大的工具,可用于多种目的,例如安全扫描或发现网络上的服务器。 它是开源软件,可免费用于所有主要平台,例如Linux,IBM®AIX®,Mac OS X和Microsoft®Windows®操作系统。 本文介绍了Nmap的基础知识以及系统管理员可以使用它的一些方式。

    警告!

    在尝试或使用Nmap之前要小心。 许多组织监视在其服务器上运行的诸如Nmap之类的工具。 IT管​​理员可以将其视为敌对行动,因为该工具可用于网络侦察以发现安全漏洞。 仅在获得系统所有者的书面许可后才能使用Nmap。 如果您在工作环境中使用Nmap,请确保100%确保您具有管理层的特定书面许可。

    安装

    在大多数Linux发行版中,Nmap可作为发行版存储库中的软件包使用。 例如,在Red Hat Enterprise Linux上,只需运行yum install nmap即可安装。 在Debian和相关系统(例如Ubuntu)上,运行apt-get install nmap进行安装。

    迈克尔Perzl已打包的Nmap为AIX(请参阅相关信息中的链接)。 如果您运行的是Windows或Mac OS X,则可以从其站点下载正式的Nmap版本(请参阅参考资料中的链接)。

    指定要扫描的主机或网络

    所有Nmap命令行都必须指定要操作的主机或网络的列表。 有几种方法可以执行此操作:

    列出各个服务器名称或IP地址。 例如:“ server1”将仅扫描名为server1的主机,而“ 192.168.0.240”将仅扫描IP地址为192.168.0.240的主机。 以CIDR格式列出整个网络。 例如,“ 192.168.0.0/24”将扫描192.168.0.0至192.168.0.255之间的256个地址,而“ 10.0.0.0/8”将扫描10.0.0.0至10.255.255.255范围内的1600万地址。 指定IP范围。 例如,“ 192.168.0.50-95”将扫描192.168.0.50至192.168.0.95之间的46个IP地址。 使用-iL标志可以指定一个文本文件,其中包含要扫描的主机或网络的列表。 使用*通配符。 例如,192.168.0。*将扫描192.168.0.0到192.168.0.255之间的256个地址。 高级选项可以扫描主机名周围的网络。 例如,“ example.com/24”将扫描任何网络example.com所在的C类子网。

    您可以在命令行上以不同的格式指定多个主机。 例如,您可以指定“ server1 192.168.0.6 10.0.0.0/8”来指定主机server1,IP地址192.168.0.6和10.0.0.0/8网络中的1600万个地址。

    验证指定的主机

    请特别小心,仅扫描您有权扫描的主机和IP地址。 要获取要扫描内容的列表,请运行nmap -n -sL然后运行主机或网络列表。 -n标志指定不执行反向名称查找, -sL选项告诉Nmap列出要扫描的IP地址。 因此, nmap -n -sL不会在网络上发送任何内容。 它只是列出了要进行实际扫描的Nmap将会扫描的内容。 在执行扫描以确认您仅扫描想要的内容之前,运行该命令可能很有用。 图1显示了一个示例,其中您指定了主机“ linux1”和“ 192.168.0.200-210”。 -n -sL选项使Nmap列出要扫描的12个地址,而无需联系任何这些主机。

    图1.运行真实扫描之前,请验证指定的主机

    发现网络上的服务器

    对于系统管理员来说,Nmap最有用的方面之一就是它能够发现网络上的服务器或主机。 此功能对于审核存在的主机,记录您的环境或收集有关哪些子网几乎没有可用IP地址的信息很有用。

    基本的Nmap操作是简单地对IP范围进行名称查找的操作。 例如,如果您想查看192.168.0.0/24子网中的任何主机是否具有反向域名系统(DNS)记录,则可以对256个地址中的每个地址运行nslookup命令-或者您可以让Nmap执行为您完成所有工作。 要让Nmap为您执行此操作,只需使用-sL标志,该标志告诉Nmap列出将被扫描的IP地址和已解析的主机名。 图2显示了一个示例。

    图2.显示服务器的DNS名称

    在图2中,如果告诉Nmap对192.168.0.139和192.168.0.145之间的七个地址进行DNS反向查询,则Nmap对地址进行反向查询,并在输出中显示名称。 一些IP地址不在DNS中,因此没有列出名称。

    进行ping扫描很方便,可以确定在一个地址范围内使用了多少个IP地址并可以使用这些IP地址,并可以清查网络上的主机。 ping扫描类似于对IP地址运行ping命令以查看其是否响应,但是Nmap可以快速大规模地执行此操作。

    执行ping扫描时,Nmap会发送Internet控制消息协议(ICMP)数据包(ping)以及端口80和443(常用的Web服务器端口)上的请求。 如果IP地址响应其中任何一个,则报告为up。 要运行ping扫描,请将-sn标志指定为Nmap。 图3显示了对192.168.0.245 – 192.168.0.250地址执行ping扫描的示例。 Nmap发现其中一些地址已启动并报告信息。 请注意,如果您在所在的同一子网中进行扫描,则Nmap还会报告系统的媒体访问控制(MAC)地址,甚至告诉您MAC地址注册到了哪个公司。 此功能有助于确定系统在运行哪种类型的硬件。

    图3. Nmap ping扫描

    基本端口扫描

    Nmap主要是端口扫描程序。 系统上的每个网络服务都在1到65,535之间的网络端口上“监听”。 例如,安全外壳(SSH)在端口22上侦听,超文本传输​​协议(HTTP)Web服务器在端口80上侦听。Nmap之类的端口扫描程序尝试与IP地址上的端口建立连接,以发现哪些网络服务在运行。

    端口扫描程序很有用,因为良好的系统安全性的第一个原则是禁用未使用的服务。 服务器上所有正在运行的服务都是攻击者的一种可能方法。 安全漏洞一直在弹出,通常是易受攻击的特定网络服务。 如果您不需要网络服务,请禁用它! Nmap可帮助您验证环境中单个主机(或每个主机)上正在运行哪些服务。

    例如,如果您的环境使用SSH访问服务器,则应禁用Telnet。 这样,用户将不会访问Telnet,后者会发送明文密码。 此外,如果在Telnet中发现了安全漏洞,则该服务未运行也不会影响您。

    进行Nmap端口扫描的最简单方法是运行nmap命令,然后运行服务器名称,IP地址或IP地址范围的列表。 参见图4:

    图4.基本的Nmap端口扫描

    图4显示了192.168.0.245 IP地址的基本Nmap端口扫描。 如果不带任何选项运行,则Nmap会扫描1,000个最常用的端口。 您可以设置Nmap来检查IP地址上的所有65,535个端口。 但是,这很慢,因此默认情况下,它仅扫描1,000个最常用的端口。 您可以在图4的输出中看到Nmap在该IP地址上找到了五个开放端口(22、442、2301、5989和8899)。

    您可以使用许多选项来控制端口扫描的几乎每个方面。 例如,您可以指定-p0-扫描所有65,535个端口,而不是默认情况下的仅1,000个。

    您还可以选择控制扫描类型,扫描速度等等。 有关其他选项的更多信息,请参见Nmap手册页。

    操作系统检测

    操作系统检测允许Nmap尝试确定设备正在运行的操作系统。 如果您在网络上找到IP地址并且不确定是什么地址,或者想进行清单清点,则此功能很有用。 要激活此功能,请使用-O选项。 图5显示了一个示例,其中Nmap正确检测到服务器正在运行IBM AIX操作系统。

    图5. Nmap操作系统检测

    服务版本检测

    默认情况下,当Nmap执行扫描时,它只会告诉您哪些端口是打开的,并列出其通用服务名称。 例如,如果服务器打开了端口21,则它将其列为文件传输协议(FTP)。 但是,没有什么可以阻止某人在端口21上运行Web服务器,如果这样做了,它将欺骗默认的Nmap扫描,使其认为它是FTP服务器。

    Nmap支持一种称为版本检测的功能,该功能可以解决此问题。 它不仅检测打开了哪些端口,还探测它们以尝试确定端口上正在运行的服务类型以及服务的版本。 当您审核环境以确保所有服务器都处于网络服务的标准版本和批准版本时,此功能很有用。

    要使用版本检测进行扫描,请指定-A选项。 图6显示了启用此选项的示例扫描。 请注意,与图5(未启用)相比,图6中已启用了此选项。

    图6. Nmap版本检测

    图6展示了Nmap的服务检测显示的细节,例如:服务器正在运行OpenSSH版本5.8,以及AIX版本的ftpd和telnetd,等等。

    结论

    本文仅介绍Nmap的基础知识,以帮助您入门。 Nmap是一个功能强大且功能丰富的工具,它所能完成的功能远不止在此讨论。 在开始使用Nmap时,您会发现它是一个有用的工具,应该出现在每个Linux和UNIX®系统管理员的工具箱中。


    翻译自: https://www.ibm.com/developerworks/aix/library/getting-started-with-nmap-for-sys-admin/index.html

    Processed: 0.017, SQL: 9