Linux:-6-Centos7使用firewall详细讲解

Linux防火墙firewall

  • 一、基本规则***
  • 二、常用设置命令
  • 三、区域类别的详细配置(以public为例)
    • 3.1、 设置默认策略
    • 3.2、启用 ICMP 阻塞反转
    • 3.2、指定网络接口
    • 3.3、 添加源地址
    • 3.4、允许服务
    • 3.5、允许端口
    • 3.6、允许协议
    • 3.7、 启用地址伪装
    • 3.8、 设置端口转发
    • 3.9、设置源端口重定向
    • 3.10、阻止ICMP类型
    • 3.11、 添加/移除详细防火墙规则(富规则)
  • 四、防火墙规则的备份和恢复
    • 4.1、备份防火墙规则
    • 4.2、恢复防火墙规则

一、基本规则***

  1. 同区域拒绝优先
  2. 如果数据包的源地址包(source)的源地址关联到特定的区域,则会应用该区域的规则对些数据包进行处理。
  3. 如果源地址没有关联到任何区域,则将使用传入网络接口所在区域的规则进行处理。
  4. 如果流量与不允许的端口、协议或者服务匹配则拒绝传入。
区域名 描述 用途 注意事项
drop 所有进入的网络连接将被丢弃,没有任何回复。只有出站连接被允许。 最高安全级别的环境,拒绝所有入站连接。 不适用于需要接受任何入站连接的环境。
block 所有进入的网络连接将被拒绝,没有回复,但可以接受ICMP消息。 拒绝所有入站连接,只允许基本的网络探测。 适用于需要极高安全性的环境,不适合需要接收服务的网络。
public 不信任的公共网络,只有指定的入站连接被允许。 适用于公共场所或不信任的网络。 确保只开放必要的服务端口,以减少潜在的攻击面。
external 用于外部网络,启用IP伪装(NAT)。 用于路由器或网关设备,保护内部网络。 配置NAT规则时需确保内部网络的安全和隐私。
dmz 用于非受信任网络中的计算机,可以有限地访问更受信任的网络。 用于隔离受信任网络与不信任网络之间的区域。 确保只允许必要的入站和出站流量,防止内部网络被攻击。
work 用于工作网络,信任级别较高,允许更多入站连接。 适用于公司或组织内部网络。 确保仅开放工作所需的服务,防止不必要的风险。
home 用于家庭网络,信任级别高,允许更多入站连接。 适用于家庭网络,设备之间需要较高的互信。 确保家庭网络设备的安全,防止外部攻击者利用开放的服务。
internal 用于内部网络,信任级别最高,允许大部分入站连接。 用于完全信任的内部网络。 确保内部网络的设备都处于可信状态,防止内部威胁。
trusted 所有网络连接都被接受。 适用于完全信任的网络环境。 仅在完全信任的网络环境中使用,防止外部威胁入侵

二、常用设置命令

#1、查看防火墙启动状态
systemctl status firewalld
#2、开启防火墙
systemctl start firewalld
#3、重启防火墙
systemctl restart firewalld
#4、重新加载防火墙
firewall-cmd --reload
#5、设置防火墙开机自启
systemctl enable firewslld
#6、关闭开机自启
systemctl disable firewslld
#7、查看防火墙开机启动是否成功;enadled 0 为设置成功
systemctl is-enabled firewalld;echo $?
#8、查看防火墙状态
firewall-cmd --state

#9、查看所有服务启用的状态
systemctl list-unit-files

#10、查看启动状态为enable的
systemctl list-unit-files --state=enadled

#11、查看启动状态为enable的类型为服务
systemctl list-unit-files --state=endbled --state=enadled

#12、查看防火墙或者是某个区域
firewall-cmd --list-all
firewall-cmd --list-all-zone
firewall-cmd --list-all --zone=work
firewall-cmd --list-all --zone=trusted
#13、列所有的区域
firewall-cmd --get-zones

#14、查看当前激活区域
firewall-cmd --get-active-zones

#15、查看开放所有端口
firewall-cmd --list-ports
#16、查看系统开放端口
netstat -nltp

参数解释:

  • –zone=public 表示该规则应用的于public区域;
  • –permanent 表示永久有效,(需要重启防火墙生效或者重新加载配置,临时设置不用重启)
  • –add 添加规则
  • –remove 移除规则

三、区域类别的详细配置(以public为例)

Linux:-6-Centos7使用firewall详细讲解_第1张图片

配置项 说明 示例配置 解释
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
#添加单独IP
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
## --permanent表示永久加入(重启生效)
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'
#添加特定的ip特定服务mysql能永久通过
firewall-cmd --zone=public --add-rich-rule="rule family='ipv4' source address='192.168.10.247' service name=mysql  accept" --permanent
#添加防火墙drop永久规则,不指定区域会添加到默认public区域
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

你可能感兴趣的:(一,操作系统学习,linux,运维,服务器)