Linux 防火墙 (firewalld) 管理完整指南

发布于:2025-08-30 ⋅ 阅读:(32) ⋅ 点赞:(0)

防火墙服务管理

查看防火墙状态

# 查看防火墙运行状态
systemctl status firewalld

# 检查防火墙是否开机自启
systemctl is-enabled firewalld

启动与停止防火墙

# 启动防火墙
systemctl start firewalld

# 重启防火墙
systemctl restart firewalld

# 停止防火墙(临时停用,重启后恢复)
systemctl stop firewalld

# 永久禁用防火墙(开机不启动)
systemctl disable firewalld

# 设置防火墙开机自启
systemctl enable firewalld

防火墙端口管理

查看端口配置

# 查看当前生效的端口配置(临时+永久)
firewall-cmd --list-ports

# 查看永久配置的端口
firewall-cmd --list-ports --permanent

# 查看所有开放的服务和端口
firewall-cmd --list-all

添加开放端口

# 添加临时端口(重启后失效)
firewall-cmd --add-port=3306/tcp

# 添加永久端口(需重载生效)
firewall-cmd --zone=public --add-port=3306/tcp --permanent

# 批量添加端口范围
firewall-cmd --add-port=8000-9000/tcp --permanent

参数说明

  • --zone:作用域(默认为 public)
  • --add-port:添加端口,格式为 端口号/协议类型
  • --permanent:永久生效(不加此参数为临时生效)

移除端口

# 临时移除端口
firewall-cmd --remove-port=80/tcp

# 永久移除端口
firewall-cmd --remove-port=80/tcp --permanent

重载防火墙配置

# 重载防火墙配置(使永久配置生效)
firewall-cmd --reload

# 完全重载防火墙(断开现有连接)
firewall-cmd --complete-reload

注意:添加或移除永久端口后,必须执行重载命令才能使更改生效。

服务管理(替代端口管理)

管理预定义服务

# 查看所有预定义服务
firewall-cmd --get-services

# 添加服务(如http)
firewall-cmd --add-service=http --permanent

# 移除服务
firewall-cmd --remove-service=http --permanent

常用服务示例

# HTTP服务(端口80)
firewall-cmd --add-service=http --permanent

# HTTPS服务(端口443)
firewall-cmd --add-service=https --permanent

# SSH服务(端口22)
firewall-cmd --add-service=ssh --permanent

# FTP服务(端口21)
firewall-cmd --add-service=ftp --permanent

区域管理

查看与设置区域

# 查看所有可用区域
firewall-cmd --get-zones

# 查看默认区域
firewall-cmd --get-default-zone

# 查看活动区域
firewall-cmd --get-active-zones

# 设置默认区域
firewall-cmd --set-default-zone=public

# 查看指定区域的配置
firewall-cmd --zone=public --list-all

常用区域说明

  • public:公共区域(默认),适用于不信任的网络环境
  • internal:内部区域,适用于内部网络
  • trusted:信任区域,允许所有连接
  • work:工作区域,适用于工作场所网络
  • home:家庭区域,适用于家庭网络
  • dmz:非军事化区域,适用于对外服务的服务器

高级功能

IP地址限制

# 允许特定IP访问所有端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' --permanent

# 允许特定IP访问特定端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' --permanent

# 拒绝特定IP访问
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject' --permanent

端口转发

# 将80端口转发到8080端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent

# 将80端口转发到特定IP的8080端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.10:toport=8080 --permanent

网络连接检查

查看端口使用情况

# 查看所有TCP端口监听情况
netstat -ntlp

# 查看特定端口使用情况
netstat -ntulp | grep 3306

# 查看所有网络连接
netstat -tuln

# 查看实时网络连接
ss -tunap

故障排除与验证

检查防火墙规则

# 检查防火墙是否正常运行
firewall-cmd --state

# 验证端口是否真正开放
telnet your-server-ip 3306

# 或者使用nmap扫描
nmap -p 3306 your-server-ip

保存与恢复配置

# 导出当前防火墙配置
firewall-cmd --runtime-to-permanent

# 备份防火墙配置
cp /etc/firewalld/firewalld.conf /etc/firewalld/firewalld.conf.backup

# 恢复防火墙配置
cp /etc/firewalld/firewalld.conf.backup /etc/firewalld/firewalld.conf
systemctl restart firewalld

最佳实践建议

  1. 最小权限原则:只开放必要的端口和服务
  2. 使用服务而非端口:优先使用预定义服务而非直接开放端口
  3. 定期审计:定期检查防火墙规则,移除不再需要的规则
  4. 测试规则:在应用永久规则前先测试临时规则
  5. 备份配置:在重大更改前备份防火墙配置
  6. 日志监控:监控防火墙日志以检测异常活动

总结:firewalld 提供了强大而灵活的防火墙管理功能,通过区域概念和服务管理简化了复杂网络环境下的安全配置。掌握这些命令和技巧,能够有效保护系统安全,同时确保必要的网络服务可访问。在实际操作中,建议先在测试环境中验证规则,然后再应用到生产环境。


网站公告

今日签到

点亮在社区的每一天
去签到