一、基本规则***
- 同区域拒绝优先;
- 如果数据包的源地址包(source)的源地址关联到特定的区域,则会应用该区域的规则对些数据包进行处理。
- 如果源地址没有关联到任何区域,则将使用传入网络接口所在区域的规则进行处理。
- 如果流量与不允许的端口、协议或者服务匹配则拒绝传入。
区域名 | 描述 | 用途 | 注意事项 |
---|
drop | 所有进入的网络连接将被丢弃,没有任何回复。只有出站连接被允许。 | 最高安全级别的环境,拒绝所有入站连接。 | 不适用于需要接受任何入站连接的环境。 |
block | 所有进入的网络连接将被拒绝,没有回复,但可以接受ICMP消息。 | 拒绝所有入站连接,只允许基本的网络探测。 | 适用于需要极高安全性的环境,不适合需要接收服务的网络。 |
public | 不信任的公共网络,只有指定的入站连接被允许。 | 适用于公共场所或不信任的网络。 | 确保只开放必要的服务端口,以减少潜在的攻击面。 |
external | 用于外部网络,启用IP伪装(NAT)。 | 用于路由器或网关设备,保护内部网络。 | 配置NAT规则时需确保内部网络的安全和隐私。 |
dmz | 用于非受信任网络中的计算机,可以有限地访问更受信任的网络。 | 用于隔离受信任网络与不信任网络之间的区域。 | 确保只允许必要的入站和出站流量,防止内部网络被攻击。 |
work | 用于工作网络,信任级别较高,允许更多入站连接。 | 适用于公司或组织内部网络。 | 确保仅开放工作所需的服务,防止不必要的风险。 |
home | 用于家庭网络,信任级别高,允许更多入站连接。 | 适用于家庭网络,设备之间需要较高的互信。 | 确保家庭网络设备的安全,防止外部攻击者利用开放的服务。 |
internal | 用于内部网络,信任级别最高,允许大部分入站连接。 | 用于完全信任的内部网络。 | 确保内部网络的设备都处于可信状态,防止内部威胁。 |
trusted | 所有网络连接都被接受。 | 适用于完全信任的网络环境。 | 仅在完全信任的网络环境中使用,防止外部威胁入侵 |
二、常用设置命令
systemctl status firewalld
systemctl start firewalld
systemctl restart firewalld
firewall-cmd --reload
systemctl enable firewslld
systemctl disable firewslld
systemctl is-enabled firewalld;echo $?
firewall-cmd --state
systemctl list-unit-files
systemctl list-unit-files --state=enadled
systemctl list-unit-files --state=endbled --state=enadled
firewall-cmd --list-all
firewall-cmd --list-all-zone
firewall-cmd --list-all --zone=work
firewall-cmd --list-all --zone=trusted
firewall-cmd --get-zones
firewall-cmd --get-active-zones
firewall-cmd --list-ports
netstat -nltp
参数解释:
- –zone=public 表示该规则应用的于public区域;
- –permanent 表示永久有效,(需要重启防火墙生效或者重新加载配置,临时设置不用重启)
- –add 添加规则
- –remove 移除规则
三、区域类别的详细配置(以public为例)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0f5f888b5c7045f390121f2b29911b1d.png)
配置项 | 说明 | 示例配置 | 解释 |
---|
target | 默认策略 | target: ACCEPT | 默认允许所有流量。如果没有匹配的规则,则接受数据包。 |
icmp-block-inversion | ICMP 阻塞反转 | icmp-block-inversion: yes | 启用ICMP阻塞反转,阻止所有未显式允许的ICMP类型。 |
interfaces | 应用此区域的网络接口 | interfaces: eth0, wlan0 | 将规则应用于eth0和wlan0接口。 |
sources | 应用此区域的源地址 | sources: 192.168.1.0/24, 10.0.0.0/8 | 允许来自192.168.1.0/24和10.0.0.0/8网络的流量。 |
services | 允许的服务 | services: ssh, http | 允许SSH和HTTP服务。 |
ports | 允许的端口 | ports: 80/tcp, 443/tcp, 3306/tcp | 允许通过TCP端口80(HTTP)、443(HTTPS)和3306(MySQL)的流量。 |
protocols | 允许的协议 | protocols: icmp, tcp | 允许ICMP和TCP协议。 |
masquerade | 启用或禁用地址伪装(NAT) | masquerade: yes | 启用网络地址转换功能。 |
forward-ports | 端口转发规则 | forward-ports: port=80:proto=tcp:toport=8080 | 将流量从端口80转发到端口8080。 |
source-ports | 源端口重定向 | source-ports: port=12345:proto=tcp:toport=54321 | 将源端口12345的流量重定向到端口54321。 |
icmp-blocks | 阻塞的ICMP类型 | icmp-blocks: echo-request, echo-reply | 阻止ICMP回显请求和回显应答。 |
rich rules | 详细的防火墙规则 | rich rules: rule family=“ipv4” source address=“192.168.1.100” service name=“ssh” accept rule family=“ipv4” source address=“10.0.0.0/8” port port=“8080” protocol=“tcp” accep | 允许来自192.168.1.100的SSH流量和来自10.0.0.0/8网络的TCP端口8080流量。 |
3.1、 设置默认策略
firewall-cmd --set-default-zone=public
3.2、启用 ICMP 阻塞反转
firewall-cmd --zone=public --set-target=DROP
firewall-cmd --zone=public --add-icmp-block-inversion
3.2、指定网络接口
firewall-cmd --zone=public --add-interface=eth0
firewall-cmd --zone=public --add-interface=wlan0
firewall-cmd --zone=public --change-interface=nes33 --permanent
3.3、 添加源地址
firewall-cmd --zone=public --add-source=192.168.1.0/24
firewall-cmd --zone=public --add-source=10.0.0.0/8
firewall-cmd --zone=public --add-source=192.168.10.137
3.4、允许服务
firewall-cmd --zone=public --add-service=ssh
firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --add-service=mysql --permanent
3.5、允许端口
firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=443/tcp
firewall-cmd --zone=public --add-port=3306/tcp
firewall-cmd --zone=public --add-port=8080/tcp --permanent
3.6、允许协议
firewall-cmd --zone=public --add-protocol=icmp
firewall-cmd --zone=public --add-protocol=tcp
3.7、 启用地址伪装
firewall-cmd --zone=public --add-masquerade
3.8、 设置端口转发
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
3.9、设置源端口重定向
firewall-cmd --zone=public --add-source-port=port=12345:proto=tcp:toport=54321
3.10、阻止ICMP类型
firewall-cmd --zone=public --add-icmp-block=echo-request
firewall-cmd --zone=public --add-icmp-block=echo-reply
3.11、 添加/移除详细防火墙规则(富规则)
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port port="8080" protocol="tcp" accept'
firewall-cmd --zone=public --add-rich-rule="rule family='ipv4' source address='192.168.10.247' service name=mysql accept" --permanent
firewall-cmd --add-rich-rule="rule family='ipv4' source address='192.168.10.86' drop" --permanent
firewall-cmd --remove-rich-rule="rule family='ipv4' source address='192.168.10.86' drop" --permanent
四、防火墙规则的备份和恢复
4.1、备份防火墙规则
firewall-cmd --runtime-to-permanent
firewall-cmd --permanent --list-all > firewall_rules_backup.txt
4.2、恢复防火墙规则
firewall-cmd --permanent --add-rich-rule="$(cat firewall_rules_backup.txt)"
firewall-cmd --reload