您的位置首页>企业动态>

基于Linux的IPv6复合防火墙的设计

摘要 大家好,我是九游会app的本期栏目编辑小友,现在为大家讲解 基于Linux的IPv6复合防火墙的设计问题。序利用IPv6和ESP对传输的数据进行认证和加

大家好,我是九游会app的本期栏目编辑小友,现在为大家讲解 基于Linux的IPv6复合防火墙的设计问题。

利用IPv6和ESP对传输的数据进行认证和加密,保证了数据的机密性、完整性和可靠性,实现了信息在传输过程中的安全性。然而,IPv6无法保证网络系统本身的安全性和其提供的服务的可用性,也无法防止黑客非法入侵和窃取私有数据。面对IPv6的广泛应用,有必要将其与防火墙结合起来,以保证整个网络系统的安全。

目前,Linux操作系统从2.2内核开始就提供了对IPv6的支持,性能稳定,安全性高。因此,本文研究并设计了一个基于Linux的IPv6防火墙系统。

Linux内核对数据包的过滤处理。

Netfilter框架机制。

Netfilter是linux2.4内核之后的一个抽象的、通用的包过滤功能框架,它提供了一种不同于BSD Socket接口的操作网络包的机制。在netfilter中,为协议栈中的每个协议定义了多个hook,对应协议的数据包会按照一定的规则通过一些hook,每个hook就是一个处理功能挂载点。内核模块可以在每个钩子上注册一个处理函数来操作通过相应钩子的数据包。数据包经过注册函数处理后,按照一定的策略返回内核进一步处理。

IPv6协议定义了五个钩子:

(1)NF_IPv6_PRE_ROUTING:数据包在到达路由之前要经过这个钩子。一般用于防止拒绝服务攻击和NAT。

(2)NF_IPv6_LOCAL_IN:目的地为本地主机的数据包通过此挂钩,可应用于防火墙。

(3)NF_IPv6_FORWARD:目的地不是本地主机的数据包通过此钩子。

(4)NF_IPv6_POST_ROUTING:数据包在离开本地主机之前经过这个钩子,包括源地址为本地主机和非本地主机的数据包。

(5)NF_IPv6_LOCAL_OUT:本地主机发送的数据包经过这个钩子。这个钩子可以应用于防火墙。如图1所示。

1 netfilter框架机制。

数据包从左侧进入系统后,经过IP验证后,由第一钩子NF_IP6_PRE_ROUTING注册功能进行处理,然后进入路由码,决定是否需要转发或发送到本地机器。如果数据包发送到这台机器,数据由钩子NF_IP6_LOCAL_IN注册功能处理,然后传输到上层协议。如果应该转发数据包,则由NF_IP6_FORWARD注册功能处理。转发的数据包在传输到网络之前,由最后一个钩子NF_IP6_POST_ROUTING注册功能处理。本地生成的数据由hook NF_IP6_LOCAL_OUT注册功能处理后路由,再由NF_IP6_POST_ROUTING注册功能处理后发送到网络。每个注册的函数处理完之后,都会返回一个整形常数,内核会根据这个返回值在下一步处理数据包。现在,内核已经定义了以下五个常量:

(1)NF_DROP表示丢弃该数据包,不进入后续处理;

(2)NF_ACCEPT表示接受该数据包,进入下一步处理;

(3)NF _ shipped表示分组异常;

(4)NF_QUEUE指排队到用户空间,等待用户处理;

(5)NF_REPEAT表示再次进入挂钩功能进行处理。

Ip6tables包过滤系统。

目前,基于Netfilter框架的IPv6包选择系统,称为ip6tables,已经在2.4以上的Linux2.4内核中得到应用,允许用户访问内核过滤规则和命令。这种包选择主要用于实现包过滤(过滤表)、网络地址转换(nat表)和包处理(mangle表)。Linux2.4内核提供的三个包处理功能都是基于Netfilter的钩子函数和IP表。它们是独立的模块,但它们完美地集成到了Netfilter提供的框架中。

过滤器不修改数据包,只过滤数据包。它通过钩子函数NF_IP6_LOCAL_IN、NF_IP6_FORWARD和NF_IP6_LOCAL_OUT访问Netfilter框架。NAT表监听三个网络过滤器挂钩函数:

NF_IP6_PRE_ROUTING、NF_IP6_POST_ROUTING和NF_IP6_LOCAL_OUT用于源NAT、目的NAT、伪装(源NAT的特例)和透明代理(目的NAT的特例)。撕裂表注册在NF_IP6_PRE_ROUTING和NF_IP6_LOCAL_OUT钩子中。使用mangle表,您可以修改数据包或将一些额外的数据附加到数据包中。

Ip6tables用户命令基本包含以下五个部分:

(1)您希望在哪个表中工作(筛选器、NAT、mangel);

(2)哪条链(输入、输出、转发等)。)中指定的表,您希望使用;

(3)操作(插入、添加、删除、修改);

(4)针对特定规则的目标操作;

(5)匹配数据包条件。ip6表格的语法是:

# ip6tables [-ttable]命令[match] [target] [-ttable]有三个可用的表选项:filter、nat和mangle。如果未指定此选项,过滤器将用作默认表。过滤表用于一般的数据包过滤,包含输入、输出和转发链。nat表用于转发数据包,它包含PREROUTING、OUTPUT和POSTROUTING链。

预路由链

由指定信息包一到达防火墙就改变它们的规则所组成,而POSTROUTING链由指定正当信息包打算离开防火墙时改变它们的规则所组成。如果信息包及其头内进行了任何更改,则使用mangle表。该表包含一些规则来标记用于高级路由的信息包,该表包含PREROUTING和OUTPUT链。ip6tables的基本操作(command):-A表示在链尾添加一条规则,-I表示插入一条规则,-D表示删除一条规则,-R表示替代一条规则,-L表示列出所有规则。ip6tables基本目标动作(target)(适用于所有的链):ACCEPT表示接收该数据包,DROP表示丢弃该数据包,QUEUE表示排队该数据包到用户空间,RETURN表示返回到前面调用的链,FOOBAR表示用户自定义链。ip6tables基本匹配条件(match)(适用于所有的链):-p表示指定协议,-s表示源地址,-d表示目的地址,-i表示数据包输入接口,-o表示数据包输出接口。例如,识别IPv6的网络服务器上的SSH连接时可以使用以下规则:#ip6tables-AINPUT-ieth0-ptcp-s3ffe:ffff:100::1/128--dport22-jACCEPT当然,还有其他对规则进行操作的命令,如清空链表,设置链缺省策略,添加用户自定义的链等,这里不再详述。INPUT、OUTPUT、FORWARD链是ip6tables内置的过滤链,每条链都可定义若干条过滤规则,构成了基本的ip6tables包过滤防火墙,如图2所示。

123下一页全文
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。