1. 防火墙的相关知识
1)软件级(类似于寄居架构):安装在操作系统上的程序
优点:工作在应用层,功能非常强大,可以对IP地址进行过滤,还可以针对用户名进行过滤、组进行过滤。
缺点:工作在应用层,代理级的。对包的执行效率非常低。; 兼容性问题,安全漏洞问题,
常见的防火墙: Windows: ISA2012 、天网
Linux: iptables、firewall 2)硬件级(类似于远程架构):独立的硬件,嵌入式的操作系统,这个操作系统本身就是防火墙,不需要开启那么多的功能磨合那么多的接口,只开启跟防火墙相对的功能和接口,所以相对来说稳定一些
优点: 稳定、高效,根据数据包里的信息过滤,解决兼容性问题,解决安全漏洞问题,成本降低,根据用户全体提升性能。作为网络安全防护的主要设备。
缺点:功能没有软件级那么强大。
常见的硬件级防火墙:
华为、思科、深信服飞塔、中新金盾、天融信、绿盟科技、Juniper、启明星辰、网康、安氏领信、NETGEAR
2、按功能分类
> 1)包过滤型防火墙:抓取通过设备的数据包,对数据流层的内容进行分析,服务端口,目标IP、源IP、MAC地址等信息
>
> 2)应用层防火墙:工作在应用层,可以对应用层的很多软件进行监听和保护。对信息类的数据进行监控分析,对传输的文件类型进行监控。
>
> 3)包检测性防火墙:抓取用户的访问请求,预判用户的下一步动作,并对动作进行监听。
>
> 4)网络行为管理防火墙:上网行为监控,域名访问记录,软件访问记录,搜索记录,论坛消息记录,qq微信等聊天软件消息记录,电子邮件等(华为称之为下一代防火墙)
3. 根据存放位置分类
1)网络型防火墙: 根据所处的位置:前端/后端/背靠背/双宿主/三宿主
多数指的是网络中硬件防火墙,保护局域网中的所有主机,很对于网络。 2)主机防火墙
多数指的系统的软件防火墙,只保护本地主机3.firewall防火墙规则
firewall:用户态,规则列表,为netfilter提供命令/规则工具,有用户定义
netfilter:内核态,内核模块。提供数据转发,丢弃等功能/执行规则,接受数据包,封装数据包,转发数据包,丢弃数据包,系统内核对数据包的处理机制。
4. 钩子函数
钩子函数是在一个事件触发的时候,在系统级捕捉到他,然后 做出来 一些操作,一段用以处理系统消息的程序,“钩子”就是在某个阶段给你一个某些处理的机会。
firewall和netfilter钩子函数(hook function)
prerouting:路由之前检测
input:入站
output:出站
forward:转发
postrouting:路由之后检测
5. 规则链
在firewall中设置的数据过滤负责或处理数据包的策略叫作规则,将多个规则合成一个规则链。
firewall和netfilter利用五种钩子函数存放过滤规则
PREOUTING : 路由之前检测(DNAT),发布内网服务器(路由选择前处理数据包,目标地址转换)
INPUT:入站(数据包目标地址是firewalld本身,主机型防火墙)
OUTPUT:出站(数据包目标地址是firewalld本身,主机型防火墙)
FORWARD:转发(数据包目标地址是firewalld之外的应用程序服务器)
POSTROUTING:路由之后检测(SNAT)PAT(路由选择后处理数据包,源地址转换)
6. 表:(规则链存放在表中;规则链存放过滤规则),叫作规则表
filter表:过滤表,确实是否放行数据包,包括INPUT,OUTPUT,FORWARD链
mangle表:为数据包做标记,数据包需要做什么,包括 INPUT,OUTING,PREROUTING ,POSTROUTING,FORWARD
net表: 地址转换表,包括PREROUTING,POSTROUING,OUTPUT链
raw表: 确定是否对该数据包进行状态跟踪包括PREROUTING,OUTPUT
7. firewalld站点:
1)增加了网络区域安全设置,网络区域中可以放入接口,不同的区域设置了不同的安全级别
2)支持ipv4和ipv6两种策略表
3)支持服务或应用程序直接添加在防火墙规则接口,
4)支持两种配置模式:运行时配置(临时),永久配置
8. 数据包处理方式:
1)数据包中的源地址首先匹配特定区域如果满足规则,则执行数据包处理动作(接口加入到安全区域的状态)
2)接口未加入到指定的安全区域,数据包中的源地址则无法匹配指定区域规则,则使用接口的本地区域规则进行数据包处理动作
3)数据包的源地址无法匹配接口规则时,则使用默认区域规则处理数据包。
9. 预定义1区域
trusted(信任区域) 可以接收所有网络的数据
public(公共区域) 允许输出 拒绝输出,除 ssh、dhcpv6-client
work(工作区域) 拒绝输入
home(家庭区域) 拒绝输入
internal(内部区域) 允许输出
external(外部区域) 允许输出
dmz(隔离区域) 拒绝输入
block(限制区域) 拒绝输入
drop(丢弃区域) 拒绝输入