《Linux个人防火墙的设计与实现》由会员分享,可在线阅读,更多相关《Linux个人防火墙的设计与实现(29页珍藏版)》请在金锄头文库上搜索。
1、目录摘 要 .21 引言 .11.1 课程设计的意义 .11.2 课程设计的目的 .11.3 Linux 防火墙的简单介绍 .12 Linux 防火墙的功能 .22.1 包过滤功能 .21.2 代理服务功能 .31.3 包伪装功能 .33 Linux 防火墙技术 .53.1 Linux 防火墙技术的发展 .53.2 利用 Linux 实现路由和包过滤 .53.3 Ipchains 原理及简介 .53.4 源代码分析 .73.5 Ipchains 命令使用简介 .104 Linux 防火墙构造安全的解决方案 .174.1 堡垒主机或双穴主机网关 .174.2 被屏蔽主机网关 .174.3 被屏蔽
2、子网 .185 防火墙的设计与实现 .205.1 网络结构 .205.2 防火墙的实现要求 .205.3 防火墙的实现原理 .215.4 防火墙的建立过程 .236 总结 .26参考文献 .27Linux 个人防火墙的设计与实现学生姓名:王涛 指导老师:肖晓丽摘 要 防火墙在配置上能够防止来自“外部”世界未经授权的交互式登录。这大大有助于防止破坏者登录到你网络中的计算机上。本课程设计介绍基于Netfilter/Iptables 的包过滤防火墙的实现原理。对 Linux 系统、TCP/IP 的相关知识及 Iptables 语法做了介绍。详细介绍了 Iptables 命令的使用举例,通过实例介绍了
3、基于 Netfilter/Iptables 的包过滤防火墙的配置过程。关键词 网络操作系统;包过滤;防火墙 Linux 个人防火墙的设计与实现 第 0 页 共 30 页1 引言1.1 课程设计的意义随着网络的发展, 网络的资源共享, 网上办公,电子商务等蓬勃发展, 越来越多的公司和政府部门在公司或部门范围内组建起自己的计算机网络系统(Intranet), Intranet3的技术优势, 给公司带来了高效的工作效率的同时 , 也带来了全新的安全问题。全球信息安全方面的研究工作者就此问题展开了广泛而深入的研究,其中防火墙技术 1是近年发展起来的一种网络安全技术。顾名思义,它是在受保护网与外部网之间
4、构造一个保护层,把攻击者挡在受保护网的外面。这种技术强制所有内外网的连接都必须经过此保护层,在此进行检查和连接,从而保护了受保护网资源免遭外部非法入侵。它通过监测、限制或更改跨越防火墙的数据流,尽可能地对外部网络屏蔽有关受保护网络的信息和结构来实现对网络的安全保护。本文将首先从 Intranet 的安全性入手, 分析 Intranet 面临的安全问题,讨论 Intranet 安全设计需求,然后详述防火墙的背景知识和关键技术,最后重点介绍我们提出的基于 Linux 平台的复合防火墙 5的设计和实现。 1.2 课程设计的目的本课程设计设主要目的是在 Linux 操作系统下完成基于Netfilter
5、/Iptables 的包过滤防火墙的设计与实现。Internet 等网络服务给人们的生活带来极大便利的同时也存在很多隐患,学会基于Netfilter/Iptables6的包过滤防火墙的配置就能在一定程度上有效地抵御来自网络上的攻击。通过完成课程设计的过程,学习包过滤防火墙 1的相关知识,同时也深化对这学期 Linux 课程的学习。1.3 Linux 防火墙的简单介绍netfilter/iptables 是 Linux 系统提供的一个非常优秀的防火墙工具,它完全免费、功能强大、使用灵活、占用系统资源少,可以对经过的数据进行非常细致的控制。本节首先介绍有关 iptables 防火墙的基本知识,包括
6、 netfilter 框架、 Linux 个人防火墙的设计与实现 第 1 页 共 30 页iptables 防火墙结构与原理、iptables 命令格式等内容。2 Linux 防火墙的功能目前市场上有许多商用防火墙软件出售,但它们大多价格高昂,使许多个人及小企业用户难以承受。Linux 的出现给了我们一个新的选择。它提供了一套完全免费的解决方案,其内置防火墙功能非常强大,甚至超过了许多昂贵的商用软件。 2.1 包过滤功能 根据数据包的包头中某些标志性的字段,对数据包进行过滤。当数据包到达防火墙时,防火墙根据包头中的某些字段中的一些或全部进行判断,决定接受还是丢弃数据包。包过滤可能发生在以下几个
7、时刻:接收到数据包时,发送数据包时以及转发数据包时。Linux 中过滤包的方法如下: (1)将包头和过滤规则逐一进行匹配。 (2)第一条与包匹配的规则将决定以下采取的行动:首先,此规则指定的策略将被应用到该包上。应用在一个包的策略包括以下几种:接受(Accept),即允许包通过该过滤器;抛弃(Reject),即丢掉该包并发一个“主机不可到达”的 ICMP 报文回发送者;拒绝 (Deny),即丢掉该包且不发任何返回信息。其次,修改此规则对应的包和字节计数器的值;再次,一些关于包的信息会有选择性地被写入日志中。有的规则中可能含有参数来定义如何改写包头的服务类型(TOS)字段,用于确定不同包的优先级
8、。 (3)如果没有与包相匹配的过滤规则,则将对该包采取缺省的过滤规则。Linux 的包过滤规则可包含如下一些信息: 源地址和目的地址以及子网掩码,其中子网掩码中的 0 表示可以匹配任何地址; 包的类型可以是 TCP,UDP ,ICMP 4 或“any” ; 源和目的端口号,一条规则中可以指定 10 个以上的端口,也允许指定端口范围; ICMP 报文类型; Linux 个人防火墙的设计与实现 第 2 页 共 30 页 包中的 ACK 和 SYN 标志 3,这是为了防止在某个特定方向上建立新的链接; 某块网卡的名字或 IP 地址,这样可以指定在特定的网卡上进出包; 指定是否修改包头的 TOS 字段
9、; 用一个标志来确定包的一些基本信息是否要被写入日志中。 1.2 代理服务功能 一个完整的防火墙解决方案不仅包括包过滤器,而且应该包括某种类型的应用层代理服务器。所谓代理服务,是指在防火墙上运行某种软件(称为代理程序) ,如果内部网需要与外部网通信,首先要建立与防火墙上代理程序的连接,把请求发送到代理程序;代理程序接收该请求,建立与外部网相应主机的连接,然后把内部网的请求通过新连接发送到外部网相应主机。反之亦然。概括的说,就是内部网和外部网的主机之间不能建立直接的连接,而是要通过代理服务进行转发。代理服务器具有用户级的身份验证,完备的日志记录和帐号管理等较包过滤器更加安全的功能。然而,许多代理
10、机制需要客户端修改软件或修改用户接口,使用户意识到正在使用代理服务器。而 Linux 内核支持透明代理服务功能,透明代理用一种完全透明的方式,将一个经过本防火墙的连接重定向到本地代理服务器。客户端(用户和软件)完全不知道他们的连接被一个代理进程处理,他们认为自已在直接和指定的服务器对话。 1.3 包伪装功能 Linux 核心提供了一个用于防火墙解决方案的附加功能: IP 包伪装。IP 包伪装是 Linux 中的一种网络功能,它只能用于 TCP/UDP 包,它能使没有Internet 地址的主机通过有 Internet 地址的主机访问 Internet。如果一台 Linux 服务器用包伪装功能连
11、接到 Internet 上,那私接上它的电脑即使没有获得正式指定的 IP 地址也可以接入 Internet.这些电脑可以隐藏在 Linux 服务器后面存取 Internet 上的信息而不被发现,看起来就好象是服务器在使用 Internet。Linux 服务器实现代理功能的方法如下:当一个内部主机向外发包时,Linux 服务器在转发此 IP 包之前,用自已 IP 地址替换此包的源 IP 地址,并临时产生一个本机端口号来替换此包的 TCP/UDP 头中的源端口号;同时,内核会记录下此替换。当外部的返回包到来时(送往防火墙主机的临时端口),服务 Linux 个人防火墙的设计与实现 第 3 页 共 30 页器能自动识别它,将此返回包的 IP 地址和端口号替换成内部主机的地址和端口号,发给内部主机。分组过滤方式如下图 2.1 所示。 图 2.1 分组过滤示意图通过这种 IP 包伪装方式,Linux 方便地实现了“代理”功能。从外部看来,所有包的收发都是针对此 Linux 主机的,所以具有很好的安全性。 Linux 个人防火墙的设计与实现 第 4 页 共 30 页3 Linux 防火墙技术3.1 Linux 防火墙技术的发展Ipchains 是 linux3的防火墙配置工具,以前叫 Ipfwadm,版本的更新非常快,现在的版本号是 1.3.10。相对于 Ipfwadm 来