在 CentOS 7 中,默认的防火墙服务是 firewalld
,它取代了之前版本中的 iptables
。firewalld
使用了名为“firewall-cmd”的命令行工具来管理防火墙规则。
firewalld
的关键概念包括:
firewalld
允许你进行临时(运行时)或永久更改。临时更改在服务或系统重启后不生效,而永久更改需要重新加载防火墙配置或重启服务。# 开启防火墙
sudo systemctl start firewalld
# 关闭防火墙
sudo systemctl stop firewalld
# 设置防火墙开机启动
sudo systemctl enable firewalld
# 设置防火墙开机不启动
sudo systemctl disable firewalld
# 重启防火墙服务
sudo systemctl restart firewalld
sudo systemctl status firewalld
# 添加一个永久的开放端口规则
sudo firewall-cmd --permanent --add-port=XXXX/tcp
# 移除一个永久的开放端口规则
sudo firewall-cmd --permanent --remove-port=XXXX/tcp
# 立即开放一个端口(直到下一次重新加载)
sudo firewall-cmd --add-port=XXXX/tcp
# 立即关闭一个端口(直到下一次重新加载)
sudo firewall-cmd --remove-port=XXXX/tcp
将 XXXX
替换为您希望开放或关闭的端口号。对于 UDP 端口,将 tcp
替换为 udp
。
在更改了防火墙规则之后,您需要重新加载 firewalld
来应用这些更改:
sudo firewall-cmd --reload
这将应用所有永久规则,并保持当前活动的会话。
与端口不同,服务是预先定义的端口和协议组合。您可以管理服务而不是单独的端口:
# 开放一个服务
sudo firewall-cmd --permanent --add-service=http
# 关闭一个服务
sudo firewall-cmd --permanent --remove-service=http
# 重新加载防火墙来应用更改
sudo firewall-cmd --reload
要查看当前开放的端口和服务,可以使用以下命令:
# 查看当前活动区域的开放端口
sudo firewall-cmd --list-ports
# 查看当前活动区域的开放服务
sudo firewall-cmd --list-services
# 查看所有永久规则(需要重新加载后生效)
sudo firewall-cmd --list-all --permanent