什么是防火墙
计算机网络隔离技术,可以过滤网络数据包!把无效的数据隔离出来,保证计算机的安全。我们把这种功能的“硬件或软件”称为“防火墙”
防火墙的分类
- 逻辑上分类
- 计算机防火墙:针对单个主机进行防护 例如windows
- 网络防火墙: 处于网络入口,针对网络入口进行防护,保护网络后面的集群
- 物理上分类
- 硬件防火墙: 在硬件级别实现防火墙的功能 优点:性能好 并发高 缺点:成本高
- 软件防火墙: 以软件的方式模拟防火墙的功能 优点:成本低 缺点:性能不高
什么是iptables
iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫netfilter
netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。它可以对数据包过滤,连接追踪,限速,网络地址转换nat等功能
iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架
什么是“包过滤防火墙”
包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运。它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包(让这个包通过),也可能执行其它更复杂的动作。
包过滤防火墙将对每一个接收到的包做出允许或拒绝的决定。具体地讲,它针对每一个数据包的包头,按照包过滤规则进行判定,与规则相匹配的包依据路由信息继续转发,否则就丢弃。包过滤是在IP层实现的,包过滤根据数据包的源IP地址、目的IP地址、协议类型(TCP包、UDP包、ICMP包)、源端口、目的端口等包头信息及数据包传输方向等信息来判断是否允许数据包通过。 包过滤也包括与服务相关的过滤,这是指基于特定的服务进行包过滤,由于绝大多数服务的监听都驻留在特定TCP/UDP端口,因此,为阻断所有进入特定服务的链接,防火墙只需将所有包含特定TCP/UDP目的端口的包丢弃即可。
“netfilter包过滤防火墙是如何工作的”
一个请求从宏观上看,就是先通过网卡,再通过内核空间,再到用户空间的应用,netfilter就是在内核网络协议栈中,也就是在网络层和传输层。
怎么过滤呢?
netfilter网络协议栈上设立了一个个检测点(HOOK)。就是下面的五个监测点。
NF_IP_PRE_ROUTING
刚刚进入网络层的数据包通过此点
NF_IP_LOCAL_IN
经路由查找后,送往本机的通过此检查点
NF_IP_FORWARD
要转发的包通过此检测点
NF_IP_POST_ROUTING
通过网络设备出去的包通过此检测点
NF_IP_LOCAL_OUT
本机进程发出的包通过此检测点
简称为prerouting、input、forword、output、postrouting,过滤的是网络层和传输层的数据包