收藏 分享(赏)

NetfilterIptables防火墙技术(张丽).doc

上传人:hskm5268 文档编号:7057512 上传时间:2019-05-04 格式:DOC 页数:6 大小:185.50KB
下载 相关 举报
NetfilterIptables防火墙技术(张丽).doc_第1页
第1页 / 共6页
NetfilterIptables防火墙技术(张丽).doc_第2页
第2页 / 共6页
NetfilterIptables防火墙技术(张丽).doc_第3页
第3页 / 共6页
NetfilterIptables防火墙技术(张丽).doc_第4页
第4页 / 共6页
NetfilterIptables防火墙技术(张丽).doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、Netfilter/Iptables 防火墙技术作者:张丽 单位:江苏省无锡立信职教中心校摘 要:防火墙作为一种网络或系统之间强制实行的访问控制机制,是确保网络安全的重要手段,有基于通用操作系统设计的防火墙,也有基于专用操作系统设计的防火墙。由于 Linux 源代码的开放性,所以,Linux 成为研究防火墙技术的一个很好的平台。本文介绍 Linux 的防火墙技术 Netfilter/Iptables 在 Linux 内核中的具体实现。讨论了 Linux 内核防火墙套件 Netfilter 实现的一些基本技术:包过滤。Linux 下常用的防火墙规则配置软件 Iptables。关键词:防火墙,Ne

2、tfilter,Iptables一、开发背景在网络安全问题日趋严峻的今天,防火墙作为第一道防线起着关键的作用。防火墙可以对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。从而对防火墙的研究成为研究热点。二、防火墙技术1、防火墙概述防火墙是一个或一组实施访问控制策略的系统。它在内部网络(专用网络)与外部网络(功用网络)之间形成一道安全保护屏障,防止非法用户访问内部网络上的资源和非法向外传递内部信息,同时也防止这类非法和

3、恶意的网络行为导致内部网络运行遭到破坏。它基本功能是过滤并可能阻挡本地网络或者网络的某个部分与 Internet 之间的数据传送(数据包) 。防火墙结构可以采用双宿主主机结构、主机过滤结构、子网过滤等多种结构。目前防火墙主要运用的新技术包括透明网关技术、多级过滤技术、网络地址转换技术、Internet 网关技术、安全服务器网络技术等。2、包过滤技术包过滤技术是防火墙的一种最基本的实现技术,具有包过滤技术的装置是用来控制内、外网络间数据流的流入和流出,包过滤技术中的数据包大部分是基于 TCP/IP 协议平台的,其中包括网络层的 IP 数据包,运输层的 TCP 和 UDP数据包以及应用层的 FTP

4、、Telnet 和 HTTP 等应用协议数据包三部分内容。在每一个数据包中有包含特定信息的报头,主要有 IP 源地址、IP 目标地址、协议、TCP 或 UDP 源端口、 TCP 或 UDP 目标端口及 ICMP 消息类型。另外在路由器中还有一些数据报头中不含有的有关信息,如数据包到达及送出端口等。三、Netfilter/Iptables1、Netfilter 在 IP 协议栈中的总体框架Netfilter 是 Linux 2.4.x 以后的内核中用于包处理的抽象、通用化的框架,它为 IPv4、IPv6、Appletalk 等可以多达 32 种的网络协议定义了一套 hook,这些 hook 在数

5、据报流过协议栈的几个关键点被调用,如 IPv4 协议栈为了实现对 Netfilter 架构的支持,IP PACKET 在 IPv4 协议栈上的游历路线之中,仔细选择了五个参考点。在这五个参考点上,各引入了一行对 NF_HOOK() 宏函数的一个相应的调用。这个宏函数定义如下:#define NF_HOOK(pf,hook,skb,indev,outdev,okfn)(list_empty( nf_hookfn *hook;int pf; int hooknum;int priority; /*hooks are ordered in ascending priority.*/ ;其中 list

6、_head 定义为struct list_headstruct list_head next,prev; ;struct nf_hook_ops 结构是如何和 struct list_head 结构产生关系,从而构成双向链表,实现将函数下挂到钩子的过程呢?在 NetFilter 中,是通过注册函数nf_register_hook 把这些函数挂到链表头上(即挂到钩子下) ,相反用nf_unregister_hook 来注销钩子函数。 处理函数既然已经挂在钩子下面,那么这些函数是怎样发挥作用的,是通过怎样一种机制被调用来处理 IP 包的呢?以第一个钩子点为例,在函数 IP_rcv中,收到一个正确的

7、 IP 包后,调用了 NF_HOOK(Nf_HOOK 从形式上可以看是一个函数,实际上是一个宏),从而将控制转到了钩子 nf_IP_pre_routing(从Nf_HOOK 的参数可以看出)的下挂函数里。2、Iptables 防火墙规则配置管理工具Netfilter 框架在内核中主要负责 PACKET 的获得和重新注入,而对PACKET 的匹配预处理主要由规则表来完成。用户对防火墙的配置主要是指对规则表的操作,而 Iptables 就是设置 Netfilter 规则的配置工具。在 Linux 内核中 Iptables 用 struct ipt_table 表示,但实际描述表的数据结构是 ip_

8、table_info。关于规则的描述用 struct ipt_entry 表示,其中包含匹配用的 ip头部分、一个 target 和多个 match。由于 match 数不定,所以一条规则实际占用的空间是可变的。当我们用 Iptables 命令配置工具配置一条规则后,Iptables 应用程序会运用iptables-standalone.c:main():do_command(),然后再调用 libiptc 库提供的iptc_commit()函数向核心提交该操作请求。该函数根据请求会设置一个 struct ipt_replace 结构,用来描述规则所涉及的表和 HOOK 点等信息,并在其后附接

9、当前这条规则(一个 struct ipt_entry 结构) 。从而将命令行输入转换为程序可读的格式。组织好这些数据后,iptc_commit() 调用 setsockopt()系统调用来启动核心处理这一请求:setsockopt( sockfd, /通过 socket 创建的原始套接字,TC_IPPROTO, /即 IPPROTO_IPSO_SET_REPLACE, /即 IPT_SO_SET_REPLACErepl, /struct ipt_replace 结构sizeof(*repl) + (*handle)-entries.size )这样核外程序只要通过创建一个“原始套接字”获得访问

10、 Netfilter 的句柄,然后通过 getsockopt 和 setsockopt 系统调用来读取、更改 Netfilter 设置。而Iptables 是一个内建在 Netfilter 框架中的模块,从而用户可以读写内核过滤规则。每一个希望使用 Netfilter 挂钩的表都需要将表处理函数在 nf_hooks 数组的相应链表上运用 nf_register_hook 函数进行注册,把各个 nf_hook_ops 结构连入链表中,在这个结构中针对表以及 hook 点的不同设计有不同的处理函数。四、总结Netfilter/Iptables 的包过滤架构是 Linux 内核开发人员通过对Ipfw

11、adm/Ipchains 等早期的包过滤程序的开发经验和全世界用户反馈的分析,重新设计,改造而形成的相对成熟的 Linux 内核包过滤框架。同时,由于公开源代码,全世界的网络开发人员针对各自的需要和网络出现的新情况,在义务的开发着对应的模块,这极大的丰富了 Iptables 功能。采用 Netfilter/Iptables 设计的网络防火墙,完全可以媲美专业的网络防火墙,更重要的是,他的成本几乎为零。对信息安全,尤其是网络安全的重视,使得防火墙成为一个热门话题。多数防火墙产品都比较“贵族化” ,价格昂贵。使用免费的、源代码开放的 Linux网络操作系统来设计自己的防火墙是比较明智的选择。参考文献1 博嘉科技主编 Linux 防火墙技术探秘国防工业出版社,2002 2 张斌等编 Linux 网络编程清华大学出版社,20003 孙建华等编著 网络系统管理-Linux 实训篇人民邮电出版社,20034 W. Richard Stevens 著TCP/IP 详解卷 1:协议机械工业出版社,20065 鸟哥编著 LINUX 私房菜服务器架设篇科学出版社,2005

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报