一、Firewalld概述
1.1 Firewalld 概述
- 支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具。
- 支持IPv4、IPv6防火墙设置以及以太网桥
- 支持服务或应用程序直接添加防火墙规则接口。
- 拥有两种配置模式: 运行时配置 永久配置
- 基础原理:(防火墙分为两个区域,内部安全级别高,外部安全级别低)
从低安全到高安全 防火墙一定会拦截你,过安检。同等级别也不允许
从防火墙里到外面 防护墙会登记一下,从外面进来的时候会检查一下,如果是目的IP是出去时候的源IP,会直接放行
1.1Firewalld和iptables 的关系
- netfilter
位于linux内核中的包过滤体系,称为linux防火墙的“内核态”。 - Firewalld/iptables
- Centos7默认的管理防火墙规则的工具(Firewalld),称为Linux防火墙“用户态”。
1.2 Firewalld和iptables的区别
区别 | Firewalld | iptables |
---|
配置文件 | /etc/lib/firewalld /etc/firewalld/ | /etc/sysconfig/iptables |
对规则修改 | 不需要全部刷新策略,不丢失现行连接 | 需要全部刷新策略,丢失连接 |
防火墙类型 | 动态防火墙 | 静态防火墙 |
1.3 Firewalld网络区域
1.3.1 区域介绍
- 区域如同进入主机的安全门,每个区域都具有不同限制程度的规则。
- 可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口。
- 默认情况下,public区域是默认区域,包含所有接口(网卡)
1.3.2 Firewalld 数据处理流程
- 检查数据来源的源地址
若源地址关联到特定的区域,则执行该区域所指定的规则
若源地址未关联到特定的区域,则使用传入网络接口的区域,并执行该区域所指定的规则。
1.4 Firewalld防火墙的配置方法
- 运行时配置
实时生效 ,并持续至Firewalld重新启动或重新加载配置。
不中断现有配置
不能修改配置服务 - 永久配置
不立即生效,除非Firewalld重新启动或重新加载配置。
中断现有连接。
可以修改服务配置。 - Firewalld-config 图形工具
- Firewall-cmd 命令行工具
- /etc/firewalld/中的配置文件
Firewalld会优先使用/etc/firewalld中的配置,如果不存在配置文件,则使用/usr/lib/firewalld中的配置。
/etc/firewalld/:用户自定义配置文件,需要时可通过从/usr/lib/firewalld中拷贝
/usr/lib/firewalld/:默认配置文件,不建议修改,若恢复至默认配置,可直接删除/etc/firewalld/中的配置。
1.5 Firewall-config图形工具
- 在图形化安装的linux系统输入Firewall-config 命令,使用图形化工具。
- 最小化安装的linux系统无法使用这条命令。
1.6 firewalld命令
- 所有的firewalld命令都是以 firewall-cmd 开头
查看firewalld状态
systemctl status firewalld
firewall-cmd --state
重新加载防火墙规则 --reload
永久生效规则 --permanent
现有配置全部加载成永久配置 --runtime-to-permanent
1.6.1 获取预定义信息
firewall-cmd --get-zones
firewall-cmd --get-services
firewall-cmd --get-icmptypes
1.6.2 Firewalld区域管理
filewall-cmd
--get-defalut-zone
--set-default-zone=xxx
--get-active-zones
--get-zone-of-interface=<interface>
--zone=<zone> --add-interface=<interface>
--zone=<zone> --change-interface=<interface>
--zone=<zone> --remove-interface=<interface>
--list-all-zones
--zone=<zone> --list-all
1.6.3 Firewalld 服务管理
[--zone=<zone>] --list-services
[--zone=<zone>] --add-service=<service>
[--zone=<zone>] --remove-service=<zone>
[--zone=<zone>] --list-ports
[--zone=<zone>] --add-port=69/udp
[--zone=<zone>] --remove-port=69/udp
[--zone=<zone>] --list-icmp-blocks
[--zone=<zone>] --add-icmp-block=<icmptype>
[--zone=<zone>] --remove-icmp-block=<icmptype>