百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

如何使用 ss、netstat、lsof 和 nmap 扫描开放端口

xsobi 2024-12-01 05:42 1 浏览

以下是使用端口扫描时会发现的一些常见端口:

  • 端口 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 数据包发送到目标端口,如果收到响应,则端口被分类为打开,如果多次传输后没有收到响应,则端口被分类为开放/过滤。

相关推荐

js向对象中添加元素(对象,数组) js对象里面添加元素

一、添加一个元素对象名["属性名"]=值(值:可以是一个值,可以是一个对象,也可以是一个数组)这样添加进去的元素,就是一个值或对象或数组...

JS小技巧,如何去重对象数组?(一)

大家好,关于数组对象去重的业务场景,想必大家都遇到过类似的需求吧,这对这样的需求你是怎么做的呢。下面我就先和大家分享下如果是基于对象的1个属性是怎么去重实现的。方法一:使用.filter()和....

「C/C++」之数组、vector对象和array对象的比较

数组学习过C语言的,对数组应该都不会陌生,于是这里就不再对数组进行展开介绍。模板类vector模板类vector类似于string,也是一种动态数组。能够在运行阶段设置vector对象的长度,可以在末...

如何用sessionStorage保存对象和数组

背景:在工作中,我将[{},{}]对象数组形式,存储到sessionStorage,然后ta变成了我看不懂的形式,然后我想取之用之,发现不可能了~记录这次深刻的教训。$clickCouponIndex...

JavaScript Array 对象 javascript的array对象

Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...

JavaScript中的数组Array(对象) js array数组

1:数组Array:-数组也是一个对象-数组也是用来存储数据的-和object不同,数组中可以存储一组有序的数据,-数组中存储的数据我们称其为元素(element)-数组中的每一个元素都有一...

数组和对象方法&数组去重 数组去重的5种方法前端

列举一下JavaScript数组和对象有哪些原生方法?数组:arr.concat(arr1,arr2,arrn);--合并两个或多个数组。此方法不会修改原有数组,而是返回一个新数组...

C++ 类如何定义对象数组?初始化数组?linux C++第43讲

对象数组学过C语言的读者对数组的概念应该很熟悉了。数组的元素可以是int类型的变量,例如int...

ElasticSearch第六篇:复合数据类型-数组,对象

在ElasticSearch中,使用JSON结构来存储数据,一个Key/Value对是JSON的一个字段,而Value可以是基础数据类型,也可以是数组,文档(也叫对象),或文档数组,因此,每个JSON...

第58条:区分数组对象和类数组对象

示例设想有两个不同类的API。第一个是位向量:有序的位集合varbits=newBitVector;bits.enable(4);bits.enable([1,3,8,17]);b...

八皇后问题解法(Common Lisp实现)

如何才能在一张国际象棋的棋盘上摆上八个皇后而不致使她们互相威胁呢?这个著名的问题可以方便地通过一种树搜索方法来解决。首先,我们需要写一个函数来判断棋盘上的两个皇后是否互相威协。在国际象棋中,皇后可以沿...

visual lisp修改颜色的模板函数 怎么更改visual studio的配色

(defunBF-yansemokuai(tuyuanyanse/ss)...

用中望CAD加载LISP程序技巧 中望cad2015怎么加载燕秀

1、首先请加载lisp程序,加载方法如下:在菜单栏选择工具——加载应用程序——添加,选择lisp程序然后加载,然后选择添加到启动组。2、然后是添加自定义栏以及图标,方法如下(以...

图的深度优先搜索和广度优先搜索(Common Lisp实现)

为了便于描述,本文中的图指的是下图所示的无向图。搜索指:搜索从S到F的一条路径。若存在,则以表的形式返回路径;若不存在,则返回nil。...

两个有助于理解Common Lisp宏的例子

在Lisp中,函数和数据具有相同的形式。这是Lisp语言的一个重大特色。一个Lisp函数可以分析另一个Lisp函数;甚至可以和另一个Lisp函数组成一个整体,并加以利用。Lisp的宏,是实现上述特色的...