APP下载

Linux下的防火墙技术研究

2020-12-25

中国新技术新产品 2020年19期
关键词:本机流程图防火墙

王 莉

(南京信息职业技术学院,江苏 南京 210023)

0 引言

网络安全除了关注网络上的软件漏洞和安全通报之外,最好能根据环境的需要,设置符合自身要求的防火墙机制。防火墙就是可以对流进流出网络的数据包进行分析和过滤一种安全机制,而在Linux系统中本身就提供了Netfilter防火墙功能,该功能分析进入网络的数据包,将数据包的头部数据提取出来,以决定该连接为放行或者抵挡,该方式可以直接分析数据包头部数据,包括硬件地址(MAC)、软件地址(IP)、TCP、UDP以及ICMP等数据包信息,因此用途非常广泛[1]。 Linux下的Netfilter软件iptabls

PTABLES软件是Linux内部集成的信息包过滤系统,是Linux内核中的一个通用框架,该框架定义了数据包过滤子系统的系统功能,提供了filter、NAT和Mangle这3个表,默认使用的是filter表。每个表中包括若干条内建的链(Chains),用户也可在表中创建自定义链。在每条链中,可定义一条或多条过滤规则(Rules),即链是规则的一个列表。每条规则应指定所要检查的包的特征以及如何处理与之匹配的包的关系,这种处理被称为目标(Target)。目标值可以是用户自定义的一个链名,可以根据该链的名字跳转到同一个表内的链里,以便对该链内的规则进行检查,目标还可以是ACCEPT、DROP、REJECT等。

1 Iptables的表格和链

1.1 Filter表

Filter表主要跟进入Linux本机的数据包有关,是Iptables中默认存在的表之一。该表内建有3个链。1)INPUT用于处理目标地址是本机的数据包。2)FORWARD用于处理要通过或转发的数据包,即目标地址不是本机的数据包。3)OUTPUT用于处理本地进程生成的要外发的数据包[2]。当一个数据包从网卡进入防火墙时,内核首先根据路由表决定数据包的目标,根据数据包的目的地址来决定数据包将送往哪一条链进行规则匹配。Filter表中数据包具体的处理流程如下。

发现到达防火墙的数据包的目的地址是本机,则将数据包发送给INPUT链进行处理。当发现数据包的目的地址不是本机,则会检查内核设置是否允许数据包的转发,如果允许,则将数据包交给FORWARD链进行处理,如果不允许转发,数据包就会被丢弃。如果到达防火墙的数据包是由内部网络的进程产生的,则会交给OUTPUT链进行处理。

1.2 NAT表

NAT的全名是Network Address Translation,即网络地址转换,私有地址可以在不同的企业网内部重复使用,虽说现在使用IPV6技术,缓解了IP地址短缺的问题,但IPV4私有地址的使用方便管理,企业内部仍然需要,但使用私有地址的主机不能访问互联网。利用NAT,可以实现私有地址与公有地址的互相转换。

NAT表内建有PREROUTING、POSTROUTING、OUTPUT3个链。

1.2.1 PREROUTING

PREROUTING这个链在Filter表的最前面,当一个数据包来到Linux的网络接口时,首先通过mangle的PREROUTING,然后再通过NAT的PREROUTING,而这条链是数据包在经过路由之前就要过滤的。

1.2.2 POSTROUTING

该链是在路由判断之后,如果我们使用ACCEPT放过了这个包,它将进入POSTROUTING部分,如果是转发的话,应该要再次进行路由选择然后将其送出,此时Linux系统已经为该数据包选择好路由,并找到合适的接口送出该数据包。

在该链里要进行一个非常重要的动作称为SNAT,即修改源IP地址。

1.2.3 OUTPUT

对本地进程产生并准备发出的数据包由OUTPUT链进行检查处理,可以在该链进行DNAT操作,即修改目的IP地址[3]。NAT表中封包的处理流程如图1所示。

2 Linux下防火墙设置实例

在实际的网络环境中,Linux服务器主机连接着内部网络,Linux主机也是内网的路由器,担任着简单的IP路由功能,外部网络使用eth0,内部网络使用eth1,且内部使用192.168.100.0/24这个网段,主机默认开发的服务有WWW、SSH、HTTPS等。

根据该网络的环境及组网要求,由于希望将信任网络(内网)与不信任网络(外网)完全分开,最重要的防火墙的策略是关闭所有的连接,仅开放特定服务模式。可以设置防火墙策略为:INPUT链为DROP、OUTPUT链及FORWARD链为ACCEPT。具体防火墙流程图如图2所示。

图1 NAT数据包处理流程图

根据防火墙的流程图设置,可以为该网络环境提供网络防护,具体的操作可以通过Shell Script来实现。将Script拆成3个部分来实现。1)iptables.rule:在该文件中设置防火墙最基本的规则,包括清除规则、模块的加载以及服务的许可。

主要设置项为设置相关参数,例如网卡接口、网段说明以及进出网络的接口等信息。设置内核网络功能,加载一些有用的模块。清除规则、设置默认策略及开放lo与相关的设置值。启动额外的防火墙Script模块,允许某些类型的ICMP数据包进入,允许某些服务进入,依照自己的环境开启。2)iptables.deny:该文件里设置阻挡进入内网的恶意主机。主要设置项是填写允许进入本机的其他网络或主机。3)iptables.allow:设置某些特殊的可以进入内网的主机。主要设置项是填写需要阻挡的内容。

图2 防火墙设置流程图

根据防火墙的设置语法规则,在以上3个文件中设置好脚本,最后将这些功能存储下来,并将文件的权限设置为700,这样文件只属于Root的权限,就可以直接执行iptables.rule文件了。如果希望开机自动执行该文件,可以将这个文件写入/etc/rc.d/rc.local中。

3 结语

该文介绍了Linux系统内的防火墙机制Netfilter,研究了Iptables防火墙的工作流程,重点介绍了Iptales防火墙中的filter表和NAT表,剖析了这2个表的工作机制,并将其应用到实际的工作环境中,提供给网络环境安全防护,有一定的实用价值。

猜你喜欢

本机流程图防火墙
基于ADS-B的防撞检测算法研究
飞机相遇模型仿真技术研究
不再烦人隐藏Windows 10的更新
构建防控金融风险“防火墙”
专利申请审批流程图
专利申请审批流程图
在舌尖上筑牢抵御“僵尸肉”的防火墙
宁海县村级权力清单36条
下一代防火墙要做的十件事
FreeBSD关机重启命令