一个执着于技术的公众号

前言

无论是要解决网络连接问题还是配置防火墙,第一件事是要检查系统实际打开了哪些端口。

本文介绍了几种快速查找 Linux 系统上哪些端口向外部开放的方法。

什么是开放端口

监听端口是应用程序监听的网络端口。你要得到的监听端口名单通常可以通过如 ss、netstat 或 lsof 命令查询系统上网络堆栈。每个监听端口都可以使用防火墙打开或关闭(过滤)。

一般而言,开放端口是一个网络端口,它接受来自远程位置的传入数据包。

例如:如果你正在运行的监听端口 80、443 的 Web 服务器,并把这些端口在防火墙上对任何人开放。使用浏览器将能够访问托管在 Web 服务器上的网站。在这种情况下,80 和 443 都是开放端口。

开放端口可能会带来安全风险,因为攻击者可以使用每个开放端口来利用漏洞或执行任何其他类型的攻击。您应该只公开应用程序功能所需的端口,然后关闭所有其他端口。

1 使用 Nmap 命令检查开放端口

Nmap 是功能强大的网络扫描工具,可以扫描单个主机和大型网络。它主要用于安全审核和渗透测试。

Nmap 是端口扫描的首选工具。除端口扫描外,Nmap 还可以检测 Mac 地址、操作系统类型、内核版本等。

nmap工具系统默认没有安装,可通过yum install nmap进行安装

检查系统已安装nmap工具
1.1 确定哪些端口正在监听来自网络的 TCP 连接:

-sT 选项告诉 Nmap 扫描 TCP 端口, -p- 扫描所有端口(65535 个)。如果不使用 -p-,Nmap 将仅扫描 1000 个端口。以上显示,只有端口 22、40402以及 49354 在目标系统上打开。

1.2 要扫描 UDP 端口,请使用 -sU 代替 -sT:

2 使用 Netcat 命令检查开放端口

Netcat(或nc)是一种命令行工具,可以使用 TCP 或 UDP 协议跨网络连接读取和写入数据。

使用 netcat 可以扫描单个端口或端口范围。

首先我们要安装netcat工具,安装步骤如下:

# step 1:下载netcat源码包wget wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz

# step 2:解压tar -zxvf netcat-0.7.1.tar.gz -C /usr/local

# step 3:netcat文件夹重命名cd /usr/localmv netcat-0.7.1 netcat

# step 4:编译安装cd /usr/local/netcat./configuremake && make install

# step 5:添加netcat环境变量vim /etc/profile追加:export NETCAT_HOME=/usr/local/netcatexport PATH=$PATH:$NETCAT_HOME/bin

# step 6:使环境变量立即生效source /etc/profile
2.1 扫描远程主机10.43.187.251且端口范围为20-80之间打开的TCP端口

-z 选项指示 nc 仅扫描打开的端口,而不发送任何数据,并且 -v 用于获取更多详细信息。

2.2 要扫描 UDP 端口,请将 -u 选项传递给 nc 命令:
 nc -vz -u 10.43.187.251 20-80

3 使用 Bash 伪设备检查打开的端口

检查某个端口是打开还是关闭的另一种方法是使用 Bash Shell 检查 /dev/tcp/.. 或 /dev/udp/.. 下的伪设备。

在 /dev/HOST/$IP 伪设备上执行命令时,Bash 将在指定端口上打开到指定主机的 TCP 或 UDP 连接。

以下 if..else 语句将检查端口 443 在 kernel.org 是否打开:

if timeout 5 bash -c '/dev/null'then  echo "Port is open"else  echo "Port is closed"fi

输出将如下所示:

Port is open

上面的代码如何工作?

使用伪设备连接到端口时的默认超时时间非常长,因此我们使用 timeout 命令在 5 秒后终止测试命令。如果建立了 kernel.org 端口连接,则 443 测试命令将返回 true。

你也可以使用 for 循环来检查指定的端口范围:

for PORT in {20..80}; do  timeout 1 bash -c "/dev/null" &&  echo "port $PORT is open"done

输出将如下所示:

port 22 is openport 80 is open

最后

我们为你展示了几种如何使用扫描开放端口的工具,当然你也可以使用其它工具来达到同样的目的,例如:Python Socket 模块、Curl、Telnet 或 Wget。

译者:Mike

链接:https://linuxize.com/post/check-open-ports-linux/

往期精彩

◆  干货 | 给小白的Nginx10分钟入门指南

◆  什么是集群?看完这篇你就知道啦!

◆  干货 | Linux平台搭建网关服务器

◆  干货 | 理解正向代理与反向代理的区别

◆  硬核科普服务器硬盘组成与基本原理

◆  一文带你速懂虚拟化KVM和XEN

◆  实战 | Hadoo大数据集群搭建

如有收获,点个在看,诚挚感谢

linux 关闭端口_手把手教你在Linux中快速检测端口的 3 个小技巧相关推荐

  1. python正确的输入语句_手把手教你在python中如何使用while True语句

    在学习过程中,经常能遇到采用while True的用法.下面以一个例子进行说明: 建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统. 1.我自己最开始的写法:d = {} #数据库字 ...

  2. python文本分类_手把手教你在Python中实现文本分类.pdf

    手把手教你在Python 中实现文本分类(附代码.数 据集) 引言 文本分类是商业问题中常见的自然语言处理任务,目标是自动将文本文件分到一个 或多个已定义好的类别中.文本分类的一些例子如下: • 分析 ...

  3. 删除虚拟环境_手把手教你在Linux系统下使用Python虚拟环境

    Hello小伙伴们,你们好,又是日常get新技能的一天,今天,咱们来整一下如何玩转Linux下Python虚拟环境,0基础入门,趁着热乎,快上车啦~. 之前小编有写过Windows下的虚拟环境创建和基 ...

  4. java怎么实现网络对战平台_手把手教你用Java实现一个简易联网坦克对战小游戏...

    介绍 通过本项目能够更直观地理解应用层和运输层网络协议, 以及继承封装多态的运用. 网络部分是本文叙述的重点, 你将看到如何使用Java建立TCP和UDP连接并交换报文, 你还将看到如何自己定义一个简 ...

  5. 如何用java让坦克发射子弹_手把手教你用Java实现一个简易联网坦克对战小游戏 !...

    介绍 通过本项目能够更直观地理解应用层和运输层网络协议, 以及继承封装多态的运用. 网络部分是本文叙述的重点, 你将看到如何使用Java建立TCP和UDP连接并交换报文, 你还将看到如何自己定义一个简 ...

  6. linux快速扫ip段端口,手把手教你 3 个 Linux 中快速检测端口的小技巧

    Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds 以上显示,只有端口 22.80 以及 8069 在目标系统上打开. 要扫描 UD ...

  7. linux按照mysql为何如此简单_手把手教你在Linux下安装MySQL

    在Linux操作系统下,安装MYSQL有两种方式:一种tar安装方式,另外一种是rpm安装方式.这两种安装方式有什么区别呢?尽管我们在Linux下常用tar来压缩/解压缩文件,但MYSQL的tar格式 ...

  8. dmg镜像如何写入u盘_手把手教你制作Linux系统安装U盘,小白都能轻松上手

    随着电脑更新换代,家里闲置或在用的电脑渐渐多了,总想折腾一下:有时电脑用久了,变得慢起来了,也时不时会想要重装一下系统,因为懒得去装所谓的垃圾清理或优化软件.于是决定制作一个操作系统的安装U盘,以备日 ...

  9. easyuefi安装不了_手把手教你Windows Linux双系统的安装与卸载

    作者:-叶丶知秋 链接:https://blog.csdn.net/fanxueya1322/article/details/90205143 转载请保留出处 良许前言: 后台突然有很多小伙伴留言想看 ...

最新文章

  1. 大小端以及字节序的问题
  2. 2的32次方减1用python,第二章python入门
  3. web实现远程桌面:Apache Guacamole
  4. 11.11 ntsysv:管理开机服务
  5. java循坏_Java的坏功能是什么
  6. unity3d android hdr,Unity3d 中的 HDR_BLOOM
  7. [独孤九剑]持续集成实践(二)– MSBuild语法入门
  8. 喀什师范学计算机学院学位论文开题报告,喀什师范学院本科生毕业论文开题报告.doc...
  9. java计算农历日期
  10. 如何入门Python之Python基础教程详解
  11. gee mysql数据库_MySQL
  12. 不小心删除了华为手机备忘录里的内容如何恢复?
  13. 深入理解地址翻译 CSAPP
  14. Altium designer2020基础使用教程
  15. Rviz显示机器人运动轨迹
  16. 产品设计中的五个层次需求,你知道吗?
  17. AndroidStudio开发的领养宠物app
  18. vue报错:the template root disallows ‘v-for‘ directives解决办法
  19. 【STM32F103ZE】TOF250(TTL)基于STM32系列开发板的运用
  20. python中max什么意思_Python

热门文章

  1. 计算机网络—一个自治系统有5个局域网,其连接图如图所示。LAN2至LAN5上的主机数分别为:91,150,3,15。该自治系统分配到的IP地址块为30.138.118/23。试给出每一个局域网的地址块
  2. 闲置服务器 虚拟服务器,闲置主机搭建服务器
  3. 如何用计算机计算胸围,文胸尺码计算器
  4. Android日志[进阶篇]四-获取错误报告
  5. 2021山东科技大学计算机学院,2021年3月山东科技大学计算机等级考试报名工作通知...
  6. Linux进阶之路———— RPM 与 YUM 包管理
  7. ddns 被解析为127.0.0.1_我为北京冬奥加油,2020.2.1-2.10冬奥知识分享
  8. 今日头条ocpm计费规则_入门篇|信息流广告的游戏规则—竞价机制
  9. 计算机二级考试开考多久能出来,【计算机二级】明天就要开考了,你们准备好了吗?...
  10. c语言高斯白序列x,C语言程序设计程设计指导书(晓庄).doc