一、防火墙基础原理
1、防火墙是什么?隔离本地网络与外界网络之间的一道防御系统
通俗的说,防火墙就是防火的墙,主要目的就是隔离火并建立安全区域,所以防火墙对于互联网或计算机而言 可能是工作在主机或网络的边缘(计算机的边缘可能是一块网卡,而网络边缘可能是路由),对于进出数据的报文事先定义好的规则中的标准进行检查、监控,一旦符合标准的话,我们就采取由这个规则定义的处理动作,我们称为主机防火墙或网络防火墙
linux:网络防火墙,有两组框架,实现防火功能的主要是netfilter
netfilter:是内核中的过滤框架,是网络过滤器
iptables:是一个生产防火墙规则的并且能够将其附加在netfilter上,真正实现
数据报文过滤的工具,当然这只是其中的一种功能,NAT、mangle等规则生成的工具。而它本身并不能防火,真正起到防火墙功能的是规则,规则只有放到netfilter上才能生效。规则包括处理标准和处理办法防火墙可以是硬件也可以是软件,无论硬件还是软件需要定义规则之后,让其生效,才能真正工作起来
注意:防火墙不防家贼
2、如何定义防火墙中的规则办法?
2.1、首先规则中一个有一个默认规则,而这个默认规则有两种处理方法:
开发:符合规则的放行,不符合的堵住,即堵住非法分子
关闭:默认情况下门是关着的只有拿到通行证的才能进入
防火墙要想实现是靠规来实现的,而规则包括匹配标准和处理方法
2.2、匹配标准
根据IP匹配:源IP,目标IP
根据TCP匹配:源端口(SPORT),目标端口(DPORT)定义标志位规则限定哪个可以通过
SYN=1,FIN=0,RST=0,ACK=0--》第一次握手;SYN=1,FIN=0,RST=0,ACK=1--》第二次握手:
SYN=0,FIN=0,RST=0,ACK=1--》第三次握手
根据UDP匹配:源端口(SPORT),目标端口(DPORT)
根据ICMP匹配:icmp-type报文类型
2.3、数据报文过滤(防火墙):
在内核的TCP/IP协议栈上,选几个开放的位置,而这几个位置必须是数据报文经过的地方。只对用户空间的某个命令进行开放使用,用户空间中有一个应用程序,这个应用程序帮我们生成防火墙规则,把生成的规则放在对应的位置上,因为只开放给某个命令,这个命令写得规则会立即送给内核空间中对应的位置上。内核不是不能和应用程序打交道,只是在某种特定的情况下需要调用系统调用。这组组件在linux2.4上叫iptables/netfilter,不同的内核版本上实现的功能也不同,在早期的内核版本上是没有防火墙功能的,而是参考OpenBSO机制移植过来的。netfilter工作在内核空间(可以放规则的位置),iptables工作在用户空间,可以写规则,通过系统调用将规则放置在与它对应的位置上,只有生效以后这个应用程序就没有用处了。
2.4、IP报文的流向:三种,而规则就放在了这三种流向中的某一个当中
从外部到本机内部--》流入
本机内部来报文到外面的--》流出
报文转发