防火墙-网络防火墙

防火墙(Firewall)

隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时定义的行为进行处理的一组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允许访问的策略。

防火墙的分类(Classify)

主机防火墙:服务范围为当前主机

网络防火墙:服务范围为防火墙一侧的局域网

硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一 个部分功能基于软件实现,Checkpoint,NetScreen

软件防火墙:运行于通用硬件平台之上的防火墙的应用软件

网络层防火墙:OSI下面第三层 应用层防火墙/代理服务器:代理网关,OSI七层

网络防火墙(Network Firewall)

又名包过滤防火墙,网络层(OSI模型第三层)对数据包进行选择,选择的依据是系统内置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用的端口协议状态等因素,或他们的组合来确定是否允许该数据包通过。

网络防火墙的优缺点

优点:对用户来说是透明的,处理速度快且易于维护

缺点:无法检查应用层数据,如病毒等

Netfilter/iptables(防火墙框架)

Iptables是一个命令行工具(位于用户空间),操作位于系统内核的防火墙工具Netfilter,netfilter/iptables(下文中简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案, 完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

Netfilter组件

内核空间,集成在linux内核中。扩展各种网络服务的结构化底层框架。

内核中选取五个位置放了五个hook(勾子) function(INPUT、 OUTPUT、FORWARD、PREROUTING、POSTROUTING), 而这五个hook function向用户开放,用户可以通过一个命令工 具(iptables)向其写入规则。

由信息过滤表(table)组成,包含控制IP包处理的规则集( rules),规则被分组放在链(chain)上。

报文流向:

三种报文流向

流入本机:PREROUTING --> INPUT-->用户空间进程

流出本机:用户空间进程 -->OUTPUT--> POSTROUTING

转发:PREROUTING --> FORWARD --> POSTROUTING

Iptables

命令行工具,工作在用户空间。

用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包 firewalld。

CentOS 7引入了新的前端管理工具:

firewall-cmd 命令行

firewall-config 图形

Iptables组成

iptables:四个表和五个链以及一些规则组成。

四个表table:filter、nat、mangle、raw。

五个内置链chain:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。

filter表:过滤规则表,根据预定义的规则过滤符合条件的数据包

nat表:network address translation 地址转换规则表

mangle:修改数据标记位规则表

Raw:关闭NAT表上启用的连接跟踪机制,加快封包穿越防火墙速度

优先级由高到低的顺序为:raw-->mangle-->nat-->filter

表、链对应关系

raw表中的规则可以被哪些链使用:PREROUTING,OUTPUT

mangle表中的规则可以被哪些链使用:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

nat表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)

filter表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPUT

PREROUTING的规则可以存在于:raw表,mangle表,nat表。

INPUT的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有)。

FORWARD的规则可以存在于:mangle表,filter表。

OUTPUT 的规则可以存在于:raw表mangle表,nat表,filter表。

POSTROUTING的规则可以存在于:mangle表,nat表。

iptables规则

规则rule:根据规则的匹配条件尝试匹配报文,对匹配成功的报文根据规则定义的处理动作作出处理

匹配条件:默认为与条件,同时满足基本匹配:IP,端口,TCP的Flags(SYN,ACK等)

扩展匹配:通过复杂高级功能匹配

处理动作:称为target,跳转目标内建处理动作:ACCEPT,DROP,REJECT,SNAT,DNAT MASQUERADE,MARK,LOG...

自定义处理动作:自定义chain,利用分类管理复杂情形。

规则要添加在链上,才生效;添加在自定义上不会自动生效。

链chain:

内置链:每个内置链对应于一个钩子函数

自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有Hook钩子调用自定义链时,才生效

内核数据包的传输过程(Transmitting Procedure)

当一个数据包进入网卡时,数据包首先进入PREROUTING链, 内核根据数据包目的IP判断是否需要转送出去。

如果数据包就是进入本机的,数据包就会沿着图向下移动,到达 INPUT链。数据包到达INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT链 ,然后到达POSTROUTING链输出。

如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

By WigginsLIu

欢迎关注WigginsLiu

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180312G0JW4000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券