一个基于 shell script 的网络层防火墙设计与实现

摘  要   提出了一种基于 Linux 内建的 Netfilter/ Iptables 标准框架设计网络层防火墙的思路, 分析了关键技术, 给出了一个非常接近实际应用的基于 shell 脚本的企业安全网关解决方案 此网关对信任区域网络提供了基本安全防护, 并且通过地址伪装和目标网络地址转换技术, 定制和实现了企业内外网之间的互通互访。

 

目前 Linux 内核使用标准 Netfilter/ Iptables 框架实现网络层防火墙的基本功能。该框架由两个子系统组成:内核模块和用户接口应用程序。内核模块对Netfilter 规则表进行管理, 通过添加删除链中的规则, 完成对输入、输出和转发数据包的过滤修改等操作;用户接口程序负责接收用户命令, 并且将用户命令添加到内核中。Netfilter 预设了五条规则链—PRE RO UTING 、INPUT 、FOR- WA RD 、O UTPU T 、PO ST ROUT ING, 利用其组合

能实现三种典型应用, 正对应于Iptables 内建的三个规则表—包过滤表 fil ter 、网络地址转换表 nat 、用于修改分组数据特定规则的表 mangle[ 2 3] 。下图简单说明了各表及其所含链的关系与用途

图 1 Iptables 的预设表与链

 

由于与特殊标识高度相关, 所以比较单纯的网络环境中较少使用m ang le 在忽略 m ang le 的情况下, 各个预设表与链的关系就可以简单地使用图来表示可以看出, 经路由判断, Iptables 以控制两种数据包流向 :1 ) 如果数据包的目标

地址为防火墙本机, 则进入该防火墙后会经过 fil- ter 表的 IN PU T 链的检查, 而数据包离开之前还要经过 filt er 表的OU TPUT 链的检查。如图 2 中的路线A ;2)  如果数据包要穿越防火墙继而进入其后端网络, 则依次经过 nat 表的PREROU TING 链、f ilter 表的 FORWARD 链以及 nat 表的 POS-

 

TROU TING 链。如图 2 中的路线B 。

 

 

 

图 2 表与链的默认关系简图

 

Iptables 防火墙高效工作在OSI 模型的网络层, 它根据IP 包头的分析资料, 比对预先定义的规则内容, 来决定该数据包是否可以进入主机或者是被丢弃。若两者相同则执行规定的动作, 否则就继续下一条规则的比对, 其分析流程如图 3 所示, 关键在于进行比对与分析的顺序[ 4] 。由若干规则按先后顺序组成一条规则链。规则会被依序应用到每个遍历该链的数据包上。每个规则链都有其特定的用途, 并且都设置了一个预设策略( ACCEPT 或DROP) 。

 

图 3 包过滤的工作流程

 

 

 

 

 

 

 

 

 

posted @ 2020-02-24 21:25  清风已来  阅读(261)  评论(0编辑  收藏  举报