Skip to main content
 首页 » 科技百科

如何打开Linux服务器防火墙上的端口:5种方法

要允许Linux系统的入站或出站连接吗?如果你使用的是Iptables、Uncomplicated Firewall(UFW)或Firewalld等防火墙软件,那就可以轻松地使用命令行打开端口。至于ConfigServer Firewall(CSF)、Advanced Policy Firewall(APF)之类的产品,添加防火墙规则来打开端口就像编辑防火墙配置文件一样简单。本文会介绍如何在Ubuntu、Debian、CentOS、Red...

须知事项

  • 你可以在任何适用于Linux的防火墙产品中轻松打开TCP和UDP端口。
  • 大多数Linux发行版已经预安装了Iptables,它配置起来非常容易。
  • 如果你使用的Firewalld,那么在“firewall-cmd”命令添加“--permanent”标记,可以确保在你停止并重启防火墙时,所做的更改不会被撤消。

方法 1

方法 1 的 5:

Iptables

1、登录Linux服务器,并(或)打开“终端”窗口。

大部分Linux发行版都预安装了IPtables防火墙,包括Ubuntu、Debian、CentOS、Fedora和Red Hat。只用借助简单的命令,就能在Iptables打开端口。

2、运行service iptables status命令,确保防火墙处于活动状态。

如果防火墙还没有运行,可以使用 service iptables start命令来启动它。

3、使用sudo iptables -L命令来列出当前的防火墙规则。

这些规则被分成了不同的链:

  • INPUT链用于处理进入主机系统的入站连接。
  • FORWARD链用于路由数据包。
  • OUTPUT链用于处理离开主机系统的出站数据。
  • 每个链都有一个策略来决定如何处理数据包。要打开一个端口,就必须指定一个链。例如,要打开传入的SSH连接,你就需要使用“INPUT”链。

4、使用sudo iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT命令来打开端口。

在这个例子中,我们打开的是传入到22端口的连接,你可以将22替换成想要打开的任何其它端口。

  • 如果要打开出站端口,将INPUT替换成OUTPUT。
  • 如果要打开UDP端口,将tcp替换成udp。
  • 如果只想将端口打开给特定的IP地址或子网,则可以使用sudo iptables -I INPUT -s xxx.xxx.xxx.xxx -p tcp -m tcp --dport 22 -j ACCEPT命令。

5、使用sudo service iptables save命令来保存更改。

如果这条命令不起作用,你还可以尝试:

  • Ubuntu和Debian系统可以使用sudo /sbin/iptables-save命令。
  • 至于CentOS、Red Hat和Fedora系统,可以使用/sbin/service iptables save命令。
  • 使用iptables -I INPUT -p tcp –-dport 22 -j REJECT命令来关闭端口。将“22”替换成想要关闭的任何端口。如果你目前使用SSH远程连接到服务器,可千万别关闭22端口。

方法 2

方法 2 的 5:

Uncomplicated Firewall(UFW)

1、登录到你的Ubuntu服务器。

所有Ubuntu系统都预安装了UFW。如果你已经登录到图形用户界面,打开一个“终端”窗口就可以了。

2、输入sudo ufw status verbose,然后按? Enter

键。如果UFW已经在运行,屏幕上会出现一个状态提示信息,并列出已经存在的所有防火墙规则,包括已经打开的端口。

  • 如果看到Status: inactive的提示信息,那就说明你需要先启用防火墙:
  • 输入sudo ufw enable,然后按Enter键来启用防火墙。
  • 使用sudo ufw logging on命令,开启防火墙日志记录。

3、使用sudo ufw allow [port number]命令来打开端口。

举个例子,如果你要打开SSH使用的22端口,那就输入kbd,然后按下Enter键来打开它。你不需要重启防火墙,因为更改会立即生效。

  • 如果你要打开一个指定服务对应的端口,而这个服务在/etc/services中有列出,可以直接输入服务名称,不用输入端口号码。比如,直接输入sudo ufw allow ssh。
  • 如果要打开特定范围的端口,使用sudo ufw allow 6000:6007/tcp语法,将6000:6007替换成实际的端口范围。如果这个范围是UDP端口,那要记得把tcp替换成udp。
  • 使用sudo ufw allow from 10.0.0.1 to any port 22语法,指定哪些IP地址可以访问某个端口。将10.0.0.1替换成实际的IP地址,而22则要换成你想为有关IP地址打开的端口号码。
  • 使用sudo ufw deny 22命令来关闭端口,将22替换成你想要关闭的任何端口。

4、删除不需要的防火墙规则。

没有特别打开的端口在默认情况下处于关闭状态。如果你打开了一个端口,之后又想关闭它,可以按照下面的步骤来操作:

  • 输入sudo ufw status numbered,然后按Enter键。屏幕上会列出所有防火墙规则,每一条规则前面都有对应的号码。
  • 确认要删除的规则所对应的号码。举个例子,如果你要删除打开22号端口的规则,那么这条规则就写在第2行,对应的号码就是2。
  • 输入sudo ufw delete 2,然后按Enter键,删除第2行的规则。

方法 3

方法 3 的 5:

Firewalld

1、登录你的服务器。

如果你在CentOS、Red Hat Enterprise、SUSE或Fedora系统上使用Firewalld,那就可以轻松地使用命令行来打开端口。Firewalld是上述这些发行版默认的防火墙解决方案。

2、运行firewall-cmd --list-ports命令,查看所有打开的端口。

PUBLIC区域是firewalld的默认区域。除非你有明确指定的区域,否则所有打开的端口都会被分配到这里。

  • 你也可以运行sudo firewall-cmd --list-all命令,查看整个firewalld配置,以及所有被允许和拒绝的端口与服务。

3、使用firewall-cmd命令来打开端口。

在这个例子中,我们会示范如何将SSH端口(22)开放给远程访问:

  • 使用firewall-cmd --zone=public --add-port=22/tcp命令可以立即打开端口,但是不会永久保存你做出的更改。
  • 将“--permanent”标记添加到命令中,可以使你做的更改永久生效:firewall-cmd --zone=public --permanent --add-port=22/tcp。
  • 要打开UDP端口,将tcp替换成udp。
  • 要通过服务名称打开端口,使用firewall-cmd --zone=public --permanent命令。

4、给特定IP地址打开一个端口。

如果你只想允许特定IP地址建立传入或传出连接,那就得为它创建一个新的防火墙区域。

  • 使用firewall-cmd --new-zone=MYZONENAME --permanent命令,创建新的区域。
  • 然后,运行firewall-cmd –reload来更新配置。
  • 运行firewall-cmd --get-zones来查看区域。你现在应该就能看到新建的区域了。
  • 使用firewall-cmd --zone=MYZONENAME --add-source=10.0.0.1 --permanent命令,将IP地址连接到有关区域。记得将命令中的IP地址替换成实际的IP地址。
  • 然后,使用firewall-cmd --zone=MYZONENAME --permanent --add-port=22/tcp命令,将原本的“public:”替换成指定的区域名称,将端口打开到有关区域。

5、关闭端口。

你可以使用firewall-cmd命令和不同的标志来关闭端口。在这个例子中,我们将对公共区域永久关闭22号端口:firewall-cmd --zone=public --remove-port=22/tcp --permanent。

方法 4

方法 4 的 5:

ConfigServer Firewall(CSF)

1、登录到你的服务器。

如果你没有以root用户身份登录,可以使用su命令切换到root用户来调整配置,或者在命令前面加上sudo,获取管理员权限。

2、进入CSF配置文件所在的目录。

文件名称是csf.conf,默认情况下会被保存在/etc/csf/csf.conf。输入cd /etc/csf,然后按? Enter键。

3、使用文本编辑器打开csf.conf。

你可以使用任何文本编辑器,比如vim或nano。

  • 要在vim打开csf.conf文件,输入vim csf.config,然后按? Enter键。

4、将一个传入端口添加到TCP_IN列表中。

这个文件包含了所有TCP端口。打开文件后,你会看到TCP_IN和TCP_OUT部分。TCP_IN部分列出了所有打开的TCP传入端口。每个端口都由逗号分隔,并按数字顺序排列,以方便查看,但是不要求你也按照这个顺序添加端口。你可以随便把端口添加到列表末尾,只需用逗号分隔即可。

  • 举个例子,假设你要打开999端口,而当前已经打开的端口分别是20, 21, 22, 25, 53, 80, 110, 143, 443, 465, 587, 993, 995。
  • 将999端口添加到列表中,那么就会变成这样:20, 21, 22, 25, 53, 80, 110, 143, 443, 465, 587, 993, 995, 999。
  • 按下键盘上的i键,你就能进入vim的插入或输入模式。

5、将允许的TCP传出端口添加到TCP_OUT列表中。

和添加传入端口一样,将你想要打开的任何TCP传出端口添加到TCP_OUT列表中即可。

6、保存更改并退出文件。

按照下面的步骤保存并退出文件:

  • 按Esc键。
  • 输入:wq!。
  • 按? Enter键。

7、输入service csf restart,并按? Enter

键。这样会重启防火墙,并打开新的端口。

  • 要关闭端口,只需要重新打开文件,删除端口,保存文件,然后重启防火墙。

方法 5

方法 5 的 5:

Advanced Policy Firewall(APF)

1、登录到你的Linux服务器。

如果你在Linux系统上使用APF防火墙,需要在APF配置文件中更改防火墙配置。

2、前往APF配置文件所在的目录。

你要寻找的文件名称为conf.apf,默认情况下它位于/etc/apf。输入cd /etc/apf,就能进入有关目录。

3、使用文本编辑器打开/etc/apf/conf.apf。

你可以使用任何文本编辑器,比如vim或nano。

  • 要在vim打开conf.apf文件,输入sudo vim /etc/apf/conf.apf,然后按? Enter键。

4、将传入端口添加到IG_TCP_CPORTS 列表中。

打开文件后,你会看到IG_TCP_CPORTS和EG_TCP_CPORTS部分。IG_TCP_CPORTS 部分列出了所有打开的传入端口。每个端口由逗号分隔,并按数字顺序排列,以方便查看,但是不要求你也按照这个顺序添加端口。你可以随便把端口添加到列表末尾,只需用逗号分隔即可。

  • 举个例子,假设你要打开999端口,而当前已经打开的端口分别是20, 21, 22, 25, 53, 80, 110, 143, 443, 465, 587, 993, 995。
  • 将999端口添加到IG_TCP_CPORTS列表中,就变成这样:20, 21, 22, 25, 53, 80, 110, 143, 443, 465, 587, 993, 995, 999。
  • 按下键盘上的i键,就能进入vim的插入或输入模式。

5、将允许的传出端口添加到EG_TCP_CPORTS列表中。

和添加传入端口一样,将你想要打开的任何TCP传出端口添加到EG_TCP_CPORTS列表中即可。

6、保存更改并退出文件。

按照下面的步骤保存并退出文件:

  • 按Esc键。
  • 输入:wq!。
  • 按Enter键。

7、输入service apf -r,然后按? Enter

键。这样会重启APF防火墙,并打开新的端口。

  • 要关闭端口,只需要重新打开文件,删除端口,保存文件,然后重启防火墙。

小提示

  • 如果你发现没有使用或运行任何服务的端口开着,赶紧关闭它!不要给入侵者留下一个开放的入口!
  • 如果你随意添加开放端口,系统可能会被黑客攻击!只有在绝对必要的情况下才打开端口。
评论列表暂无评论
发表评论