在 CentOS 系统中,防火墙管理主要通过?firewalld?服务(CentOS 7 及以上默认)或?iptables?实现。以下是关闭防火墙和添加防火墙例外(开放端口 / 服务)的详细操作方法:
首先确认当前防火墙状态,避免重复操作:
# 查看firewalld状态(CentOS 7/8默认)
sudo systemctl status firewalld
# 若显示 "active (running)" 表示防火墙正在运行;"inactive (dead)" 表示已关闭
BashCopy
适用于临时测试场景,重启服务器后防火墙会自动开启:
sudo systemctl stop firewalld
BashCopy
若需长期关闭防火墙(不推荐,存在安全风险),需同时禁用开机自启:
# 停止当前运行的防火墙
sudo systemctl stop firewalld
# 禁用开机自启
sudo systemctl disable firewalld
# 验证是否禁用成功(输出中含 "disabled" 即表示成功)
sudo systemctl is-enabled firewalld
BashCopy
不建议直接关闭防火墙,更安全的方式是开放所需端口或服务。以下是常用操作:
# 开放TCP端口(如80端口)
sudo firewall-cmd --add-port=80/tcp
# 开放UDP端口(如53端口)
sudo firewall-cmd --add-port=53/udp
# 开放端口范围(如1000-2000)
sudo firewall-cmd --add-port=1000-2000/tcp
BashCopy
需添加?--permanent?参数,且需重新加载防火墙规则生效:
# 永久开放TCP 80端口
sudo firewall-cmd --permanent --add-port=80/tcp
# 永久开放UDP 53端口
sudo firewall-cmd --permanent --add-port=53/udp
# 重新加载规则(使永久配置生效)
sudo firewall-cmd --reload
BashCopy
firewalld 预设了常见服务的配置(如?http?对应 80 端口,ssh?对应 22 端口),可直接通过服务名开放:
# 临时开放HTTP服务(80端口)
sudo firewall-cmd --add-service=http
# 永久开放SSH服务(22端口)
sudo firewall-cmd --permanent --add-service=ssh
# 重新加载规则
sudo firewall-cmd --reload
BashCopy
仅允许特定 IP(如 192.168.1.100)访问服务器的所有端口或指定端口:
# 允许192.168.1.100访问所有端口(临时)
sudo firewall-cmd --add-source=192.168.1.100
# 允许192.168.1.100访问80端口(永久)
sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='80' accept"
# 重新加载规则
sudo firewall-cmd --reload
BashCopy
# 查看临时开放的规则
sudo firewall-cmd --list-ports
sudo firewall-cmd --list-services
# 查看永久开放的规则
sudo firewall-cmd --permanent --list-ports
sudo firewall-cmd --permanent --list-services
BashCopy
若需关闭已开放的端口或服务,将?--add?改为?--remove?即可:
# 临时移除80端口
sudo firewall-cmd --remove-port=80/tcp
# 永久移除HTTP服务
sudo firewall-cmd --permanent --remove-service=http
# 重新加载规则
sudo firewall-cmd --reload
BashCopy
若系统使用?iptables?而非?firewalld(如 CentOS 6,或手动关闭 firewalld 后),操作如下:
sudo yum install -y iptables-services
BashCopy
# 临时关闭
sudo systemctl stop iptables
# 永久关闭
sudo systemctl disable iptables
BashCopy
# 开放80端口(TCP)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 开放22端口(SSH)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 保存规则(CentOS 7需用此命令)
sudo service iptables save
# 重启iptables生效
sudo systemctl restart iptables
BashCopy
通过以上方法,可灵活管理 CentOS 系统的防火墙规则,在安全性和功能性之间取得平衡。
Copyright © 2013-2024 8a.hk All Rights Reserved. 八艾云 版权所有 中山市八艾云计算有限公司 粤ICP备14095776号 粤公网安备 44200002445359号
增值电信业务经营许可证编号:B1-20222012
代理域名注册服务机构:西部数码