如何在 Linux 上打开端口

介绍

在操作系统中,一个端口向特定流程或网络服务的数据包打开或关闭。

通常,端口可以识别给它们分配的特定网络服务,可以通过手动配置该服务以使用不同的端口来更改此功能,但一般来说,可以使用默认值。

第一个1024个端口(端口号码 01023)被称为已知的端口号码,仅用于最常用的服务,其中包括SSH(端口 22)、HTTP(端口 80)、HTTPS(端口 443)。

1024 以上的端口号称为 _ephemeral 端口。

  • 端口号 102449151 被称为 注册/用户端口.
  • 端口号 4915265535 被称为 动态/私人端口.

在本教程中,您将在Linux上打开一次性端口,因为最常见的服务使用已知的端口。

前提条件

要完成本教程,您将需要:

列出所有开放的港口

在 Linux 上打开一个端口之前,您必须检查所有开放的端口列表,并选择一个不列在该列表中的平行端口来打开。

使用netstat命令列出所有开放的端口,包括 TCPUDP,这是网络层中最常见的数据包传输协议。

1netstat -lntu

这将打印:

  • 所有 listening 接口 (-l)
  • 端口 number (-n)
  • TCP 端口 (-t)
  • UDP 端口 (-u)
 1[secondary_label Output]
 2Active Internet connections (only servers)
 3Proto Recv-Q Send-Q Local Address Foreign Address State
 4tcp 0 0 127.0.0.1:5432 0.0.0.0:*        LISTEN
 5tcp 0 0 127.0.0.1:27017 0.0.0.0:*        LISTEN
 6tcp 0 0 127.0.0.1:6379 0.0.0.0:*        LISTEN
 7tcp 0 0 127.0.0.53:53 0.0.0.0:*        LISTEN
 8tcp 0 0 0.0.0.0:22 0.0.0.0:*        LISTEN
 9tcp6 0 0 ::1:5432         :::*             LISTEN
10tcp6 0 0 ::1:6379         :::*             LISTEN
11tcp6 0 0 :::22            :::*             LISTEN
12udp 0 0 127.0.0.53:53 0.0.0.0:*        LISTEN

<$>[注] **注:如果您的发行版没有netstat,则可以使用ss命令通过检查收听接口来显示开放的端口。

检查您是否使用ss命令接收一致的输出,以列出具有开放端口的收听接口:

1ss -lntu

这将打印:

 1[secondary_label Output]
 2Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
 3udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
 4tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:*
 5tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:*
 6tcp LISTEN 0 128 127.0.0.1:6379 0.0.0.0:*
 7tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
 8tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
 9tcp LISTEN 0 128               [::1]:5432 0.0.0.0:*
10tcp LISTEN 0 128               [::1]:6379 0.0.0.0:*
11tcp LISTEN 0 128                [::]:22 0.0.0.0:*

这给出了大致相同的开放端口netstat

在 Linux 上打开端口以允许 TCP 连接

现在,打开一个关闭的端口,让它听取TCP连接。

但是,如果该端口在您的系统中没有打开,请自由选择另一个关闭的端口。

确保使用netstat命令不使用4000端口:

1netstat -na | grep :4000

ss命令:

1ss -na | grep :4000

输出必须保持空白,从而验证它目前没有使用,以便您可以手动将端口规则添加到 _system iptables 防火墙。

对于Ubuntu用户和基于UFW的系统

使用ufw - UncomplicatedFirewall的命令行客户端。

你的命令会看起来像:

1sudo ufw allow 4000

请参阅 如何设置一个 ufw 防火墙设置为您的分发。

<$>[注] 注:

  • Ubuntu 14.0.4: 允许特定的端口范围
  • Ubuntu 16.0.4/18.0.4/20.0.4/22.0.4: 允许其他连接 /特定的端口范围
  • Debian 9/10/11: 允许其他连接 /特定的端口范围

美元

对于 CentOS 和基于防火墙的系统

使用「firewall-cmd」 - 指令行客户端为「firewalld」大门。

你的命令会看起来像:

1firewall-cmd --add-port=4000/tcp

请参阅如何设置 firewalld为您的分发。

<$>[注] 注:

  • CentOS 7/8: 为您的应用程序设置规则/为您的区域打开端口
  • Rocky Linux 8/9: 为您的应用程序设置规则/为您的区域打开端口

美元

其他 Linux 发行版

使用iptables来更改系统IPv4包过滤规则。

1iptables -A INPUT -p tcp --dport 4000 -j ACCEPT

请参阅如何使用iptables设置防火墙为您的分发。

<$>[注] 注:

  • Ubuntu 12.04: 基本防火墙
  • Ubuntu 14.04: 接受其他必要的连接

美元

测试新打开的 TCP 连接端口

现在你已经成功打开了新的TCP端口,是时候测试它了。

首先,启动netcat(nc)并在端口(-p)4000上听(-l),同时将ls的输出发送到任何连接的客户端:

1ls | nc -l -p 4000

现在,客户端在端口4000上打开了TCP连接后,他们将收到ls的输出。

在同一台机器上打开另一个终端会话。

打开 TCP 端口后,请使用telnet检查 TCP 连接性. 如果命令不存在,请使用您的包管理器安装该命令。

输入您的服务器 IP 和端口号码(在本示例中‘4000’),然后运行以下命令:

1telnet localhost 4000

此命令试图在端口4000上的localhost上打开 TCP 连接。

您将收到类似于此的输出,表示已与听力程序建立了连接(nc):

1[secondary_label Output]
2Trying ::1...
3Trying 127.0.0.1...
4Connected to localhost.
5Escape character is '^]'.
6while.sh

ls的输出(在本示例中,while.sh)也被发送到客户端,表示成功的TCP连接。

使用「nmap」來檢查端口(`-p')是否開放:

1nmap localhost -p 4000

这个命令会检查开放的端口:

 1[secondary_label Output]
 2Starting Nmap 7.60 ( https://nmap.org ) at 2020-01-18 21:51 UTC
 3Nmap scan report for localhost (127.0.0.1)
 4Host is up (0.00010s latency).
 5Other addresses for localhost (not scanned): ::1
 6
 7PORT STATE SERVICE
 84000/tcp open remoteanything
 9
10Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

已打开端口. 您已在 Linux 系统上成功打开新端口。

<$>[注] : nmap只列出了目前有听取应用程序的开放端口。如果您不使用任何听取应用程序,如 netcat,则将显示端口 4000 作为关闭的,因为目前没有任何应用程序在该端口上听取。类似地, `telnet' 也不会工作,因为它也需要一个听取应用程序来连接。

但这只是暂时的,因为每次重新启动系统时都会重新设置这些更改。

持久规则

本文所示的方法只会暂时更新防火墙规则,直到系统关闭或重新启动,因此在重新启动后必须重复类似的步骤,以便再次打开相同的端口。

关于UFW防火墙

ufw规则不会在重新启动时重新设置,这是因为它被集成到启动过程中,而内核通过应用适当的配置文件来保存使用ufw的防火墙规则。

关于消防

您将需要使用永久性旗帜。

请参阅如何设置 firewalld为您的分发。

<$>[注] 注:

  • CentOS 7/8: 为您的应用程序设置规则
  • Rocky Linux 8/9: 为您的应用程序设置规则

美元

关于iptables

您需要保存配置规则,这些教程建议iptables-persistent

请参阅如何使用iptables设置防火墙为您的分发。

<$>[注] 注:

  • Ubuntu 12.04: Saving Iptables Rules
  • Ubuntu 14.04: Saving your Iptables Configuration

美元

结论

在本教程中,你学会了如何在Linux上打开一个新的端口并为接入连接设置它,你还使用了netstat,ss,telnet,ncnmap

继续学习 如何使用 Iptables 防火墙, 深沉浸入 Iptables 和 Netfilter 架构, 理解接口,以及 如何使用 Top, Netstat, Du 和其他工具来监控服务器资源

Published At
Categories with 技术
Tagged with
comments powered by Disqus