防火墙
概念
- 支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
- 支持IPv4、IPv6防火墙设置以及以太网桥
- 支持服务或应用程序直接添加防火墙规则接口
- 拥有两种配置模式
- 运行时配置:添加的策略立即生效,不用重载防火墙,策略临时存在(重启后失效)
- 永久配置:添加的策略需要重载防火墙才会生效,策略永远存在
形态
不管是什么防火墙,只要是在Linux中运行的防火墙,就有两种形态
- 内核态:netfilter
- 指的是操作系统内核运行的环境,具有最高权限和直接访问系统硬件的能力。在内核态运行的代码可以执行高级的系统操作。
- netfilter:是Linux内核的一个框架,用于实现网络数据包的过滤和修改。它提供了对数据包进行处理的接口,可以用于实现防火墙功能、网络地址转换(NAT)等。
- 通常netfilter被firewalld和iptables管理
- 用户态:iptables、firewalld
- 是指操作系统提供给应用程序运行的环境,应用程序在用户态运行,不能直接访问硬件,必须通过系统调用等方式访问操作系统提供的服务。
- iptables:是Linux系统中一个传统的命令行工具,用于配置IPv4数据包过滤规则和网络地址转换(NAT)规则。iptables配置的规则会被netfilter在内核态中执行。
- firewalld:是一个动态管理防火墙的工具,提供了简化配置和管理防火墙规则的方式。它作为用户态程序运行,并与内核态中的netfilter交互,实现网络安全策略。
防火墙分类
- 包过滤防火墙:匹配数据包内的关键字,进行过滤
- 状态话防火墙(思科、华为等设备 )
firewalld网络区域
- 区域如同进入主机的安全门,每个区域都具有不同限制程度的规则
- 可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口
- 默认情况下,public区域是默认区域,包含所有接口(网卡)
区域划分
- 阻塞区域(block):任何传入的网络数据包都将被阻止。
- 隔离区域(DMZ):隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。
- 丢弃区域(drop):任何传入的网络连接都被拒绝。
- 外部区域(external):不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
- 家庭区域(home):相信网络上的其他计算机,不会损害你的计算机。
- 内部区域(internal):信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
- 公共区域(public):不相信网络上的任何计算机,只有选择接受传入的网络连接。
- 信任区域(trusted):所有的网络连接都可以接受。
- 工作区域(work):相信网络上的其他计算机,不会损害你的计算机。
配置防火墙相关命令
|--------------------------------------------------------|-----------------------------------------------|
| 命令 | 说明 |
| firewall-cmd --state | 查询防火墙状态 |
| firewall-cmd --get-zones | 获取当前所有区域 |
| firewall-cmd --get-service | 获取所有能管理的服务 这里的服务都是默认端口,如果服务的端口被修改了,就不能直接管理该服务 |
| firewall-cmd --get-default-zone | 当前接口默认属于哪个区域 |
| firewall-cmd --set-default-zone=internal | 将当前接口的默认区域修改为internal |
| firewall-cmd --get-active-zones | 查询当前被激活的区域 |
| firewall-cmd --get-zone-of-interface=ens33 | 查询指定接口所在的区域 |
| firewall-cmd --zone=dmz --list-interface | 列出指定区域有哪些接口 |
| firewall-cmd --zone=dmz --add-service=http | 为指定区域添加支持的服务 |
| firewall-cmd --zone=dmz --remove-service=http | 删除该区域的指定服务的默认端口 |
| firewall-cmd --zone=dmz --list-services | 列出指定区域支持的服务 |
| firewall-cmd --zone=dmz --add-port=80/tcp | 添加端口号策略 为同一个服务添加访问端口时,要把对应部署的服务默认端口删除 |
| firewall-cmd --zone=dmz --change-interface=ens33 | 修改指定接口的所在区域为dmz |
| firewall-cmd --zone=dmz --add-service=http --permanent | 为dmz区域以永久时的方式部署http服务 |
| firewall-cmd --zone=dmz --remove-interface=ens38 | 删除dmz区域的ens38接口 |
| firewall-cmd --list-all --zone=dmz | 列出指定区域的全部信息 |
| firewall-cmd --reload | 重载防火墙 |