在管理和维护CentOS服务器的过程中,防火墙是保障系统安全的第一道防线,在某些特定场景下,例如在内部受信任的网络环境中进行软件测试、调试网络连接问题,或是初学者学习配置服务时,我们可能需要临时或永久地关闭防火墙,本文将详细介绍在CentOS系统中如何安全、有效地关闭和管理防火墙,并提供更优化的规则配置建议。

理解CentOS防火墙:firewalld
自CentOS 7版本开始,firewalld取代了传统的iptables,成为了默认的动态防火墙管理工具,它引入了“区域”和“服务”的概念,使得防火墙规则的配置更加灵活和易于管理。
- 区域:
firewalld将网络连接划分为不同的信任级别,每个级别对应一个区域。public区域(公共区域)适用于不信任的网络,仅允许少数指定的传入连接;而trusted区域(信任区域)则允许所有网络流量。 - 服务:服务是预定义的规则集合,例如
http、https、ssh等,通过添加服务,可以快速开放相应的端口,而无需记忆具体的端口号。
理解这些基本概念有助于我们更好地进行后续操作,无论是关闭防火墙还是精细化管理规则。
如何关闭CentOS防火墙
关闭防火墙分为两种情况:临时关闭和永久关闭,请根据您的实际需求选择合适的方法。
临时关闭防火墙
临时关闭防火墙意味着在当前系统运行期间停止firewalld服务,但服务器重启后,防火墙会自动恢复运行,这非常适合进行临时的网络诊断。
执行以下命令来临时停止firewalld服务:
sudo systemctl stop firewalld
执行后,防火墙立即停止工作,您可以使用以下命令来验证其状态:
sudo firewall-cmd --state
如果返回 not running,则表示防火墙已成功关闭。
永久关闭防火墙
如果您确定在服务器重启后也不希望防火墙自动启动,那么需要永久禁用它,这通常不推荐在生产环境中使用,除非有其他硬件防火墙作为替代。
停止当前运行的防火墙服务:

sudo systemctl stop firewalld
禁止firewalld服务在系统启动时加载:
sudo systemctl disable firewalld
执行此命令后,系统会提示移除了相应的符号链接,至此,防火墙已被永久禁用,即使重启服务器,它也不会再自动启动。
检查防火墙状态
无论执行了何种操作,检查防火墙的当前状态都是一个好习惯,您可以使用以下两个命令来获取详细信息:
# 查看firewalld服务的运行状态(是否开机自启) sudo systemctl status firewalld # 查看firewalld守护进程的运行状态 sudo firewall-cmd --state
更安全的做法:管理防火墙规则而非直接关闭
直接关闭防火墙会使服务器完全暴露在潜在的网络攻击之下,是一种高风险行为,在绝大多数情况下,更安全、更专业的做法是保持防火墙开启,并根据实际需求精确地开放必要的端口或服务。
开放指定端口
假设您需要开放TCP协议的8080端口,可以执行以下命令:
# --permanent 表示永久生效,否则重启后失效 sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
开放指定服务
如果您需要开放Web服务(HTTP),可以直接添加服务名,而无需关心其默认的80端口:
sudo firewall-cmd --zone=public --add-service=http --permanent
重新加载配置
在添加了永久规则后,需要重新加载firewalld配置使其立即生效:
sudo firewall-cmd --reload
查看当前生效的规则
您可以使用以下命令查看当前区域的所有规则,以便确认配置是否正确:
sudo firewall-cmd --zone=public --list-all
为了方便查阅,以下是一些常用firewall-cmd命令的小编总结:

| 功能描述 | 命令示例 |
|---|---|
| 查看防火墙状态 | sudo firewall-cmd --state |
| 临时开放端口 | sudo firewall-cmd --add-port=8080/tcp |
| 永久开放端口 | sudo firewall-cmd --add-port=8080/tcp --permanent |
| 永久开放服务 | sudo firewall-cmd --add-service=http --permanent |
| 移除永久端口规则 | sudo firewall-cmd --remove-port=8080/tcp --permanent |
| 移除永久服务规则 | sudo firewall-cmd --remove-service=http --permanent |
| 重新加载配置 | sudo firewall-cmd --reload |
| 查看所有开放的端口 | sudo firewall-cmd --list-ports |
| 查看所有开放的服务 | sudo firewall-cmd --list-services |
如何重新启用防火墙
如果您之前禁用了防火墙,现在希望重新启用它,可以按照以下步骤操作:
启动防火墙服务:
sudo systemctl start firewalld
设置开机自启:
sudo systemctl enable firewalld
执行完毕后,防火墙将恢复运行,并在系统重启后自动启动,之前添加的永久规则(如果未删除)也会随之生效。
相关问答 (FAQs)
问题1:我已经按照教程关闭了防火墙,为什么外部服务(如Web页面)依然无法访问?
答: 这个问题通常不是由防火墙单独引起的,在CentOS系统中,除了firewalld,还有一个重要的安全机制叫做SELinux(Security-Enhanced Linux),SELinux是一个强制访问控制(MAC)系统,它可能会阻止服务访问非标准端口或文件,您可以临时关闭SELinux来测试是否是它导致的问题:
执行 sudo setenforce 0 可以临时将其设置为“宽容模式”,如果服务可以访问了,则说明是SELinux策略限制了服务,正确的做法不是永久禁用SELinux,而是学习如何为其配置正确的策略,使用semanage命令来允许HTTP服务访问8080端口:sudo semanage port -a -t http_port_t -p tcp 8080。
问题2:firewalld 和 iptables 有什么区别?我应该使用哪个?
答: iptables是Linux内核中经典的防火墙工具,它通过直接操作内核的netfilter表来工作,规则是静态的,每次修改规则都需要刷新整个规则集,不够灵活。firewalld是构建在iptables(或nftables)之上的一个更高层的管理工具,它提供了动态管理、区域划分、服务抽象等更现代化的功能,支持在不中断现有连接的情况下更新规则,对于CentOS 7及更高版本的用户,强烈推荐使用firewalld,因为它更易于管理,功能也更强大,是系统默认和官方支持的选择,只有在有特殊需求或需要维护旧系统时,才可能需要直接使用iptables。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复