firewalld(firewall daemon)是新一 Linux 代防火墙工具,它提供了支持网络 / 防火墙区域 (zone) 定义网络链接以及接口安全等级的动态防火墙管理工具,并且拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。
Firewall 能将不同的网络连接归类到不同的信任级别,Zone(域)供了以下几个级别:
drop(丢弃): 任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接
block(限制): 拒绝所有外部发起的连接,允许内部发起的连接
public(公共): 在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。
external(外部): 特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。
dmz(非军事区): 用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
work(工作区): 用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。
home(家庭):用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。
internal(内部):用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。
trusted(信任): 可接受所有的网络连接。
服务管理命令
1 2 3 4 5 6
| systemctl start firewalld 启动, systemctl enable firewalld 开机启动 systemctl stop firewalld 关闭 systemctl restart firewalld 重启 systemctl disable firewalld 取消开机启动 systemctl status firewalld 查看运行状态
|
常用状态命令
1 2 3 4 5 6 7 8
| firewall-cmd --state 查看运行状态 firewall-cmd --get-actvie-zones 查看已被激活的 Zone 信息 firewall-cmd --get-zone-of-interface=eth0 查看指定接口的 Zone 信息 firewall-cmd --zone=public --list-interfaces查看指定级别的接口 firewall-cmd --zone=public --list-all 查看指定级别的开放的接口 firewall-cmd --get-service 查看所有级别被允许的信息 firewall-cmd --get-service --permanent 查看重启后所有 Zones 级别中被允许的服务,即永久放行的服务 cat /etc/services 查看所有开放的接口
|
管理规则
1 2 3 4 5 6 7 8 9 10
| firewall-cmd --panic-on 丢弃 firewall-cmd --panic-off 取消丢弃 firewall-cmd --query-panic 查看丢弃状态 firewall-cmd --reload 更新规则,不重启服务 firewall-cmd --complete-reload 更新规则,重启服务
添加某接口至某信任等级,譬如添加 eth0 至 public,再永久生效 irewall-cmd --zone=public --add-interface=eth0 --permanent 设置 public 为默认的信任级别 firewall-cmd --set-default-zone=public
|
端口管理
1 2 3 4 5
| 列出 public 级别的被允许的进入端口 firewall-cmd --zome=public --list-ports 添加8080端口到public级别(带 --permanent为永久生效) firewall-cmd --zone=public --add-port=8080/tcp [ --permanent] 添加规则之后需要更新规则,不重启服务
|
管理服务
1 2 3 4
| 添加 smtp 服务至 work Zone firewall-cmd --zone=work --add-service=smtp 移除 work zone 中的 smtp 服务 firewall-cmd --zone=work --remove-service=smtp
|
配置端口转发,(20–>3573)
1 2 3 4 5 6 7 8 9 10 11
| 要打开端口转发,则需要先 firewall-cmd --zone=external --add-masquerade
然后转发 tcp 22 端口至 3753 firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=3753
转发 22 端口数据至另一个 ip 的相同端口上 firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100
转发 22 端口数据至另一 ip 的 2055 端口上 firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100
|
参考资料
https://fedoraproject.org/wiki/FirewallD/zh-cn#.E4.BD.BF.E7.94.A8_FirewallD_.E6.9E.84.E5.BB.BA.E5.8A.A8.E6.80.81.E9.98.B2.E7.81.AB.E5.A2.99