如何使用 ss、netstat、lsof 和 nmap 扫描开放端口
以下是使用端口扫描时会发现的一些常见端口:
- 端口 21 – FTP(文件传输协议)
- 端口 22 – SSH(安全外壳)
- 端口 23 - Telnet
- 端口 25 - SMTP(简单邮件传输协议)
- 端口 53 - DNS(域名服务器)
- 端口 80 - HTTP(超文本传输协议)
- 端口 110 – POP3(邮局协议)
- 端口 143 – IMAP(互联网消息访问协议)
- 端口 443 – HTTPS(安全超文本传输协议)
端口概况
- 端口0到1023属于标准化端口,互联网编号分配机构 (IANA) 主要负责分配。
- 默认情况下,端口号1024到49151是为注册服务保留的。但是,这些也分配给客户端程序,尤其是在涉及 Linux 系统时。
- 端口49152到65535动态地将操作系统分配给客户端。
有很多可用的端口扫描工具,但您也可以使用以下 Linux 命令扫描任何目标机器的开放端口。
开放端口是允许建立完整的 TCP 连接的端口,在这种情况下,端口扫描器已找到响应扫描可用的端口并建立连接。
使用 ss 命令扫描开放端口
ss 命令用于转储套接字统计信息并以与 netstat 类似的方式显示信息,如下所述。
ss 命令还可以显示比大多数其他工具(如 netstat 或 lsof)更多的 TCP 和状态信息。
要使用ss显示正在侦听的 TCP 连接,命令是:
ss -tl
其中,t代表 TCP 端口,l代表侦听套接字。
要显示正在侦听的 UDP 连接,命令是:
ss -ul
其中u代表 UDP 端口。
如果你想同时显示 TCP 和 UDP 连接,命令是:
ss -lntup
其中p代表进程名称
如果要显示所有套接字连接,则可以简单地使用 ss命令。
使用 netstat 扫描开放端口
Netstat,提供所有网络活动的基本统计信息,并通知用户哪些端口和地址对应的连接(TCP、UDP)正在运行,以及哪些端口为任务打开。
要使用 netstat 检查所有打开的端口,命令是:
netstat -pnltu
其中p代表与服务关联的进程 ID,n代表数字编号。正在运行的端口,l代表侦听套接字,t代表 TCP 连接,u代表 UDP 连接。
在 Windows 操作系统中,您可以通过命令行 (cmd.exe) 使用 netstat 服务。
使用 lsof 命令扫描开放端口
lsof 是一个命令行实用程序,适用于所有 Unix 和 Linux 等操作系统,用于检查“打开文件列表”。
lsof 命令主要用于检索有关由各种进程打开的文件的信息,系统中打开的文件可以是不同类型的,如磁盘文件、网络套接字、命名管道和设备。
要显示打开的端口,请键入以下命令:
lsof -i
如果您只想显示打开的套接字,则可以使用:
lsof -n -P | grep LISTEN
要仅显示 TCP 连接,请键入:
lsof -i tcp
使用 Nmap 扫描开放端口
Nmap 是免费的开源网络安全扫描器之一,通常用于网络发现和安全审计,除此之外,您还可以使用NMAP 扫描开放端口、监控主机和网络清单。
在 Kali Linux 中,Nmap 已经预先安装在其中,但对于 Ubuntu 或任何其他 Linux 发行版,您可以通过键入sudo apt install nmap
命令来安装 nmap。
对于 Windows 操作系统,Nmap 安装包附带了一个名为 Zenmap 的 Nmap 前端 GUI,用于从用户界面而不是命令行控制 Nmap。
要扫描打开的 TCP 端口,请键入:
nmap -sT -O localhost
上述命令将对目标主机启动 TCP 连接扫描,如果无法进行 TCP SYN 扫描,则 TCP 连接扫描是默认执行的扫描。这种类型的扫描请求底层操作系统尝试使用“连接”系统调用与目标主机/端口连接。
对于 UDP,命令是:
nmap -sU localhost
上述命令将对目标主机发起 UDP 端口扫描,UDP 扫描将 UDP 数据包发送到目标端口,如果收到响应,则端口被分类为打开,如果多次传输后没有收到响应,则端口被分类为开放/过滤。
- 点赞
- 收藏
- 关注作者
评论(0)