前言
进行安测工作时,有个步骤是需要扫描服务器上面的端口开放情况以及对应的服务,人工去telnet效率太低,肯定是不可取的。这种情况下我们可以考虑用linux自带的
nmap
命令来帮助我们快速地进行网络端口扫描。
如果系统不存在这个工具,可以通过下面的命令进行安装:
yum install nmap
一、语法
nmap [选项...] [目标]
目标可以是IP地址、IP网段或者域名。
参数 | 含义 |
---|---|
-sn | Ping扫描,不扫描端口,仅发现活跃主机。 |
-p <port ranges> | 指定要扫描的端口范围。 |
-A | 启用操作系统检测、版本检测、脚本扫描和traceroute。 |
-O | 启用操作系统检测。 |
-sS | SYN扫描,这是默认的TCP扫描类型,用于快速扫描端口状态 |
-sV | 版本检测,尝试确定运行在开放端口上的服务的版本号。 |
-v | 增加输出的详细程度(verbose)。 |
-oN <filename> | 将扫描结果保存到文件中,使用不同的格式,如-oN为普通格式,-oX为XML格式,-oG为grepable格式等。 |
-sP | 相当于是-sn 的升级版,-sP 更隐蔽,可能绕过一些防火墙规则。 |
-T num | 定义扫描所使用的时间模板 |
二、案例演示
案例一:扫描指定IP服务器对外开放的端口
nmap 172.0.0.1
执行结果
案例二:扫描指定IP服务器80-3000端口的开放情况,并展示详细信息
nmap -p 80-3000 -v 172.0.0.1
案例三:查询网络上活跃的主机
nmap -sP 172.17.120.*
或者
nmap -sP 172.17.120.0/24
172.17.120.*
:这是一个IP地址范围,表示从172.17.120.1
到172.17.120.255
的整个子网。星号*是一个通配符,代表子网掩码中为0的部分,在这个例子中,它代表最后八位(即最后一个字节)的所有可能值。
PS:如果只想扫描某个区间内的主机,可以这样表示nmap -sP 172.17.120.100-120
(扫描172.17.120.100-172.17.120.120区间的所有服务器)
案例四:排除执行IP地址进行查询
方式1: 手动指定IP
nmap -sP 172.17.120.* --exclude 172.17.120.13
方式2:通过文件进行指定
nmap -sP 172.17.120.* --excludefile ex.txt
案例五:将扫描结果保存至指定文件
nmap -oN output.txt 172.17.120.13
案例六:使用时间模板进行扫描
nmap -T 4 172.17.120.13
在 nmap 命令中,-T 选项用于设置扫描的时间模板,它影响扫描过程中的超时和重传行为。nmap 提供了几种预定义的时间模板,以适应不同的网络环境和扫描需求。这些时间模板包括:
0(偏执,Paranoid):最慢和最谨慎的扫描,适合于高延迟或不稳定的网络环境。
1(懒惰,Sneaky):慢速扫描,适合于尝试最小化对目标网络的影响。
2(怠慢,Polite):默认设置,平衡了扫描速度和对网络的影响。
3(正常,Normal):中等速度的扫描,适用于大多数情况。
4(积极,Aggressive):快速扫描,适用于快速网络和当时间比隐蔽性更重要时。
5(疯狂,Insane):最快速度扫描,可能会对网络造成较大影响。
当你使用 nmap -T 4 时,你指示 nmap 以积极(Aggressive)模式运行扫描。这意味着 nmap 会使用较短的超时时间,并且较少重传,这会导致扫描过程更快,但可能会增加误报的可能性(即错误地报告某些主机不在线)。此外,这种模式可能会对网络造成较大的负载。
常用命令
扫描指定端口开放的IP以及相关服务信息
nmap -oN scanResult.txt -p 1-65535 -v -A IP地址或网段
扫描还在线的主机
nmap -sn IP网段
网友评论