毕业设计(论文)-基于Linux的防火墙设计与实现_第1页
毕业设计(论文)-基于Linux的防火墙设计与实现_第2页
毕业设计(论文)-基于Linux的防火墙设计与实现_第3页
毕业设计(论文)-基于Linux的防火墙设计与实现_第4页
毕业设计(论文)-基于Linux的防火墙设计与实现_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南京广播电视大学毕业设计说明书 1 南京广播电视大学南京广播电视大学 毕业设计说明书毕业设计说明书 题目题目: 基于基于 Linux 的防火墙设计与实的防火墙设计与实 现现 姓姓 名:名: 学学 号:号: 年年 级:级:20082008 年春年春 专专 业:业:计算机网络计算机网络 学生类别:学生类别:开放专科开放专科 指导教师:指导教师: 教学单位:教学单位:南京电大工业技工分校南京电大工业技工分校 20092009年年 5 5月月 6 6 日日 南京广播电视大学 南京广播电视大学毕业设计说明书 2 毕业设计(论文,作业)课题审批表 教学单位(盖章)专业 计算机 网络 学生类别开放大专 课题名称基于 Linux 的防火墙设计与实现 填报 时间 2009 年 3 月 8 日 课 题 内 容 简 介 目的意义:目的意义: 防火墙在网络安全中起着重要作用。但是,目前传统的边界防火 墙暴露出越来越多的缺陷,无法适应新的网络应用。基于 Linux 的防 火墙是对传统防火墙的改进。 解决问题:解决问题: 能够对主机提供安全保护,即对主机与局域网以外的主机进行数 据传输时实施安全保护,能够提供良好的人机接口界面,具有容易操 作、容易管理的优点。 使用方法:使用方法: 全程动态包过滤 本防火墙要在 Linux 下实现全程动态包过滤功能, 通过分析数据包的地址、协议、端口对任何网络连接当前状态进行访 问控制,从而提高系统的性能和安全性。提供日志审计 本防火墙配备 了日志记录系统和查询工具,用于记录系统管理、系统访问及针对安 全策略的网络访问情况。防火墙数据库的备份 本防火墙制作防火墙过 滤数据库,并且管理员可以能动地对该数据库进行设置。 课题结论:课题结论: 课题结论:基于 Linux 的防火墙实施在各个网络端点上,克服了 传统防火墙的缺陷,有效保护了主机,适应了新的网络应用的需要。 我们构建了一个可运行的范例展示了分布式防火墙的可行性。其健壮 性、有效性和可扩展性还需要作进一步的试验进行评估、测定。 指导教师姓名张迁参加学生姓名朱真珠 指导 教师 意见 市校 审核 意见审核部门盖章: 年 月 日 南京广播电视大学毕业设计说明书 3 基于 Linux 的防火墙设计与实现 (南京广播电视大学 计算机网络专业 姓名 朱真珠 学号 087530503) 【内容摘要】: 防火墙是网络安全研究的一个重要内容,数据 包捕获是包过滤型防火墙的前提,本文对基于 linux 主机的个人防 火墙的数据包捕获模块进行了研究,重点论述数据包捕获模块的结构、 组成以及功能。首先对信息安全及防火墙的重要性进行论述,并给 出防火墙的详细分类;然后分析了基于 linux 主机的个人防火墙总 体设计及软硬件平台原理,接着论述 linux 下的数据包捕获模块结 构与原理,并详述其具体实现步骤 关键词 防火墙 linux 数据包捕获模块 包过滤 南京广播电视大学毕业设计说明书 4 目录 绪绪 论论1 第一章第一章 LINULINUX X 系统系统.1 1.1 LINUX系统简介.1 1.2 LINUX的特点.2 第二章第二章 防火墙简介防火墙简介4 2.1 传统防火墙及其缺陷 4 2.2 分布式防火墙 4 第三章第三章 LINUXLINUX 防火墙的几种常见功能防火墙的几种常见功能.5 3.1.1 包过滤包过滤5 3. .2 代理6 3. .3 IPIP 伪装.7 3. .4 一个 LINUX 防火墙实例8 第四章第四章 防火墙系统防火墙系统11 4.1 防火墙系统总体设计 11 第五章第五章 基于基于 LINUXLINUX 的数据包捕获模块的数据包捕获模块11 5.1 基于LINUX的数据包捕获模块结构.11 5.2 基于LINUX的数据包捕获模块原理分析.12 第六章第六章 数据包捕获模块设计数据包捕获模块设计13 6.1 数据包捕获模块设计流程 13 6.2 数据包捕获模块实现 14 第七章第七章 程序中用到的结构体程序中用到的结构体15 7.1 程序中用到的一些结构体解析 15 致辞:致辞:17 参考文献参考文献: :18 南京广播电视大学毕业设计说明书 1 绪 论 网络防火墙技术是一种用来加强网络之间访问控制,防止外部网络用户以 非法手段通过外部网络进入内部网络,访问内部网络资源,保护内部网络操作 环境的特殊网络互联设备。它对两个或多个网络之间传输的数据包按照一定的 安全策略来实施检查,以决定网络之间的通信是否被允许,并监视网络运行状 态。 根据防火墙所采用的技术不同,可以将它分为四种基本类型:包过滤型、 网络地址转换nat、代理型和监测型。包过滤型产品是防火墙的初级产品,其 技术依据是网络中的分包传输技术。包过滤技术的优点是简单实用,实现成本 较低,在应用环境比较简单的情况下,能够以较小的代价在一定程度上保证系 统的安全络地址转换是一种用于把 ip 地址转换成临时的、外部的、注册的 ip 地址标准。它允许具有私有 ip 地址的内部网络访问因特网。 代理型防火墙也 可以被称为代理服务器,它的安全性要高于包过滤型产品,并已经开始向应用 层发展。代理型防火墙的优点是安全性较高,可以针对应用层进行侦测和扫描, 对付基于应用层的侵入和病毒都十分有效。其缺点是对系统的整体性能有较大 的影响,而且代理服务器必须针对客户机可能产生的所有应用类型逐一进行设 置,大大增加了系统管理的复杂性。 监测型防火墙是新一代的产品,能够对各 层的数据进行主动的、实时的监测,在对这些数据加以分析的基础上,监测型 防火墙能够有效地判断出各层中的非法侵入。同时,这种检测型防火墙产品一般 还带有分布式探测器,这些探测器安置在各种应用服务器和其他网络的节点之 中,不仅能够检测来自网络外部的攻击,同时对来自内部的恶意破坏也有极强 的防范作用。监测型防火墙在安全性上已超越了包过滤型和代理服务器型防火 墙,但其实现成本较高。基于对系统成本与安全技术成本的综合考虑,用户可 以选择性地使用某些监测型技术。 第一章 Linux 系统 1.1 Linux 系统简介 Linux 是一套免费使用和自由传播的类 Unix 操作系统。我们通常所说的 Linux,指的是 GNU/Linux ,即采用 Linux 内核的 GNU 操作系统。GNU 代表 GNUs Not Unix。它既是一个操作系统,也是一种规范。Linux 最早由 Linus 南京广播电视大学毕业设计说明书 2 Torvalds 在 1991 年开始编写。在这之前,Richard Stallman 创建了 Free Software Foundation(FSF)组织以及 GNU 项目,并不断的编写创建 GNU 程序(程序的 许可方式均为 GPL:General Public License) 。在不断的有程序员和开发者加入 到 GNU 组织中后,变造就了今天我们所看到的 Linux! Linux 是一个内核。然而一个完整的操作系统不仅仅是内核而已。所以许 多个人、组织和企业开发了基于 GNU/Linux 的 Linux 发行版。今天有不计其数 的发行版可供人们选择使用,虽然不够统一的标准给不同版本的使用者在技术 上的相互沟通带来了一定的麻烦,但归根结底“自由、开源、团结互助”的理念 是 Linux 爱好者们共同的向往。 1.2 Linux 的特点 有很多人现在都在学习和研究 Linux。作为当今一种新兴和流行的操作系统 的前身来源与强大的 UNIX。而那个芬兰小伙子一开始就没把它定位成一种操作 系统。但是 Linux 的作用在今天已越来越重要了。想接触和学习它,就要先了 解它的特点。让我们一起来了解一下吧: 1.自由开源软件 首先,Linux 可以说是作为开放源码的自由软件的代表,作为自由软件,它 有如下两个特点:一是它开放源码并对外免费提供,二是爱好者可以按照自己 的需要自由修改、复制和发布程序的源码,并公布在 Internet 上,因此 Linux 操作系统可以从互联网上很方便地免费下载得到,这样你还可以省下购买 Windows 操作系统的一笔不小的资金。且由于可以得到 Linux 的源码,所以操 作系统的内部逻辑可见,这样就可以准确地查明故障原因,及时采取相应对策。 在必要的情况下,用户可以及时地为 Linux 打 “补丁”,这是其它操作系统所没 有的优势。同时,这也使得用户容易根据操作系统的特点构建安全保障系统, 不用担心来自那些不公开源码的 “黑盒子”式的系统预留的什么 “后门”的意外的 打击。而且,Linux 上跑的绝大多数应用程序也是免费可得的,用了 Linux 就再 也不用担心背上“使用盗版软件”的黑锅了。 2.真正的多任务多用户 只有很少的操作系统能提供真正的多任务能力,尽管许多操作系统声明支 持多任务,但并不完全准确,如 Windows。而 Linux 则充分利用了 X86CPU 的 南京广播电视大学毕业设计说明书 3 任务切换机制,实现了真正多任务、多用户环境,允许多个用户同时执行不同 的程序,并且可以给紧急任务以较高的优先级。 3.价格优势 价格其实是影响产品的重要因素,作为开源软件,它的价格优势不言而 喻。 4.多平台 支持各种 CPU,包括 Intel,AMD,ARM,Mips 等。 5.强大的网络功能 实际上,Linux 就是依靠互联网才迅速发展了起来,Linux 具有强大的网 络功能也是自然而然的事情。它可以轻松地与 TCP/IP、LANManager、Windows for Workgroups、Novell Netware 或 Windows NT 网络集成在一起,还可以通过以太网或调制解调器连接到 Internet 上。 Linux 不仅能够作为网络工作站使用,更可以胜任各类服务器,如 X 应用 服务器、文件服务器、打印服务器、邮件服务器、新闻服务器等等。 6.兼容性高 Linux 对系统兼容性较高,对硬件要求不是很高。支持很多软硬件平台。 7.开发功能强 Linux 支持一系列的 UNIX 开发,它是一个完整的 UNIX 开发平台,几乎 所有的主流程序设计语言都已移植到 Linux 上并可免费得到,如 C、C+、Fortran77、ADA、PASCAL、Modual2 和 3、Tcl/TkScheme、SmallTalk/X 等。 8.具有丰富的图形用户界面 Linux 的图形用户界面是 Xwindow 系统。如 GNOME、KDE。还有 SHELL。Xwindow 可以做 MSWindows 下的所有事情,而且更有趣、更丰富, 用户甚至可以在几种不同风格的窗口之间来回切换。另外它还支持很多的应用 软件,这也是它的一大特性。 南京广播电视大学毕业设计说明书 4 9.可爱的“代言物” 下次大家看到可爱企鹅造型的时候,不只是要联想到 QQ。其实 Linux 也是 的哦。 10.安全性和稳定性 这点不用多说,Linux 的较高安全性和良好的稳定性能是它的一大特色。 第二章 防火墙简介 2.1 传统防火墙及其缺陷 防火墙是指设置在不同网络或网络安全域之间,根据一定的安全策略对网 络间的通信实施访问控制的一系列部件的组合。 传统意义上的防火墙就是指边界防火墙,它将网络分为内网和外网两部分。 它是网络间信息传输的唯一出入口,能够根据安全策略控制(允许、拒绝、监 测)出入网络的信息流,且本身具有较强的抗攻击能力。它是提供信息安全服 务、实现网络和信息安全的重要的、基本的安全装置。在逻辑上,防火墙是一 个分离器,一个限制器,也是一个分析器,有效地监控了内部网和 Internet 之间 的任何活动,保证了内部网络的安全。 传统防火墙依赖于网络的拓扑限制,它假定内网上的所有主机都是可信任 的,而外网上的所有主机都是不可信的。当网络遵照拓扑限制时,这种模型工 作得很好;但是,随着网络连接的扩充和新的网络应用的发展,这种模型暴露 出了越来越多的缺陷,面临着极大的挑战。主要表现在: 1)对绕过防火墙的攻击无能为力;如果防火墙的规则设置不当,内网上的所 有主机将暴露在外部攻击的直接威胁之下。 2)由于信任内网上的所有主机,而对来自网络内部的恶意攻击、未授权访问 或无意的误操作“视而不见”。 3)是潜在的通信瓶颈和单一故障点。 4)与端到端加密(如 VPN)有冲突。 5)由于依赖于网络拓扑,无法支持移动计算。 南京广播电视大学毕业设计说明书 5 为了克服上述缺陷,产生了“分布式防火墙”( Distributed Firewall )的概念。 2.2 分布式防火墙 多台基于主机但受集中管理和配置的防火墙组成了分布式防火墙。在分布 式防火墙中,安全策略仍然被集中定义,但是在每一个单独的网络端点(例如 主机、路由器)上实施。 分布式防火墙中含有三个必需的组件: (1) 描述安全策略的语言。 (2) 安全地发布策略的机制。 (3) 应用、实施策略的机制。 安全策略语言规定了哪些通信被允许,哪些通信被禁止,它应该支持多种 类型的应用,还应支持权利委派和身份鉴别。策略制定后被发布到网络端点上。 策略发布机制应该保证策略在传输过程中的完整性和真实性。策略发布有多种 方式,可以直接“推”到终端系统上,可以由终端按需获取,也可以以证书的形 式提供给用户。策略实施机制位于要保护的主机上,在处理出入的通信之前, 它查询本地策略再做出允许或禁止的决定。 分布式防火墙克服了传统防火墙的缺陷,它的优势在于: (1) 在网络内部增加了另一层安全。 (2) 有效抵御来自内部的攻击。 (3) 消除网络边界上的通信瓶颈和单一故障点。 (4) 支持基于加密和认证的网络应用。 (5) 与拓扑无关,支持移动计算。 第三章 LINUXLINUX 防火墙的几种常见功能 由于每一个用户的要求和所处的环境都不一样,LINUX 防火墙会根据用的 设置实现各种不同的功能。但一般说来,以下三种功能是大多数用户最常用到 的。 3.1.1 包过滤包过滤 对数据包进行过滤可以说是任何防火墙所具备的最基本的功能,而 LINUX 防火墙本身从某个角度也可以说是一种“包过滤防火墙”。在 LINUX 防火墙中, 南京广播电视大学毕业设计说明书 6 操作系统内核对到来的每一个数据包进行检查,从它们的包头中提取出所需要 的信息,如源 IP 地址、目的 IP 地址、源端口号、目的端口号等,再与已建立 的防火规则逐条进行比较,并执行所匹配规则的策略,或执行默认策略,这个 过程在图 1 中已经形象的表现出来。值得注意的是,在制定防火墙过滤规则时 通常有两个基本的策略方法可供选择:一个是默认允许一切,即在接受所有数 据包的基础上明确地禁止那些特殊的、不希望收到的数据包;还有一个策略就 是默认禁止一切,即首先禁止所有的数据包通过,然后再根据所希望提供的服 务去一项项允许需要的数据包通过。一般说来,前者使启动和运行防火墙变得 更加容易,但却更容易为自己留下安全隐患。通过在防火墙外部接口处对进来 的数据包进行过滤,可以有效地阻止绝大多数有意或无意地网络攻击,同时, 对发出的数据包进行限制,可以明确地指定内部网中哪些主机可以访问互联网, 哪些主机只能享用哪些服务或登陆哪些站点,从而实现对内部主机的管理。可 以说,在对一些小型内部局域网进行安全保护和网络管理时,包过滤确实是一 种简单而有效的手段。 3. .2 代理 LINUX 防火墙的代理功能是通过安装相应的代理软件实现的。它使那些不 具备公共 IP 的内部主机也能访问互联网,并且很好地屏蔽了内部网,从而有效 保障了内部主机的安全。为了清楚地描述这一重要功能的实现过程,特假设以 下典型情况:steven 为内部网中一台 IP 是 的主机,其上安装 有 IE5.0 浏览器,并配置为使用防火墙主机 :8080 作为代理。 firewall 就是我们讨论的 LINUX 防火墙,有两个网络接口,分别是内部接口 eth1=、外部接口 eth0=。在 firewall 主机上 安装有 Web 代理软件“squid”,并配置其代理端口为 8080。 为 263 网站的 Web 服务器,IP 为 31,Web 服务端口 80。 如果要从 steven 主机访问 263 的主页,其具体的通信过程所示: (1) IE 通过 steven 的非专用端口 1110 (在 102465535 之间随机 生) 与防火墙的代理 (2) 端口 8080 建立连接,请求“ ”页面。 (3) squid 代理接收到请求后,先查找域名“ ”,得到地址 南京广播电视大学毕业设计说明书 7 31(该 (4) 步骤图中省略),然后通过防火墙端口 1050 与该地址的 80 端口建立一 个连接,请求页面。 (5) 服务器接到请求后将页面传给 squid 代理。防火墙代理 得到页面后,把数据复制到第一步中所建立的连接上,IE 得到数据并将 “ ”页面显示出来。 (6) 通过以上描述,可以清楚地了解到内部主机、LINUX 代理防火墙以及 外部服务器之间是如何进行数据传输的。 steven 主机发来的数据包经由内部接口 eth1 进来后,首先接受 INPUT 链的“检查”:系统内核从包头中提取出信息,与 INPUT 链中所有适用于 eth1 接口的过滤规则逐个比较,直到匹配通过。之后,该数据包被转发给本地的代 理进程。同样,代理进程发送给远程 Web 服务器的数据包在从防火墙外部接 口发送出去之前,也要经过 OUTPUT 链的“检查”,即与 OUTPUT 链中所有适 用于 eth0 接口的规则一一比较。返回的过程正好与上述相反,在此就不再赘 述。 为了实现以上过程,我们必须在防火墙规则脚本中添加以下规则: ipchains A input i eth1 p tcp s 1110 d 8080 j ACCEPT ipchains A output i eth0 p tcp s 1050d 31 80 j ACCEPT ipchains A input i eth0 p tcp !-y s 31 80d 1050 j ACCEPT ipchains A output i eth1 p tcp ! y s 8080d 1110 j ACCEPT 从上文对代理功能的原理和实现的叙述中,我们可以看出,LINUX 防火墙 实际上扮演了一个“代理网关”的角色。内部主机和远程服务器分别都只与防火 墙进行连接,而真正的“起点”和“终点”之间却毫无联系。 3. .3 IPIP 伪装 IP 伪装(IP Masquerade)是 LINUX 操作系统自带的又一个重要功能。 南京广播电视大学毕业设计说明书 8 通过在系统内核增添相应的伪装模块,内核可以自动地对经过的数据包进行“伪 装”,即修改包头中的源目的 IP 信息,以使外部主机误认为该包是由防火墙主 机发出来的。这样做,可以有效解决使用内部保留 IP 的主机不能访问互联网的 问题,同时屏蔽了内部局域网。这一点,与前面所讲的代理所达到的目的是很 类似的。 steven 主机的 IE 进程直接与远程的 Web 服务器建立一个连接。当数据 包到达防火墙的内部接口后,照样要例行 INPUT 链的检查。之后,数据包被送 到 FORWARD 链,接受系统内核的“伪装处理”,即将包头中的源 IP 地址改为 防火墙外部接口 eth0 的地址,并在系统中做下记录,以便一会儿对其回应包 的目的 IP 进行“恢复”。这样,当该数据包顺利从外部接口出来时,其包头中源 IP 已被改为 。远程服务器会认为这是从防火墙的合法地址发 来的,从而对其做出响应。当远程服务器返回的回应包到达防火墙时,先经过 INPUT 链,然后会根据系统关于 IP 伪装的记录对数据包的目的 IP 进行恢复, 即将 改为 ,最后再经过 OUTPUT 链返回到 steven 主机。 为了实现这个过程,我们必须在防火墙规则脚本中添加以下规则: ipchains A input i eth1 p tcp s 1110 d 31 80 j ACCEPT ipchains A output i eth0 p tcp s 1050 d 31 80 j ACCEPT ipchains A input i eth0 p tcp !-y s 31 80 d 1050 j ACCEPT ipchains A output i eth1 p tcp ! y s 31 80 d 1110 j ACCEPT ipchains A forward i eth0 s 1110 d 31 80 j MASQ 与代理功能比较而言,IP 伪装不需要安装相应的代理软件,数据包的伪装 对用户来说都是“透明”的,并且整个过程都是在 IP 层实现,因此实现速度较快。 缺点是不能对经过的数据包作详细的记录。 南京广播电视大学毕业设计说明书 9 以上介绍了 LINUX 防火墙在实际的设置中常用到的三种功能。但一般说 来,用户在创建自己的防火墙规则脚本时,可以根据自己的需要将这三种功能 组合起来实现。 3. .4 一个 LINUX 防火墙实例 以下是我前一段时间为某办公室搭建的 LINUX 防火墙的实际配置,给出以 供参考。 有两个局域网,LAN1 地址:5/48 为公共网络 IP,LAN2 地址为 /,为内部保留地址。 LINUX 防火墙有两个内部接口:0 接 LAN1; 接 LAN2。 现对防火墙进行配置,使 LAN2 的主机通过 IP 伪装访问互联网,但只允许 使用外部 Web 代理服务器 4 的 1252 端口。LAN1 中的主机被限 制使用几种常用的互联网服务(DNS、SMTP、POP3、HTTP 和 FTP) 。下面就 是创建的防火墙规则脚本: #/etc/rc.d/rc.firewall #!/bin/sh # eth0-External_interface # eth1-LAN1_interface # eth2-LAN2_interface echo “Starting firewalling . . .“ #Flush any existing rules from all chains ipchains -F #Set the default policy to deny ipchains -P input DENY ipchains -P output REJECT ipchains -P forward REJECT #Enable traffic on the loopback interface ipchains -A input -i lo -j ACCEPT ipchains -A output -i lo -j ACCEPT 南京广播电视大学毕业设计说明书 10 #Enable the traffic on the eth1 ipchains -A input -i eth1 -j ACCEPT ipchains -A output -i eth1 -j ACCEPT #the traffic on the eth2 only enablling using the WEB PROXY ipchains -A input -i eth2 -p tcp -s /24 1024:65535 -d 4 1252 -j ACCEPT ipchains -A output -i eth2 -p tcp ! -y -s 4 1252 -d /24 1024:65535 -j ACCEPT #Forwarding rules ipchains -A forward -i eth0 -s 4/29 -j ACCEPT ipchains -A forward -i eth0 -s /24 -j MASQ ipchains -A forward -i eth1 -d 4/29 -j ACCEPT #Enable outgoing the packets from LAN on the External_Interface ipchains -A output -i eth0 -j ACCEPT #Enable incoming some ICMP messages on eth # 1.Dest_Unreachable,Service_Unavailable ipchains -A input -i eth0 -p icmp -s any/0 3 -d 4/29 -j ACCEPT # 2.Time_Exceeded ipchains -A input -i eth0 -p icmp -s any/0 11 -d 4/29 -j ACCEPT # 3.Allow outgoing pings to anywhere ipchains -A input -i eth0 -p icmp -s any/0 0 -d 4/29 -j ACCEPT #Enable Proxy of 4:1252 ipchains -A input -i eth0 -p tcp ! -y -s 4 1252 -j ACCEPT #DNS (53) (DNS:)client modes ipchains -A input -i eth0 -p udp -s 53 -d 4/29 1024:65535 -j ACCEPT ipchains -A input -i eth0 -p tcp ! -y -s 53 -d 4/29 1024:65535 -j ACCEPT #SMTP(25)Enable sending mail through a remote SMTP gateway 南京广播电视大学毕业设计说明书 11 ipchains -A input -i eth0 -p tcp ! -y -s any/0 25 -d 4/29 1024:65535 -j ACCEPT #POP(110)-Enable receiving mail from a remote POP server ipchains -A input -i eth0 -p tcp ! -y -s any/0 110 -d 4/29 1024:65535 -j ACCEPT #HTTP(80) -Enable accessing remote WEB site s as a client ipchains -A input -i eth0 -p tcp ! -y -s any/0 80 -d 4/29 1024:65535 -j ACCEPT #FTP(20,21) -Enable accessing remote FTP servers ipchains -A input -i eth0 -p tcp ! -y -s any/0 21 -d 4/29 1024:65535 -j ACCEPT ipchains -A input -i eth0 -p tcp -s any/0 20 -d 4/29 1024:65535 -j ACCEPTipchains -A input -i eth0 -p tcp ! -y -s any/0 1024:65535 -d 4/29 1024:65535 -j ACCEPT echo “done“ exit 0 第四章 防火墙系统 4.1 防火墙系统总体设计 linux 系统下实现软件防火墙的设计与应用,实质上就是基于主机的网络安 全解决方案。因此,我们完全可以选择合适的软硬件平台和相应的防火墙设计 原理,自己开发出一套能够满足要求的防火墙系统。 归纳起来这里要实现的防 火墙需要满足两大要求:第一,必须能够对主机提供安全保护,即对主机与局 域网以外的主机进行数据传输时实施安全保护;第二,必须能够提供良好的人 机接口界面,具有容易操作、容易管理的优点。 考虑到现有硬件设备的限制, 在保证满足实验要求的环境下尽可能地简化了实验环境。因为该防火墙系统是 基于主机设计的,故只需要一个联网的主机即可进行实验。该系统是在 linux 环 境下用 c 语言实现包过滤型软件防火墙的设计与应用,采用 kylix 开发工具进行 界面设计和数据库连接。 基于 linux 的个人防火墙系统主要具有以下功能: (1)全程动态包过滤 本防火墙要在 linux 下实现全程动态包过滤功能,通过分 南京广播电视大学毕业设计说明书 12 析数据包的地址、协议、端口对任何网络连接当前状态进行访问控制,从而提 高系统的性能和安全性。 (2)提供日志审计 本防火墙配备了日志记录系统和 查询工具,用于记录系统管理、系统访问及针对安全策略的网络访问情况。 (3)防火墙数据库的备份 本防火墙制作防火墙过滤数据库,并且管理员可以 能动地对该数据库进行设置。 第五章 基于 linux 的数据包捕获模块 5.1 基于 linux 的数据包捕获模块结构 数据包捕获模块用于监视和验证网络流量情况,它可以截取或者阅读网络 上 OSI 协议模型中各个协议层次上的数据包。 本文所设计的数据包捕获程序可以捕获通过原始套接口(Socket)的原始数据 包(Raw Packet),当一个数据包到达网络接口时,数据包捕获程序就直接从缓存 区读取捕获的数据包,以供数据分析和处理时调用。数据捕获模块的结构如图 1 所示: 数 据捕获 网卡设置 获取数据包 得到数据包头信息 图表 1 5.2 基于 linux 的数据包捕获模块原理分析 (1)网卡设置原理 在一个实际的系统中,数据的收发是由网卡来完成的, 网卡接收到传输来的数据,网卡内的程序接收数据帧的目的 mac 地址,根据计 算机上的网卡驱动程序设置的接收模式判断该不该接收,认为不该接收就丢掉 不管。而对于网卡来说一般有四种接收模式:广播模式组播模式、直接方式、 混杂模式。数据包捕获程序首先使网络接口(网卡)处于混杂状态,从而可截获 网络上的内容,并且通过相应的软件处理,可以实时分析这些数据的内容,为 数据包过滤作准备。 (2)基本函数说明 本文中在 linux 主机上用 c 语言编写 南京广播电视大学毕业设计说明书 13 数据包捕获程序,所编写的程序中用到很多 linux 中的预定义函数,在此节将对 这些基本函数的功能和使用特点进行说明。 1)ioctl 函数定义 ioctl()函数非常 庞杂,它可以控制各种文件的属性。它用于控制特殊文件的底层设备参数,这 些特殊文件通常是指终端、套接字和接口。ioctl 函数原型为: int ioctl(int handle,int cmd,int *argdx,int argcx); 2)socket 函数定义 常用的 socket 类型有 两种:流式 socket(sock_stream)和数据包式 socket (sock_dgram)。流式是一种面 向连接的 socket,针对面向连接的 tcp 服务应用;数据报式 socket 是一种无连接 的 socket,针对无连接的 udp 服务应用。socket 函数原型为: int socket(int domain, int type,int protocol); 3)recvfrom()函数定义 用 recvfrom()函数来实现 接收数据包,recvfrom()是具备“阻塞式 i/o”特性的函数,能够在没有数据包到达 的情况下暂时挂起等待,直至接收到数据包后,再激活转入下一步处理。 recvfrom()函数的原型为: int recvfrom(socket s,char far *buf,int len,int flags,struct sockaddr far *from,int *fromlen); 本函数从已连接套接口上接收数据,并捕获 数据发送源的地址。对于 sock_stream 类型的套接口,最多可以接收缓冲区大小 个数据。如果套接口被设置为线内接收带外数据(选项为 so_oobinline),且有带 外数据未读入,则返回带外数据。应用程序可通过调用 ioctlsocket()的 socatmark 命令来确定是否有带外数据待读入。对于 sock_stream 类型套接口,忽略 from 和 fromlen 参数。 4)一些“字节顺序”转换函数 因为网络和主机采用的存储字 节时内存顺序安排方式的差异,就存在“字节顺序”的问题。在网络环境下存储 时,高位字节存放在内存的起始位置,而低字节则存放在较高的位置。主机形 式的存放顺序恰好相反,低位字节存放在内存的起始位置。这就需要以下相应 的字节顺序转换函数: inet_ntoa():将 32 位的网络二进制数值转换为可读十进 制形式的带点分割符的 ip 地址。 inet_addr():将带有分割符的 ip 地址转换为 32 位的 unsigned long 的格式。 ntohs():将网络字节顺序转换为 32 位的主机字节顺序。 ntohl():将网络字节顺 序转换成 16 位的主机字节顺序。 htonl():将 32 位 u_long 的值由主机字节顺序 转换为网络字节顺序。 htons():将 16 位 u_long 的值由主机字节顺序转换为 网络字节顺序。 本文设计的数据捕获程序需要使用 sock_packet 设备, sock_packet 只在基于 linux 的操作系统中有效定义。为此,美国洛仑兹伯克利 南京广播电视大学毕业设计说明书 14 国家实验室编写了专用于数据包截获的 api 函数库“libpcap”。该函数的设计目标 是统一不同系统上所提供的用于数据包截获的不同类型接口,并使得类似的高 层应用程序的编写和移植变得简单有效,不再需要对每一个应用都使用不同的 依赖于具体系统的数据包截获模块。 第六章 数据包捕获模块设计 6.1 数据包捕获模块设计流程 我们先说明对外来连接 accept()进行过滤的工作流程。 第一步:首先,操作系统启动策略守候进程,并调用 open()打开策略驱 动。策略守候进程读取本地的包含策略和凭证的文件(当然,也可以定制进程 启动时即从远程的 LDAP 服务器上下载、更新策略和凭证),open()将初始化有 关数据结构。策略守候进程调用 read(),试图从策略驱动中读取连接请求信息。 如果驱动中没有请求信息,则守候进程阻塞。 第二步:服务器进程收到了连接请求,首先调用 accept()。这个被修改过 的系统调用形成策略上下文并提交到策略驱动中。服务器进程阻塞。 第三步:此时,read()返回请求消息,策略守候进程被唤醒。它读取该消 息,调用 KeyNote 的一致性检查器(compliance checker)根据本地策略和凭 证进行分析。如果未找到与此连接相关的策略,策略守候进程就联系远程的 LDAP 服务器查找、下载相应的凭证。若策略许可(即:找到策略或安全凭证, 根据签名算法验证无误,并且符合凭证断言),则允许该连接,若在本地及远 程服务器上均没有找到相应的策略或凭证,或者与策略、凭证的断言不符,则 拒绝之。策略守候进程调用 write()将自己的决策写入策略驱动中。 第四步: accept()从策略驱动中读取策略守候进程的决策,服务器进程被 唤醒。若决策允许,accept()返回非负的套接字描述符;否则返回-1 拒绝该连 接请求。 对系统向外发起连接的 connect()进行过滤的系统流程与此类似。 其它两个系统调用的功能是,close()关闭伪设备驱动,会释放已分配资 源并禁用分布式防火墙;ioctl()用于内核与守候进程之间同步时的错误处理。 6.2 数据包捕获模块实现 南京广播电视大学毕业设计说明书 15 该数据包捕获程序用 c 语言来编写,程序中用到很多 linux 网络编程中的函 数。 (1)设置网络接口为混杂模式 网络接口的混杂模式使得一个网络接口设 备从只能读取目标地址为 6 字节 mac 地址的数据包,变为可读取网络广播媒体 中的所有数据包。该部分通过两次 ioctl 函数调用实现: ioctl(sock, siocgifflags, /* 源端口*/ u_int16_t dest;/* 目的端口*/ u_int16_t len;/* udp 长度*/ u_int16_t check;/*校验码*/ 本文设计的是一个基于 linux 主机的包过滤型个人 防火墙,它实现的功能和现今市场上流行的防火墙有巨大差距。随着技术的不 断发展,防火墙也处于不断的变

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论