引言

Firewall-cmd是Linux系统中常用的防火墙管理工具之一,它基于iptables实现,提供了比iptables命令行更加直观和易于使用的接口。本文将详细介绍如何使用firewall-cmd来设置和管理防火墙策略,帮助您轻松掌握这一强大工具。

一、firewall-cmd简介

1.1 firewall-cmd的基本功能

  • 添加、删除、查询防火墙规则
  • 管理网络接口和区域
  • 设置端口转发和伪装
  • 控制服务状态

1.2 firewall-cmd的优势

  • 易于使用:命令行界面简洁明了,易于上手
  • 支持多种配置文件格式:包括JSON、YAML等
  • 支持动态更新:无需重启防火墙即可生效

二、firewall-cmd的基本操作

2.1 查看当前防火墙状态

firewall-cmd --state

2.2 查看所有可用区域

firewall-cmd --get-active-zones

2.3 查看指定区域的规则

firewall-cmd --zone=区域名称 --list-all

三、设置防火墙策略

3.1 添加规则

3.1.1 允许访问特定端口

firewall-cmd --zone=区域名称 --add-port=端口/协议

例如,允许访问80端口:

firewall-cmd --zone=public --add-port=80/tcp

3.1.2 允许访问特定IP地址

firewall-cmd --zone=区域名称 --add-rich-rule='rule family="ipv4" source address="IP地址" accept'

例如,允许访问192.168.1.100:

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'

3.2 删除规则

3.2.1 删除指定端口规则

firewall-cmd --zone=区域名称 --remove-port=端口/协议

例如,删除80端口规则:

firewall-cmd --zone=public --remove-port=80/tcp

3.2.2 删除指定IP地址规则

firewall-cmd --zone=区域名称 --remove-rich-rule='rule family="ipv4" source address="IP地址" accept'

例如,删除192.168.1.100规则:

firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'

3.3 重载防火墙

firewall-cmd --reload

或者重启防火墙服务:

systemctl restart firewalld

四、高级操作

4.1 设置端口转发

firewall-cmd --zone=区域名称 --add-forward-port=port=本地端口:proto=协议:toport=目标端口

例如,将本地80端口转发到目标服务器的8080端口:

firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080

4.2 设置伪装

firewall-cmd --zone=区域名称 --add-masquerade

例如,为public区域启用伪装:

firewall-cmd --zone=public --add-masquerade

4.3 控制服务状态

firewall-cmd --zone=区域名称 --add-service=服务名称
firewall-cmd --zone=区域名称 --remove-service=服务名称

例如,允许SSH服务:

firewall-cmd --zone=public --add-service=ssh

五、总结

通过本文的介绍,相信您已经对firewall-cmd有了较为全面的了解。在实际应用中,您可以根据需要灵活运用firewall-cmd的各种功能,为您的Linux系统提供强大的安全防护。