如何使用nmap
凌晨两点,何使我盯着终端里滚动的何使扫描结果,终于找到那台失联服务器的何使开放端口。nmap不是何使玩具,是何使网络世界的CT机——它能把一台主机的“骨骼”照得清清楚楚。你不需要记住所有参数,何使但必须理解它的何使核心逻辑:发送探测包,分析响应,何使推断目标状态。何使
先装它。何使Debian系用sudo apt install nmap,何使Red Hat系用sudo dnf install nmap。何使macOS用户直接brew install nmap。何使Windows嘛,何使去官网下载安装包,何使但说实话,在Windows下跑nmap就像穿着皮鞋跑步——能用,但别扭。
最基础的用法是nmap <目标IP>。这会对目标做默认扫描,检查1000个常用端口。我第一次跑这命令时,盯着输出的“22/tcp open ssh”愣了半天——原来隔壁部门那台“没人管”的服务器,一直开着SSH。
别急着扫全网。先扫单台主机练手,比如你自己的路由器:nmap 192.168.1.1。你会看到80端口开着(管理界面),53端口可能开着(DNS转发)。这时候你才算真正“看见”了设备。
端口状态有六种,但你要记住的只有三种:open(服务在听)、closed(端口可达但没服务)、filtered(被防火墙挡了,不确定死活)。有一次我扫客户服务器,443端口显示filtered,业务方坚称服务正常。结果呢?防火墙规则配错了,只放行了内部IP。nmap没说谎,是人在骗自己。
想深入探测服务版本?加-sV。这参数会主动连接开放端口,尝试获取banner信息。我用它发现过一台运行着Apache 2.2.15的老古董——那版本有已知漏洞,但对方IT部门根本不知道。版本探测慢,但值得等。
操作系统识别用-O。它通过TCP/IP指纹猜测目标系统。准确率不百分百,但足够给你方向。有一次扫描结果提示“Linux 3.x”,对方坚称是Windows Server,结果一查,还真是台跑着定制内核的Linux设备。
别忽视脚本引擎--script。这是nmap最强大的部分。想测弱口令?--script ssh-brute。想查漏洞?--script vuln。我习惯先跑--script default,它包含常见安全检查,输出干净利落。但注意,脚本会发送大量探测包,生产环境慎用——你不想把客户的核心数据库扫崩了。
实战中我常这么组合:nmap -sS -sV -O --script default 目标IP。-sS是SYN半开扫描,速度快且不易被日志记录。不过需要root权限。没权限就用-sT,全连接扫描,慢一点但更隐蔽。
扫网段时用CIDR写法:nmap 192.168.1.0/24。会扫254个地址,大概几分钟。别扫超过/16的段,除非你有一整夜时间和足够的带宽。我见过有人扫/8,结果被对方防火墙反向追踪,差点惹上官司。
输出格式也很重要。-oN result.txt存成文本,-oX result.xml存成XML方便后续解析。-oG格式虽然老了,但grep起来特别方便。我习惯三个都存,谁知道明天要用哪种格式。
最后说点实在的:nmap不是黑客工具,是网络管理员的瑞士军刀。用它前确保你有授权——扫别人的机器前先签好合同。我见过太多人因为好奇扫了不该扫的IP,结果被请去喝茶。扫描结果只是数据,怎么解读才是关键。别做只会敲命令的脚本小子,学会看数据背后的逻辑。
凌晨的扫描结果还在屏幕上闪烁。我关掉终端,给运维发了条消息:“22端口开着,但SSH版本太老,建议升级。”三分钟后,对方回了句:“卧槽,你怎么知道的?”
