下载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”标记,可以确保在你停止并重启防火墙时,所做的更改不会被撤消。
步骤
-
登录Linux服务器,并(或)打开“终端”窗口。 大部分Linux发行版都预安装了IPtables防火墙,包括Ubuntu、Debian、CentOS、Fedora和Red Hat。只用借助简单的命令,就能在Iptables打开端口。
-
运行 service iptables status 命令,确保防火墙处于活动状态。 如果防火墙还没有运行,可以使用 service iptables start 命令来启动它。
-
使用 sudo iptables -L 命令来列出当前的防火墙规则。 这些规则被分成了不同的链:
- INPUT 链用于处理 进入 主机系统的入站连接。
- FORWARD 链用于路由数据包。
- OUTPUT 链用于处理 离开 主机系统的出站数据。
- 每个链都有一个策略来决定如何处理数据包。要打开一个端口,就必须指定一个链。例如,要打开传入的 SSH 连接,你就需要使用“INPUT”链。
-
使用 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 命令。
-
使用 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端口。
广告
-
输入 sudo ufw status verbose ,然后按 ↵ Enter 键。 如果UFW已经在运行,屏幕上会出现一个状态提示信息,并列出已经存在的所有防火墙规则,包括已经打开的端口。
- 如果看到 Status: inactive 的提示信息,那就说明你需要先启用防火墙:
- 输入 sudo ufw enable ,然后按 Enter 键来启用防火墙。 [1] X 研究来源
- 使用 sudo ufw logging on 命令,开启防火墙日志记录。
-
使用 sudo ufw allow [port number] 命令来打开端口。 举个例子,如果你要打开SSH使用的22端口,那就输入 kbd ,然后按下 Enter 键来打开它。你不需要重启防火墙,因为更改会立即生效。 [2] X 研究来源
- 如果你要打开一个指定服务对应的端口,而这个服务在 /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 替换成你想要关闭的任何端口。
-
删除不需要的防火墙规则。 没有特别打开的端口在默认情况下处于关闭状态。如果你打开了一个端口,之后又想关闭它,可以按照下面的步骤来操作:
- 输入 sudo ufw status numbered ,然后按 Enter 键。屏幕上会列出所有防火墙规则,每一条规则前面都有对应的号码。
- 确认要删除的规则所对应的号码。举个例子,如果你要删除打开22号端口的规则,那么这条规则就写在第2行,对应的号码就是2。
- 输入 sudo ufw delete 2 ,然后按 Enter 键,删除第2行的规则。
广告
-
登录你的服务器。 如果你在CentOS、Red Hat Enterprise、SUSE或Fedora系统上使用Firewalld,那就可以轻松地使用命令行来打开端口。Firewalld是上述这些发行版默认的防火墙解决方案。 [3] X 研究来源
-
运行 firewall-cmd --list-ports 命令,查看所有打开的端口。 PUBLIC 区域是firewalld的默认区域。除非你有明确指定的区域,否则所有打开的端口都会被分配到这里。
- 你也可以运行 sudo firewall-cmd --list-all 命令,查看整个firewalld配置,以及所有被允许和拒绝的端口与服务。
-
使用 firewall-cmd 命令来打开端口。 在这个例子中,我们会示范如何将SSH端口(22)开放给远程访问:
- 使用 firewall-cmd --zone=public --add-port=22/tcp 命令可以立即打开端口,但是不会永久保存你做出的更改。
- 将“--permanent”标记添加到命令中,可以使你做的更改永久生效: firewall-cmd --zone=public --permanent --add-port=22/tcp 。 [4] X 研究来源
- 要打开UDP端口,将 tcp 替换成 udp 。
- 要通过服务名称打开端口,使用 firewall-cmd --zone=public --permanent 命令。
-
给特定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:”替换成指定的区域名称,将端口打开到有关区域。
-
关闭端口。 你可以使用 firewall-cmd 命令和不同的标志来关闭端口。在这个例子中,我们将对公共区域永久关闭22号端口: firewall-cmd --zone=public --remove-port=22/tcp --permanent 。 [5] X 研究来源广告
-
登录到你的服务器。 如果你没有以root用户身份登录,可以使用 su 命令切换到root用户来调整配置,或者在命令前面加上 sudo ,获取管理员权限。
-
进入CSF配置文件所在的目录。 文件名称是 csf.conf ,默认情况下会被保存在 /etc/csf/csf.conf 。 [6] X 研究来源 输入 cd /etc/csf ,然后按 ↵ Enter 键。
-
使用文本编辑器打开 csf.conf 。 你可以使用任何文本编辑器,比如vim或nano。
- 要在vim打开csf.conf文件,输入 vim csf.config ,然后按 ↵ Enter 键。
-
将一个传入端口添加到 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的插入或输入模式。
-
将允许的TCP传出端口添加到 TCP_OUT 列表中。 和添加传入端口一样,将你想要打开的任何TCP传出端口添加到 TCP_OUT 列表中即可。
-
保存更改并退出文件。 按照下面的步骤保存并退出文件:
- 按 Esc 键。
- 输入 :wq! 。
- 按 ↵ Enter 键。
-
输入 service csf restart ,并按 ↵ Enter 键。 这样会重启防火墙,并打开新的端口。
- 要关闭端口,只需要重新打开文件,删除端口,保存文件,然后重启防火墙。
广告
-
登录到你的Linux服务器。 如果你在Linux系统上使用APF防火墙,需要在APF配置文件中更改防火墙配置。
-
使用文本编辑器打开 /etc/apf/conf.apf 。 你可以使用任何文本编辑器,比如vim或nano。
- 要在vim打开conf.apf文件,输入 sudo vim /etc/apf/conf.apf ,然后按 ↵ Enter 键。
-
将传入端口添加到 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的插入或输入模式。
-
将允许的传出端口添加到 EG_TCP_CPORTS 列表中。 和添加传入端口一样,将你想要打开的任何TCP传出端口添加到 EG_TCP_CPORTS 列表中即可。
-
保存更改并退出文件。 按照下面的步骤保存并退出文件:
- 按 Esc 键。
- 输入 :wq! 。
- 按 Enter 键。
-
输入 service apf -r ,然后按 ↵ Enter 键。 这样会重启APF防火墙,并打开新的端口。
- 要关闭端口,只需要重新打开文件,删除端口,保存文件,然后重启防火墙。
广告
小提示
- 如果你发现没有使用或运行任何服务的端口开着,赶紧关闭它!不要给入侵者留下一个开放的入口!
- 如果你随意添加开放端口,系统可能会被黑客攻击!只有在绝对必要的情况下才打开端口。
广告
参考
- ↑ https://wiki.ubuntu.com/UncomplicatedFirewall
- ↑ https://help.ubuntu.com/lts/serverguide/firewall.html
- ↑ https://firewalld.org/
- ↑ https://firewalld.org/documentation/howto/open-a-port-or-service.html
- ↑ https://docs.fedoraproject.org/en-US/quick-docs/firewalld/
- ↑ https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-config-server-firewall-csf-on-ubuntu
- ↑ https://docs.cpanel.net/knowledge-base/general-systems-administration/how-to-configure-your-firewall-for-cpanel-services/
广告