基于Linux的网络防火墙设计方法

摘要

随着Internet的迅速发展,网络越来越成为了人们日常生活不可或缺的一部分,而随之引出的网络安全问题也越来越突出,成为人们不得不关注的问题。
为了在一个不安全的网际环境中构造出一个相对安全的环境,保证子网环境下的计算机的安全运行免受到外部的侵害,针对当前的网络问题,本文主要介绍了几种流行的防火墙技术及其工作原理。在防火墙的基本概念、作用和基本类型的基础上,重点分析了linux诸版本中所使用的基于包过滤型防火墙的工作原理,并在此基础上对linux2.4版本出现的iptables技术作了详细的构架环境分析以及实现,以此来测试和部署出一个较为安全的网络环境,使得在一个不安全的网络环境中有效防范外部网络的攻击行为,让整个网络具有较高的安全级别。
关键词: 防火墙、网络安全、Linux、包过滤技术、Iptables

Abstract
With the rapid development of Internet, the network is more and more become an integral part of People’s daily life, and subsequently leads to the problem of network security that has become increasingly prominent, as people have concerns.
In order to construct a relatively safe environment in a secure environment, to ensure the subnet environment of computer security operation and not infringed by the external, in view of the current network problems, this paper mainly introduces several popular firewall technology and how it works. On the basis of the basic concept, role and basic types behind a firewall, we mainly analys its working principle,which is based on the working principle of packet filter firewall in each version of Linux,and based on that, we analyzed in detail and achieve the structure environment of iptables technology which appears in version 2.4 of Linux,and use it to test and deploy a safer network environment,which will make computers can effectively guard against external network attack behavior in an unsafe network environment, let whole network has a higher level of security.

Key Words: firewall、Network Security、Linux、Packet filtering technology、Iptables

目录

第1章 绪论 1
1.1 选题的意义 1
1.2 研究内容与论文工作 1
1.3 论文的组织 2
第2章 网络安全概念及常用防火墙技术 3
2.1 计算机网络安全的概念 3
2.2 计算机防火墙中的常用技术 3
第3章 Linux系统的特点 10
第4章 基于linux的网络防火墙技术 12
第5章 linux网络防火墙的架构环境 16
第6章 linux网络防火墙的实验方法 19
第7章 总结及进一步研究 23
7.1 总结 23
7.2 进一步研究 23
参考文献 25
致谢 26

第1章 绪论

1.1 选题的意义
近年来,计算机网络技术的不断发展,使得网络应用逐渐得到普及。网络已经越来越成为了人们日常生活不可或缺的一部分,逐渐成为了一个无所不在、无所不用的工具。足不出户,人们便可以了解到全球网络上面丰富的经济、文化等信息,甚至即时的了解到世界上任何一个角落所正在发生的事情。而然,随着网络应用的不断普及和增多,网络安全问题也越来越突出,这源于计算机网络连接方式的多样性、终端分布不均性、网络开放性以及网络资源共享性等因素。因此连接到互联网上的计算机非常容易遭受到病毒、黑客、恶意软件和其他一些非法行为的攻击。所以为了确保网络上信息的安全传输,计算机网络的安全与防范措施的研究必然要提上议事日程。
防火墙技术是一种目前使用最为广泛的网络安全防护技术,它可以是一个或者一组实施访问控制策略的系统,可以是软件、硬件亦或者是两者的结合,其目的是提供一种对网络的安全保护策略。防火墙的设计通常位于内部网络与外部网络之间,以实现监视、控制和改变内部和外部网络之间流动的网络通信,控制外部计算机对内部访问的环境,确定访问的时间、权限、服务类型和质量等。总而言之,防火墙技术是要尽最大的努力来保护用户或者企业的信息不受侵害。
在Internet上面,黑客使用恶意代码,比如说病毒、蠕虫、特洛伊木马等等来尝试查找未受保护的计算机。虽然有些攻击仅仅是一种恶作剧,但是很大部分的攻击确实怀有恶意的,甚至有的攻击试图去删除您所用计算机中的信息,使系统崩溃或者窃取相关隐私信息,这就使得信息保护的意思尤为重要。幸运的是,我们可以通过使用防火墙来降低感染的风险,所以研究、配置和测试计算机的防火墙自然是我们非常关系和值得考虑的问题。
1.2 研究内容与论文工作
本文所研究的内容以及工作主要如下:
(1)阅读相关的资料文献,了解领域内相关技术等知识。
(2)熟悉Linux操作系统的特点,并懂得相关的操作知识。
(3)学习和研究Linux系统下网络防火墙技术的知识,初步学会如何配置防火墙。
(4)熟练掌握配置的防火墙的测试工作,能根据需要配置出个人的防火墙。
1.3 论文的组织
(1)第二章,介绍计算机网络安全的基本概念以及常用的网络防火墙技术。
(2)第三章,介绍linux系统的特点
(3)第四章,介绍基于linux操作系统的网络防火墙技术,并介绍相关技术的构架环境,进而实现linux网络防火墙。
(4)第五章,介绍linux网络防火墙的架构环境
(5)第六章,介绍linux网络防火墙的实验方法
(4)第七章,对本文进行总结,指出本文研究的成果、存在的不足以及自身对项目的体会。

第2章 网络安全概念及常用防火墙技术

2.1 计算机网络安全的概念
计算机网络安全不仅包括组网的硬件、管理控制网络的软件,也包括共享的资源,快捷的网络服务,所以定义网络安全应考虑涵盖计算机网络所涉及的全部内容。国际标准化组织(ISO)对计算机系统安全的定义是:为数据处理系统建立和采用的技术和管理的安全保护,保护计算机硬件、软件和数据不因偶然和恶意的原因遭到破坏、更改和泄露。参照ISO给出的计算机安全定义,认为计算机网络安全是指:“保护计算机网络系统中的硬件,软件和数据资源,不因偶然或恶意的原因遭到破坏、更改、泄露,使网络系统连续可靠性地正常运行,网络服务正常有序。”
2.2 计算机防火墙中的常用技术
2.2.1 包过滤技术
防火墙的一类。传统的包过滤功能在路由器上常可看到,而专门的防火墙系统一般在此之上加了功能的扩展,如状态检测等。它通过检查单个包的地址,协议,端口等信息来决定是否允许此数据包通过。
包过滤防火墙是最简单的一种防火墙,它在网络层截获网络数据包,根据防火墙的规则表,来检测攻击行为。包过滤防火墙一般作用在网络层(IP层),故也称网络层防火墙(Network Lev Firewall)或IP过滤器(IP filters)。数据包过滤(Packet Filtering)是指在网络层对数据包进行分析、选择。通过检查数据流中每一个数据包的源IP地址、目的IP地址、源端口号、目的端口号、协议类型等因素或它们的组合来确定是否允许该数据包通过。在网络层提供较低级别的安全防护和控制。
包过滤技术(IP Filtering or packet filtering) 的原理在于监视并过滤网络上流入流出的IP包,拒绝发送可疑的包。基于协议特定的标准,路由器在其端口能够区分包和限制包的能力叫包过滤(Packet Filtering)。由于Internet 与Intranet 的连接多数都要使用路由器,所以Router成为内外通信的必经端口,Router的厂商在Router上加入IP 过滤 功能,过滤路由器也可以称作包过滤路由器或筛选路由器(Packet FilterRouter)。防火墙常常就是这样一个具备包过滤功能的简单路由器,这种Firewall应该是足够安全的,但前提是配置合理。然而一个包过滤规则是否完全严密及必要是很难判定的,因而在安全要求较高的场合,通常还配合使用其它的技术来加强安全性。
包过滤技术的工作原理。路由器逐一审查数据包以判定它是否与其它包过滤规则相匹配。每个包有两个部分:数据部分和包头。过滤规则以用于IP顺行处理的包头信息为基础,不理会包内的正文信息内容。包头信息包括:IP 源地址、IP目的地址、封装协议(TCP、UDP、或IP Tunnel)、TCP/UDP源端口、ICMP包类型、包输入接口和包输出接口。如果找到一个匹配,且规则允许这包,这一包则根据路由表中的信息前行。如果未找到一个匹配,且规则拒绝此包,这一包则被舍弃。如果无匹配规则,一个用户配置的缺省参数将决定此包是前行还是被舍弃。
包过滤规则允许Router取舍以一个特殊服务为基础的信息流,因为大多数服务检测器驻留于众所周知的TCP/UDP端口。
包过滤防火墙的分类。它包括静态包过滤类型防火墙和动态包过滤类型防火墙。
静态包过滤类型防火墙这类防火墙几乎是与路由器同时产生的,它是根据定义好的过滤规则审查每个数据包,以便确定其是否与某一条包过滤规则匹配。过滤规则基于数据包的报头信息进行制订。报头信息中包括IP源地址、IP目标地址、传输协议(TCP、UDP、ICMP等等)、TCP/UDP目标端口、ICMP消息类型等。
动态包过滤类型防火墙。这类防火墙采用动态设置包过滤规则的方法,避免了静态包过滤所具有的问题。这种技术后来发展成为包状态监测(Stateful Inspection)技术。采用这种技术的防火墙对通过其建立的每一个连接都进行跟踪,并且根据需要可动态地在过滤规则中增加或更新条目。
包过滤技术包括两种基本类型。无状态检查的包过滤和有状态检查的包过滤。其区别在于后者通过记住防火墙的所有通信状态,并根据状态信息来过滤整个通信流,而不仅仅是包。
有许多方法可以绕过包过滤器进入Internet,包过滤技术存在以下几个缺陷:
1. TCP只能在第0个分段中被过滤。
2. 特洛伊木马可以使用NAT来使包过滤器失效。
3. 许多包过滤器允许1024以上的端口通过。
典型过滤规则介绍。典型的过滤规则有以下几种:允许特定名单内的内部主机进行Telnet输入对话、只允许特定名单内的内部主机进行FTP输入对话、只允许所有Telnet 输出对话、只允许所有FTP 输出对话、拒绝来自一些特定外部网络的所有输入信息。
有些类型的攻击很难用基本包头信息加以鉴别,因为这些独立于服务。一些Router可以用来防止这类攻击,但过滤规则需要增加一些信息,而这些信息只有通过以下方式才能获悉:研究Router选择表、检查特定的IP选项、校验特殊的片段偏移等。这类攻击有以下几种:
源IP地址欺骗攻击:入侵者从伪装成源自一台内部主机的一个外部地点传送一些信息包;这些信息包似乎像包含了一个内部系统的源IP地址。如果这些信息包到达Router的外部接口,则舍弃每个含有这个源IP地址的信息包,就可以挫败这种源欺骗攻击。
  源路由攻击:源站指定了一个信息包穿越Internet时应采取的路径,这类攻击企图绕过安全措施,并使信息包沿一条意外(疏漏)的路径到达目的地。可以通过舍弃所有包含这类源路由选项的信息包方式,来挫败这类攻击。
  残片攻击:入侵者利用IP残片特性生成一个极小的片断并将TCP报头信息肢解成一个分离的信息包片断。舍弃所有协议类型为TCP、IP片断偏移值等于1的信息包,即可挫败残片的攻击。
  从以上可看出定义一个完善的安全过滤规则是非常重要的。通常,过滤规则以表格的形式表示,其中包括以某种次序排列的条件和动作序列。每当收到一个包时,则按照从前至后的顺序与表格中每行的条件比较,直到满足某一行的条件,然后执行相应的动作(转发或舍弃)。有些数据包过滤在实现时,“动作”这一项还询问,若包被丢弃是否要通知发送者(通过发ICMP信息),并能以管理员指定的顺序进行条件比较,直至找到满足的条件。
对流进和流出网络的数据进行过滤可以提供一种高层的保护。建议过滤规则如下:
 (1)任何进入内部网络的数据包不能把网络内部的地址作为源地址。
 (2)任何进入内部网络的数据包必须把网络内部的地址作为目的地址。
 (3)任何离开内部网络的数据包必须把网络内部的地址作为源地址。
 (4)任何离开内部网络的数据包不能把网络内部的地址作为目的地址。
 (5)任何进入或离开内部网络的数据包不能把一个私有地址(private address)或在RFC1918中 127.0.0.0/8.)的地址作为源或目的地址。
 (6)阻塞任意源路由包或任何设置了IP选项的包。
 (7)保留、DHCP自动配置和多播地址也需要被阻塞。0.0.0.0/8 、169.254.0.0/16 、192.0.2.0/24 、224.0.0.0/4 、240.0.0.0/4。
包过滤技术的优点:
(1)一个过滤路由器能协助保护整个网络。绝大多数Internet防火墙系统只用一个包过滤路由器;
(2)过滤路由器速度快、效率高。执行包过滤所用的时间很少或几乎不需要什么时间,由于过滤路由器只检查报头相应的字段,一般不查看数据报的内容,而且某些核心部分是由专用硬件实现的,如果通信负载适中且定义的过滤很少的话,则对路由器性能没有多大影响;
(3)包过滤路由器对终端用户和应用程序是透明的。当数据包过滤路由器决定让数据包通过时,它与普通路由器没什么区别,甚至用户没有认识到它的存在,因此不需要专门的培训或在每主机上设置特别的软件。
包过滤技术的局限性:
(1)定义包过滤器可能是一项复杂的工作。因为网管员需要详细地了解Internet各种服务、包头格式和他们在希望每个域查找的特定的值。如果必须支持复杂的过滤要求的,则过滤规则集可能会变得很长很复杂,并且没有什么工具可以用来验证过滤规则的正确性。
(2)路由器信息包的吞吐量随过滤器数量的增加而减少。路由器被优化用来从每个包中提取目的IP地址、查找一个相对简单的路由表,而后将信息包顺向运行到适当转发接口。如果过滤可执行,路由器还必须对每个包执行所有过滤规则。这可能消耗CPU的资源,并影响一个完全饱和的系统性能。
(3)不能彻底防止地址欺骗。大多数包过滤路由器都是基于源IP地址、目的IP地址而进行过滤的,而IP地址的伪造是很容易、很普遍的。
(4)一些应用协议不适合于数据包过滤。即使是完美的数据包过滤,也会发现一些协议不很适合于经由数据包过滤安全保护。如RPC、X- Window和FTP。而且服务代理和HTTP的链接,大大削弱了基于源地址和源端口的过滤功能。
(5)正常的数据包过滤路由器无法执行某些安全策略。例如,数据包说它们来自什么主机,而不是什么用户,因此,我们不能强行限制特殊的用户。同样地,数据包说它到什么端口,而不是到什么应用程序,当我们通过端口号对高级协议强行限制时,不希望在端口上有别的指定协议之外的协议,而不怀好意的知情者能够很容易地破坏这种控制。
(6)一些包过滤路由器不提供任何日志能力,直到闯入发生后,危险的封包才可能检测出来。它可以阻止非法用户进入内部网络,但也不会告诉我们究竟都有谁来过,或者谁从内部进入了外部网络。
2.2.2 NAT技术
网络地址翻译(NAT,Network Address Translation)最初的设计目的是增加在专用网络中可使用的IP地址数,但现在则用于屏蔽内部主机。
NAT的工作原理:
为了解决IP地址的不足问题,提出了网络地址翻译的方法。NAT能处理IP数据包,将其中的地址部分进行转换,对内部和外部IP进行直接映射,从一批可使用的外部IP地址池中动态选择一个地址分配给内部主机,或者不但转换IP地址,还转换端口地址,从而使多个内部主机能够共享一个外部IP地址。
NAT通过将专用网络中的专用IP地址转换成在Internet上使用的全球唯一的公共IP地址,从而实现对黑客有效地隐藏所有TCP/IP级的有关内部主机信息的功能,使外部主机无法探测到它们。所以NAT实质上是一个基本代理,即一个主机充当代理,代表内部所有主机发出请求,从而将内部主机的身份从公用网上隐藏起来了。
NAT技术使得一个私有网络可以通过internet注册IP连接到外部世界,位于inside网络和outside网络中的NAT路由器在发送数据包之前,负责把内部IP翻译成外部合法地址。内部网络的主机不可能同时与外部网络通信,所以只有一部分内部地址需要翻译。
当映射一个外部IP到内部地址时,可以利用TCP的load distribution技术。使用这个特征时,内部主机基于round-robin机制,将外部进来的新连接定向到不同的主机上去。Load distribution只有在影射外部地址到内部地址的时候才有效。
NAT防火墙最基本的翻译模式:
按照普及程度和可用性顺序,翻译模式包括:
静态翻译。在这种模式中,一个指定的内部网络源有一个从改变的固定翻译表。
动态翻译。在这种模式中,为了隐藏内部主机的身份或扩展内部网的地址空间,一个大的Internet客户群共享单一一个或一组小的Internet IP地址。
负载平衡翻译。在这种模式中,一个IP地址和端口被翻译为同等配置的多个服务器的一个集中处,这样一个公共地址可以为许多服务器服务。
网络冗余翻译。在这种模式中,多个Internet连接被附加在一个NAT防火墙上,从而防火墙根据负载和可用性对这些连接进行选择和使用。
网络地址翻译都和IP数据包过滤一起使用,就构成一种更复杂的包过滤型的防火墙。仅仅具有包过滤能力的路由器,其防火墙能力还是比较弱,反抗外部入侵的能力也较差,而和网络地址翻译技术相结合,就能起到更好的安全确保。
2.2.3 应用代理技术
代理服务是另一种类型的防火墙,它通常是一个软件模块,运行在一台主机上。代理服务器与路由器的合作,路由器实现内部和外部网络交互时的信息流导向,将所有的相关应用服务请求传递给代理服务器。代理服务作用在应用层,其特点是完全“阻隔”了网络通信流,通过对每种应用服务编制专门的代理程序,实现监视和控制应用层通信流的作用。
代理服务的实质是中介作用,它不允许内部网和外部网之间进行直接的通信。其工作原理说明如下:
1、当外部网的用户希望访问内部网某个应用服务器时,实际上是向运行在防火墙上的代理服务软件提出请求,建立连接。
2、由代理服务器代表它向要访问的应用系统提出请求,建立连接。
3、应用系统给予代理服务器响应,
4、代理服务器给予外部网用户以响应。
外部网用户与应用服务器之间的数据传输全部由代理服务器中转,外部网用户无法直接与应用服务器交互,避免了来自外部用户的攻击。
通常代理服务是针对特定的应用服务而言的,不同的应用服务可以设置不同的代理服务器,如FTP代理服务器、TELNET代理服务器等。 目前,很多内部网络都同时使用分组过滤路由器和代理服务器来保证内部网络的安全性,并且取得了较好的效果。
应用代理技术的发展阶段:
在代理型防火墙技术的发展过程中,经历了两个不同的版本,即第一代应用网关型代理防火墙和第二代自适应代理防火墙。
第一代应用网关(Application Gateway)型防火墙
这类防火墙是通过一种代理(Proxy)技术参与到一个TCP连接的全过程。从内部发出的数据包经过这样的防火墙处理后,就好像是源于防火墙外部网卡一样, 从而可以达到隐藏内部网结构的作用。这种类型的防火墙被网络安全专家和媒体公认为是最安全的防火墙。它的核心技术就是代理服务器技术。
第二代自适应代理(Adaptive proxy)型防火墙
它是近几年才得到广泛应用的一种新防火墙类型。它可以结合代理类型防火墙的安全性和包过滤防火墙的高速度等优点,在毫不损失安全性的基础之上将代理型防火墙的性能提高10倍以上。组成这种类型防火墙的基本要素有两个,它们分别是自适应代理服务器(Adaptive Proxy Server)与动态包过滤器(Dynamic Packet filter)。在“自适应代理服务器”与 “动态包过滤器”之间存在一个控制通道。在对防火墙进行配置时,用户仅仅将所需要的服务类型、安全级别等信息通过相应Proxy的管理界面进行设置就可以了。然后,自适应代理就可以根据用户的配置信息,决定是使用代理服务从应用层代理请求还是从网络层转发包。如果是后者,它将动态地通知包过滤器增减过滤规则,满足用户对速度和安全性的双重要求。
代理类型防火墙的最突出的优点就是安全。由于它工作于最高层,所以它可以对网络中任何一层数据通信进行筛选保护,而不是像包过滤那样,只是对网络层的数据进行过滤。
另外代理型防火墙采取是一种代理机制,它可以为每一种应用服务建立一个专门的代理,所以内外部网络之间的通信不是直接的,而都需先经过代理服务器审核,通过后再由代理服务器代为连接,根本没有给内、外部网络计算机任何直接会话的机会,从而避免了入侵者使用数据驱动类型的攻击方式入侵内部网。
代理防火墙的最大缺点就是速度相对比较慢,当用户对内外部网络网关的吞吐量要求比较高时,代理防火墙就会成为内外部网络之间的瓶颈。因为防火墙需要为不同的网络服务建立专门的代理服务,在自己的代理程序为内、外部网络用户建立连接时需要时间,所以给系统性能带来了一些负面影响,但通常不会很明显。
代理的优点:

  1. 代理易于配置。代理因为是一个软件,所以它比过滤路由器容易配置,配置界面十分友好。如果代理实现的好,可以对配置协议要求较低,从而避免配置错误。
  2. 代理能生成各项记录。因为代理在应用层检查各项数据,所以可以按一定准则,让代理生成各项日志和记录。这些日志和记录对于流量分析和安全检查是十分重要和宝贵的。
  3. 代理能灵活、安全地控制进出信息。通过采取一定的措施,按照一定的规则,可以借助代理实现一整套的安全策略,控制进出的信息。
    4.代理能过滤数据内容。可以把一些过滤规则应用于代理,让它在应用层实现过滤功能。
    代理的缺点:
  4. 代理速度比路由器要慢。
  5. 代理对于用户来说并不是透明的。
  6. 对于每项服务,代理可能要求不同的服务器。
  7. 代理服务通常要求对客户或过程进行限制。
  8. 代理不能改进底层协议的安全性。

第3章 Linux系统的特点

Linux操作系统是一类Unix计算机操作系统的统称。它是一个名字叫做Linus Torvald的芬兰人业余发明的,linux操作系统的名字由来也源于此。先如今它已经成为了一个羽翼丰满的32位计算机的操作系统,其性能可以和商业的x86Unix操作系统想媲美。Linux操作系统是一款自由软件,并且在专用的网站上公布了该系统的源代码。因此,引起了全世界操作系统爱好者的兴趣,不断地对linux进行修改和补充,并在各种系统配合下进行测试,这使得linux日趋完善和成熟。
Linux操作系统的特点:

  1. 真正的多任务多用户操作系统
    只有很少的操作系统能提供真正的多任务能力,尽管许多操作系统声明支持多任务,但并不完全准确。而Linux则充分利用了X86CPU的任务切换机制,实现了真正多任务、多用户环境,允许多个用户同时执行不同的程序,并且可以给紧急任务以较高的优先级。
  2. 具有强大的平台可伸缩性
    Linux可以运行在386以上及各种RISC体系结构机器上 。Linux最早诞生于微机环境,一系列版本都充分利用了X86CPU的任务切换能力,使X86CPU的效能发挥得淋淋尽致,而这一点连Windows都没有做到。Linux能运行在笔记本电脑、PC、工作站,直至巨型机上,而且几乎能在所有主要CPU芯片搭建的体系结构上运行(包括Intel/AMD及HP-PA、MIPS、PowerPC、UltraSPARC、ALPHA等RISC芯片)
  3. 它是unix操作系统的完整实现。
    从发展的背景看,Linux与其他操作系统的区别是,Linux是从一个比较成熟的操作系统UNIX发展而来的,UNIX上的绝大多数命令都可以在Linux里找到并有所加强。我们可以认为它是Unix系统的一个变种,因而UNIX的优良特点如可靠性、稳定性以及强大的网络功能,强大的数据库支持能力以及良好的开放性等都在Linux上一一体现出来。且在Linux的发展过程中,Linux的用户能大大地从Unix团体贡献中获利,它能直接获得Unix相关的相应支持和帮助。
  4. 真正的多任务多用户
    POSIX是基于UNIX的第一个操作系统簇国际标准,Linux遵循这一标准这使UNIX下许多应用程序可以很容易地移植到Linux下,相反也是这样。
  5. 丰富的图形用户界面
    Linux的图形用户界面是Xwindow系统。Xwindow可以做MSWindows下的所有事情,而且更有趣、更丰富,用户甚至可以在几种不同风格的窗口之间来回切换。
  6. 强大的网络功能
    实际上,Linux就是依靠互联网才迅速发展了起来,Linux具有强大的网络功能也是自然而然的事情。它可以轻松地与TCP/IP、LANManager、Windows for Workgroups、Novell Netware或Windows NT网络集成在一起,还可以通过以太网或调制解调器连接到Internet上。
    Linux不仅能够作为网络工作站使用,更可以胜任各类服务器,如X应用服务器、文件服务器、打印服务器、邮件服务器、新闻服务器等等。
  7. 开发功能强
    Linux支持一系列的UNIX开发,它是一个完整的UNIX开发平台,几乎所有的主流程序设计语言都已移植到Linux上并可免费得到,如C、C++、Fortran77、ADA、PASCAL、Modual2和3、Tcl/TkScheme、SmallTalk/X等。

第4章 基于linux的网络防火墙技术

在众多网络防火墙产品中,Linux操作系统上的防火墙软件特点显著。首先是Linux操作系统作为一个类Unix网络操作系统,在系统的稳定性、健壮性都独具优势。更何况,Linux不但本身的源代码完全开放,而且系统包含了建立Internet网络环境所需要的所有服务软件包,如Apache Web服务器、DNS服务器、Mail服务器、Database服务器等。同样,基于Linux的防火墙软件不但具有强大的功能,而且大部分都是开放软件。
Linux内核从1.1版本开始,就已经具备包过滤功能。第一代是linux内核1.1版本所使用的AlanCox从BSO Unix中移植过来的ipfw。在2.0的内核中,对ipfw进行了扩展,并且添加了ipfwadm用户工具,所以在2.0的内核中,开始采用ipfwadm来操作内核的包过滤规则。到了2.2版的内核中,添加了帮助用户控制过滤规则的ipchains工具,所以此版本中,linux内核采用了ipchains来控制内核的包过滤规则,后来又发展完成了其名为netfilter的内核框架。发展到2.4.x时,Ipchains被一个全新的包过滤管理工具Iptables所替代,netfilter/iptables可以实现防火墙、NAT和数据包的分割等功能。因此,无论拥有哪个版本的Linux内核,无论选择哪个版本的Linux来构建自己的企业网,都可以利用现有的系统构建出一个理想实用的防火墙。
Linux提供的防火墙软件包内置于linux内核中,是一种基于包过滤型的防火墙实现技术,其中心思想是根据网络层IP包头中的源地址、目的地址以及包类型等信息来控制包的流向,更为彻底的过滤则是要检查包中的源端口、目的端口以及连接状态等信息。
下面将就linux所提供的ipfw、ipchains和iptables三种最为实用的防火墙技术作分析介绍,重点介绍iptables的实现。
4.1 IPFW防火墙技术:
该软件包的全称是Ipfwadm,Ipfwadm程序包提供了建立规则的能力,根据这些规则可以确定允许什么样的包进出本网络。简单说来,防火墙就是一对开关,一个开关允许包通过,另一个开关禁止包通过。现代防火墙系统一般都会附加审计跟踪、加密认证、地址伪装和VPN等多种功能。作为一个安全开关,防火墙可定义的安全策略有两个:

  1. 一切未被允许的都被禁止;
  2. 一切未被禁止的都被允许。
    很显然,上述的两种策略中,策略1的安全性明显高于策略2的,但它是以牺牲灵活性和可访问资源为代价来提高安全性的。Ipfwadm系统提供了IP的封装,它允许用户使用Internet上的一个公共IP地址空间。
    4.2 Ipchains防火墙技术:
    在下一版本的Linux内核中,ipchains取代了ipfwadm,它提供了更为严格的包过滤控制机制,提供了包括包过滤、地址伪装和透明代理在内的完整的防火墙功能。Linux 2.2内核中提供的Ipchains,通过四类防火墙规则列表来提供防火墙规则的控制,这些列表称为防火墙链,它们分别是IP input链、IP output链、IP forward链和user defined链。一个链实际上就是一个规则表,所谓规则,即当被检测的包头符合规则的定义时,就按照预置的设定对该包进行相应的处理。输入链指的是对内连接请求的过滤规则;输出链指的是对外连接请求的过滤规则;转发链是指对内部与外部通信包转发的过滤规则;用户定义链是用户自己定义的规则。
    当一个数据包进入Linux防火墙系统时,Linux内核使用输入链以决定对这个包的操作;如果这个包不被丢弃,内核则使用转发链来决定是否将这个包转发到某个出口;当这个包到达一个出口被发出前,内核使用输出链最后确定是丢弃该包还是转发该包。在上面的过程中,如果输入链已经决定处理这个包,则核心需要决定下一步包应该发到什么地方,即进行路由。如果没找到匹配的设置,则这个包就需要进入目标值指定的下一条链,此时目标值有可能是一条用户自定义链,也有可能是一个特定的值,这些值包括ACCEPT、DENY、REJECT、MASQ、REDIREC和RETURE。其中MASQ通知核心将该包伪装,该值支队转发链和用户自定义链其作用;REDIRECT用来通知核心将包改送到一个本地端口,该值只对输入链和用户自定义链起作用,并且只有UDP和TCP协议才可以使用该值。
    在Linux系统IP链的转发链上可以配置IP伪装。实际上,IP伪装是一个比包过滤策略更安全的解决方案,它不仅能够提供一种安全机制,还同时解决了 Internet中IP地址资源不足的问题。IP伪装使一台计算机在访问Internet时,能够将本台机器的真正IP地址伪装成其它地址。如果连接到 Internet上的一台主机具有IP伪装功能,则这台机器不管是通过局域网,还是PPP拨号都可以与Internet连接。尽管在使用PPP时,这样的主机根本没有自己正式的IP地址。这说明可以将一台主机隐藏在一个网关后面来访问Internet,使得这台主机既实现了对Internet的访问,又实现了其访问对外界的不可见性(即隐藏性)。显然,这种隐藏性使得系统非常安全,因为外界根本意识不到主机的存在,也就不可能对主机实施存取操作,更不能入侵和破解。通常情况下,使用IANA保留的私有地址来进行伪装。
    在防火墙转发链配置IP伪装后,内部网络上的主机向Internet发送访问IP包时,内核将源IP地址换成网关的IP地址,并记录被伪装的IP地址后再转发该IP包。当这个包的Internet应答包从Internet进入网关时,内核执行去除IP伪装的操作,即将目的地址替换成内部地址。通过适当的设置,IP伪装可以在某个网段、某台主机、某个接口、某个协议甚至是某个协议的某些端口上实现,非常灵活。IP伪装可以将内部网络的细节对外部网络屏蔽掉,因此,IP伪装提供了很好的安全性。
    4.3 Iptables防火墙技术:
    相对于2.2内核提供的IP链来说,自2.4版本之后的内核提供了更好的灵活性和可扩展性,它并非是2.2内核中防火墙技术的简单增强,而是一次完全的重新实现,所以相比于之前的版本,其内核提供的防火墙软件在结构上面发生了非常大的变化。与IP链相比, Iptables的检测点变成了5个,并在每个检测点上登记需要处理的函数,登记通过nf-register-hook()函数保存在全局变量nf-hook中来实现。当包到达此检测点时,实现登记的函数按照预先定义好的优先级别来执行。相对于2.2内核提供的IP链来说,Iptables实现的不仅仅是包过滤功能,而是通过Netfilter实现一整套框架结构,在这个框架之上实现包过滤、NAT等模块功能,从而提供更好的可扩展性和灵活性。
    Iptables的系统缺省表为filter,该表包含了INPUT链、FORWARD链和OUTPUT链。每一条链中可以定义一条或数条规则,每一条规则都以如下格式定义:
    条件/处理方式。
    当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件。如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足,则继续检查下一条规则。如果该数据包不符合该链中的任何一条规则,系统就会根据该链预先定义的策略(policy)来处理该数据包。
    Iptables/Netfilter是内置在Linux内核中的,所以可以将相应的软件包编译到内核中,从而完成 Iptables防火墙的安装。Netfilter框架能够在内核2.3.5及以上版本实现。在将软件包重新编译进内核时,要求选择和Netfilter 相关的项目。这些项目通常都是位于“Networking options”子项下。需要注意的是,Iptables和 Ipchains/Ipfwadm是相对立的,在使用Iptables时就不能同时使用Ipchains/Ipfwadm。选择完所需选项后,就可以执行编译操作了。
    Iptables实际上是一个操作过滤规则的工具。利用Iptables工具,可以对Netfilter中的链和规则进行操作。Iptables使用与 IP链基本相同的语法和命令格式,除了对链和规则进行操作外,Iptables还提供其它一些操作,如通过–source/–src/-s指定源地址;通过–destination/–dst/-s指定目的地址;通过–protocol/-p选项指定协议,如-p tcp;使用–in-interface/-i或–out-interface/-o)指定网络接口;指定IP碎片等等。

第5章 linux网络防火墙的架构环境

5.1环境搭建
软件:VMware workstation
版本:7.1.4 build-385536
系统:Red hat enterprise linux 6.0
在这里插入图片描述

图5-1运行界面
5.2主要实验命令:
Iptables包过滤防火墙实现的主要命令参数

  1. 对链的操作
      建立一个新链 (-N)。
      删除一个空链 (-X)。
      改变一个内建链的原则 (-P)。
      列出一个链中的规则 (-L)。
      清除一个链中的所有规则 (-F)。
      归零(zero) 一个链中所有规则的封包字节(byte) 记数器 (-Z)。
  2. 对规则的操作
      加入(append) 一个新规则到一个链 (-A)的最后。
      在链内某个位置插入(insert) 一个新规则(-I),通常是插在最前面。
      在链内某个位置替换(replace) 一条规则 (-R)。
      在链内某个位置删除(delete) 一条规则 (-D)。
      删除(delete) 链内第一条规则 (-D)。
  3. 指定源地址和目的地址
      通过–source/–src/-s来指定源地址(这里的/表示或者的意思,下同),通过–destination/–dst/-s来指定目的地址。可以使用以下四中方法来指定ip地址:
      a. 使用完整的域名,如“www.linuxaid.com.cn”;
      b. 使用ip地址,如“192.168.1.1”;
      c. 用x.x.x.x/x.x.x.x指定一个网络地址,如“192.168.1.0/255.255.255.0”;
    NAT相关的IPTABLES命令语法
    1、指定表
    iptables命令默认的表是filter,要使用nat表,必须指出
    iptables -t nat
    2、指定操作命令
    -A:在所选的链的链尾加入一条规则
    -D:在所选的链中删除一条匹配的规则
    -R:在所选的链中替换一条匹配的规则
    -I:在链内某个位置插入一条新规则
    -L:列出指定链的所有规则
    3、规则匹配器
    1)–source或–src或-s 匹配源地址
    –destination或–dst或-s 匹配目的地址
    匹配地址的书定:
    使用完全域名:www.baidu.com
    使用IP地址:192.168.1.1
    使用192.168.10./255.255.255.0指定一个网络地址
    使用192.168.1.0/24指定一个网络地址(24为掩码,默认的为32,即192.168.1.1=192.168.1.1/32)
    2)匹配网络接口
    对于PREROUTING链,只能用 -i 来匹配进来的网络接口
    对于POSTROUTIN,OUTPUT链,只能用 -o 来匹配出去的网络接口
    3)匹配协议及端口
    -p 匹配协议如udp,tcp
    –sport,–dport 匹配源端口和目的端口
    4、目标动作
    1)对于POSTROUTING链可以使用以下的目标动作
    a)-j SNAT --to-source/–to IP1[-IP2]:[port1 [port2] ]
    –to-source或–to用于指定一个或一个IP地址范围和一个或一段
    可选取的端口号(只能用于UDP,TCP协议)

第6章 linux网络防火墙的实验方法

以下命令需要用root身份
清空防火墙规则
在这里插入图片描述

图6-1root身份进入 清空防火墙规则
iptables -N DOS #新增一条名为DOS的新链用来防范DOS攻击
iptables -A DOS -m limit --limit 100/s -j ACCEPT #接受最大平均流量为每秒100个包
iptables -A DOS -m limit --limit 300/s -j DROP #拒绝最大平均流量为每秒300个包
iptables -A DOS -m limit --limit 310/s -j LOG --log-prefix “DOS”
–log-level 3
#将最大平均流量为每秒310个包记录日志,日志名为DOS,日志级别为3
在这里插入图片描述

图6-2新增一条名为DOS的新链用来防范DOS攻击

允许ip为baidu.com的机访问A机的Web服务,服务监听80端口
在这里插入图片描述
图6-3设置Web服务和服务监听端口

允许ip为122.96.80.81的主机访问本机的SMTP服务, 服务监听25端口
在这里插入图片描述

图6-4设置主机访问本机的SMTP服务,和服务监听端口
Linux NAT 服务器配置
在这里插入图片描述

图6-5 LinuxNAT 服务器配置
将linux服务器配置成NAT服务器,带动另一个linux局域网客户端上Internet
1.清除原有的filter中的规则
在这里插入图片描述

图6-6清除原有的filter中的规则
2.设置防火墙,对内,对外,转发的包设为丢弃。
iptables –P INPUT DROP
iptables –P OUTPUT DROP
iptables –P FORWARD DROP
在这里插入图片描述

图6-7 设置防火墙,对内,对外转发的包为丢弃
3.设置防火墙,对转发的包设为允许通过
iptables –P FORWARD ACCEPT
在这里插入图片描述

图6-8 设置防火墙,对转发的包设为允许通过
4.NAT设置,将nat表的包的源地址伪装成eth0的合法的IP地址
iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE
在这里插入图片描述

图6-9 NAT设置
5.查看nat表的规则
iptables –t nat –L
在这里插入图片描述

图6-10 查看NAT表的规则
6.保存规则
service iptables save
7.重启iptables服务
service iptables restart
在这里插入图片描述

图6-11 重启iptables服务
最后能够上网
在这里插入图片描述

图6-12 能够上网

第7章 总结及进一步研究

7.1 总结
本文首先介绍了网络应用中所主要用到的三个防火墙技术。Linux以其公开的源代码、强大稳定的网络功能和大量的免费资源受到业界的普遍赞扬。Linux防火墙其实是操作系统本身所自带的一个功能模块。通过安装特定的防火墙内核,Linux操作系统会对接收到的数据包按一定的策略进行处理,而用户所要做的,就是使用特定的配置软件(如ipchains)去定制适合自己的“数据包处理策略”。所以本文在介绍了Linux系统的特点之后又进一步介绍了Linux操作系统下的各个版本的防火墙技术,并通过实践,完成了linux系统下的防火墙的配置,并通过实验来验证了相关防火墙技术配置的有效性。
7.2 进一步研究
从以上分析可以知道,防火墙技术经理了包过滤、应用代理网关再到状态检测三个阶段。而这三种技术都有很大的缺陷。
包过滤防火墙它工作在网络层,对数据包的源及目的IP具有识别和控制作用,由于只对数据包的IP地址、TCP/UDP协议和端口进行了分析,故而处理速度较快,但是,其缺点也是非常的明显而且是根本性的。该技术不能防范黑客攻击、不至此应用层协议、对于新出现的威胁更是无法处理,所以该技术太过初级,无法完成保护内网安全的职责。
应用代理网关技术是彻底阻断内网与外网的直接通信,所有通信都必须经应用层代理软件转发,访问者任何时候都不能和服务器建立直接的TCP连接,对数据包的检测能力比较强,但是带来的缺点也非常的突出。应用代理网关技术难于配置,一旦配置出错,将影响到内网的安全防范能力;处理速度非常地慢,不能支持大规模的并发连接,所以对速度要求较高的行业来说,该技术难以实现。
状态检测技术在大为提到安全防范能力的同时也改进了流量的处理速度,其采用了一系列优化的技术,使得防火墙性能大幅度得到提升,能应用在各个网络环境中,所以一般高性能的防火墙都采用了状态检测技术。
所以从各个技术的优缺点以及当今社会的现状发展趋势看,我们可以进一步研究如何让防火墙在远程办公中有效地抵抗外部攻击的同时又能合法的实现远程访问,实现更细粒度的访问控制;黑客的攻击是网络防火墙防御的主要职责,从受到攻击的协议和端口来看,http协议是最受攻击的协议(相应的端口为80端口),所以进一步的研究方向可以考虑在现有的防火墙产品中,尽可能地关闭80端口;能够进行数据包的深度检测,防火墙应该能够分辨并组织数据包的恶意行为,包检测技术的方案是需要增加签名检测 从而分辨出正常和异常的数据流。所以我们可以进一步实现这些功能。与此同时,在当前防火墙性能不减的前提下,能够进一步提高其处理的速度也是我们进一步研究的方向。

参考文献

[1] 黎连业. 防火墙及应用技术. 北京:清华大学出版社,2005-10-19
[2] 王斌. 防火墙与网络安全——入侵检测和VPNs.北京:清华大学出版社,2005-5-13
[3] 包过滤技术.http://baike.baidu.com/view/3026687.htm#sub3026687
[4] 李洋. Linux安全技术内幕. 北京:清华大学出版社,2010-6-7
[5] 刘晓辉. 交换机·路由器·防火墙. 北京:电子工业出版社,2007-08

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/195524.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

行业分析:2023年木炭行业市场需求及发展前景

木炭是一种燃料名称。是木材或木质原料经过不完全燃烧,或者在隔绝空气的条件下热解,所残留的深褐色或黑色多孔固体燃料。木炭产品主要分为白炭、黑炭、活性炭、机制炭等四大类。 木炭是保持木材原来构造和孔内残留焦油的不纯的无定形碳。中国商代的青铜器…

【每日OJ —— 101. 对称二叉树】

每日OJ —— 101. 对称二叉树 1.题目:101. 对称二叉树2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目:101. 对称二叉树 2.解法 2.1.算法讲解 1.该题是判断二叉树是否对称,关键在于,左子树等于右子树,而所给的…

Java手写字典树(Trie树),实现敏感词过滤

1.简介 字典树:也叫做前缀树,是一种高效的存储、配对字符串的数据结构,存储过程如下: 假设我们有单词:app、apple、cat。如果存在链表中: ["app"、"apple"、"api"、"…

Linux 文件查找

1 文件查找 在文件系统上查找符合条件的文件 文件查找:locate,find 1.1 locate 工作特点: 格式: Usage: locate [OPTION]... [PATTERN]...常用选项: -i :不区分大小写的搜索 -n N :只列举前…

python程序将部分文件复制到指定目录

geotools-28.2中的lib一共有264个jar包,但我只想将部分100个左右jar包引导我的环境中,那个就需要从目录中找出想要的那100个jar,手动挑选太费时间,我简单的写了个小脚本来实现。 我将想要的jar文件名和路径存放到txt中&#xff0…

Python编程的经典示例及应用

前言 Python作为一种简洁而强大的编程语言,提供了许多经典示例以展示其语言特性和功能。在本文中,我们将探讨一些经典的Python示例,并展示它们在实际应用中的价值。通过这些示例,读者可以深入了解Python的灵活性和易用性&#xff…

js选中起始时间使用标准时间毫秒值计算一年后的当前少一天的日期(并考虑闰年)

js选中起始时间使用标准时间毫秒值计算一年后的当前少一天的日期 实际代码里面带入默认日期’20230301’这个特殊日期&#xff0c;因为下一年的当前日期少一天为闰年的2月会有29天&#xff0c;使用特殊值校验代码效果图 HTML部分代码 <el-button click"chengTime()&q…

C# WPF上位机开发(带配置文件的倒计时软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们写了倒计时软件&#xff0c;但是不知道大家有没有发现&#xff0c;这个软件起始有一个缺点&#xff0c;那就是倒计时的起始时间都是硬编码…

Spring Security 自定义异常失效?源码分析与解决方案

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

分享73个节日PPT,总有一款适合您

分享73个节日PPT&#xff0c;总有一款适合您 73个节日PPT下载 链接&#xff1a;https://pan.baidu.com/s/1FG9Y-9yR31Y-fs3zxKI4Pg?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不…

LeetCode | 572. 另一棵树的子树

LeetCode | 572. 另一棵树的子树 OJ链接 我们需要判断两棵二叉树是否相同&#xff0c;如果再判断的的时候不同我们就直接返回false&#xff0c;否则就返回true然后再检查左子树和右子树里面是否存在subRoot子树~~ bool isSameTree(struct TreeNode* q, struct TreeNode* p) {…

C语言从入门到实战——常用内存函数的了解和模拟实现

常用内存函数的了解和实现 前言1. memcpy使用和模拟实现2. memmove使用和模拟实现3. memset函数的使用4. memcmp函数的使用 前言 内存函数&#xff08;memory functions&#xff09;指的是控制计算机内存操作的函数 1. memcpy使用和模拟实现 void * memcpy ( void * destinat…

uniapp:如何使用uCharts

目录 第一章 前言 第二章 安装插件uCharts 第三章 使用uCharts 第四章 注意 第一章 前言 需求&#xff1a;这是很久之前的一个项目的需求了&#xff0c;当时我刚接触app&#xff0c;有这么一个需求&#xff0c;在uniapp写的app项目中做一些图表统计&#xff0c;最开始以为…

EasyRecovery2024激活码秘钥

EasyRecovery从&#xff08;易恢复2024&#xff09;支持恢复不同存储介质数据&#xff0c;在Windows中恢复受损和删除文件,以及能检索数据格式化或损坏卷&#xff0c;甚至还可以从初始化磁盘。同时&#xff0c;你只需要最简单的操作就可以恢复数据文件&#xff0c;如&#xff1…

在java中如何解决in unnamed module @0x602ff1d9得问题

在日常得java开发中&#xff0c;点击maven得编译得时候会出现&#xff1a;class lombok.javac.apt.LombokProcessor (in unnamed module 0x58313b33) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module…

Vue3实现滚动到容器底部时发送请求,加载新数据

问题来源 在项目中出现了需要在容器滚动到底部时&#xff0c;加载新的数据的需求&#xff0c;以下是解决的方案笔记 解决 画了个流程图&#xff1a; 如图&#xff0c;先添加一个动态加载的图标&#xff0c;还有全部数据载完的《到底啦...》 大概这么个样子&#xff0c;之后呢…

PMP备考必看|浅谈PMP证书的价值,PMP考试详细全流程

作为已经在项目管理领域摸爬滚打五年的资深项目经理&#xff0c;我可以诚实的告诉大家&#xff0c;在项目管理领域拥有丰富项目管理经验的人都知道&#xff0c;很多公司在发布招聘信息时都会要求申请者持有PMP证书&#xff0c;这些证书在项目经理岗位的要求中经常出现。 在实际…

【PyTorch】softmax回归

文章目录 1. 模型与代码实现1.1. 模型1.2. 代码实现 2. Q&A 1. 模型与代码实现 1.1. 模型 背景 在分类问题中&#xff0c;模型的输出层是全连接层&#xff0c;每个类别对应一个输出。我们希望模型的输出 y ^ j \hat{y}_j y^​j​可以视为属于类 j j j的概率&#xff0c;然…

ArcGIS提示当前许可不支持影像服务器

1、问题&#xff1a; 在用ArcGIS上处理影像栅格数据时&#xff08;比如栅格数据集裁剪、镶嵌数据集构建镶嵌线等&#xff09;经常会出现。 无法启动配置 RasterComander.ImageServer <详信息 在计算机XXXXX上创建服务器对象实例失败 当前许可不支持影像服务器。 ArcGIS提示当…

Python的模块与库,及if __name__ == ‘__main__语句【侯小啾Python基础领航计划 系列(二十四)】

Python的模块与库,及if name == ‘__main__语句【侯小啾Python基础领航计划 系列(二十四)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…