下载PDF文件 下载PDF文件

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

须知事项

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

Iptables

下载PDF文件
  1. 大部分Linux发行版都预安装了IPtables防火墙,包括Ubuntu、Debian、CentOS、Fedora和Red Hat。只用借助简单的命令,就能在Iptables打开端口。
  2. 如果防火墙还没有运行,可以使用 service iptables start 命令来启动它。
  3. 这些规则被分成了不同的链:
    • INPUT 链用于处理 进入 主机系统的入站连接。
    • FORWARD 链用于路由数据包。
    • OUTPUT 链用于处理 离开 主机系统的出站数据。
    • 每个链都有一个策略来决定如何处理数据包。要打开一个端口,就必须指定一个链。例如,要打开传入的 SSH 连接,你就需要使用“INPUT”链。
  4. 在这个例子中,我们打开的是传入到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. 如果这条命令不起作用,你还可以尝试:
    • 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)

下载PDF文件
  1. 所有Ubuntu系统都预安装了UFW。如果你已经登录到图形用户界面, 打开一个“终端”窗口 就可以了。
  2. 如果UFW已经在运行,屏幕上会出现一个状态提示信息,并列出已经存在的所有防火墙规则,包括已经打开的端口。
    • 如果看到 Status: inactive 的提示信息,那就说明你需要先启用防火墙:
    • 输入 sudo ufw enable ,然后按 Enter 键来启用防火墙。 [1]
    • 使用 sudo ufw logging on 命令,开启防火墙日志记录。
  3. 举个例子,如果你要打开SSH使用的22端口,那就输入 kbd ,然后按下 Enter 键来打开它。你不需要重启防火墙,因为更改会立即生效。 [2]
    • 如果你要打开一个指定服务对应的端口,而这个服务在 /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

下载PDF文件
  1. 如果你在CentOS、Red Hat Enterprise、SUSE或Fedora系统上使用Firewalld,那就可以轻松地使用命令行来打开端口。Firewalld是上述这些发行版默认的防火墙解决方案。 [3]
  2. PUBLIC 区域是firewalld的默认区域。除非你有明确指定的区域,否则所有打开的端口都会被分配到这里。
    • 你也可以运行 sudo firewall-cmd --list-all 命令,查看整个firewalld配置,以及所有被允许和拒绝的端口与服务。
  3. 在这个例子中,我们会示范如何将SSH端口(22)开放给远程访问:
    • 使用 firewall-cmd --zone=public --add-port=22/tcp 命令可以立即打开端口,但是不会永久保存你做出的更改。
    • 将“--permanent”标记添加到命令中,可以使你做的更改永久生效: firewall-cmd --zone=public --permanent --add-port=22/tcp [4]
    • 要打开UDP端口,将 tcp 替换成 udp
    • 要通过服务名称打开端口,使用 firewall-cmd --zone=public --permanent 命令。
  4. 如果你只想允许特定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 [5]
    广告
方法 4
方法 4 的 5:

ConfigServer Firewall(CSF)

下载PDF文件
  1. 如果你没有以root用户身份登录,可以使用 su 命令切换到root用户来调整配置,或者在命令前面加上 sudo ,获取管理员权限。
  2. 文件名称是 csf.conf ,默认情况下会被保存在 /etc/csf/csf.conf [6] 输入 cd /etc/csf ,然后按 Enter 键。
  3. 你可以使用任何文本编辑器,比如vim或nano。
    • 要在vim打开csf.conf文件,输入 vim csf.config ,然后按 Enter 键。
  4. 这个文件包含了所有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 列表中即可。
  6. 按照下面的步骤保存并退出文件:
    • Esc 键。
    • 输入 :wq!
    • Enter 键。
  7. 这样会重启防火墙,并打开新的端口。
    • 要关闭端口,只需要重新打开文件,删除端口,保存文件,然后重启防火墙。
    广告
方法 5
方法 5 的 5:

Advanced Policy Firewall(APF)

下载PDF文件
  1. 如果你在Linux系统上使用APF防火墙,需要在APF配置文件中更改防火墙配置。
  2. 你要寻找的文件名称为 conf.apf ,默认情况下它位于 /etc/apf [7] 输入 cd /etc/apf ,就能进入有关目录。
  3. 你可以使用任何文本编辑器,比如vim或nano。
    • 要在vim打开conf.apf文件,输入 sudo vim /etc/apf/conf.apf ,然后按 Enter 键。
  4. 打开文件后,你会看到 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. 和添加传入端口一样,将你想要打开的任何TCP传出端口添加到 EG_TCP_CPORTS 列表中即可。
  6. 按照下面的步骤保存并退出文件:
    • Esc 键。
    • 输入 :wq!
    • Enter 键。
  7. 这样会重启APF防火墙,并打开新的端口。
    • 要关闭端口,只需要重新打开文件,删除端口,保存文件,然后重启防火墙。
    广告

小提示

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

关于本wikiHow

本页面已经被访问过2,056次。

这篇文章对你有帮助吗?

广告