防火墙的工作原理

2024-05-02

防火墙的工作原理(精选四篇)

防火墙的工作原理 篇1

随着计算机网络技术的飞速发展,网络安全问题日益突出,防火墙技术也越来越受到人们关注。在一些信息敏感场所,需要自行设计与开发符合特定需求的防火墙系统。而Linux提供了基于内核的Netfilter框架,具有通用性和可扩展性,使开发人员可以结合不同的网络安全需求,设计并实现所需的防火墙系统。

当前Linux防火墙的开发主要基于Netfilter框架。一般有两种开发方式,分别是通过用户态的配置工具iptables配置Netfilter与编写LKM(Loadable Kernel Module)实现。

2 Netfilter框架原理

IPV4协议实现对Netfilter框架的支持,IP数据包在协议栈的处理路径上,选择了5个参考点。在这5个参考点上,Nerfilter框架定义了一系列钩子(HOOK)函数,这些钩子函数在数据包流过协议栈的几个关键点时被调用。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。内核任何模块可以对每种协议的一个或多个钩子进行注册实现挂接,当某个数据包被传给Netfilter框架时,内核能检测是否有任何模块对该协议和钩子函数注册过。若有注册,则通过调用该模块注册时使用的回调函数,这些模块就有机会检查、修改该数据包、丢弃该数据包或者将该数据包传入用户空间队列。

(1)PRE_ROUTING:当防火墙收到一个数据包时,首先会调用PRE_ROUTING处注册的钩子函数。

(2)LOCAL_IN:如果数据包的目的地址是本机,那么数据包会被传递到LOCAL_IN处注册的钩子函数。

(3)FORWARD:如果数据包的目的地址不是本机,同时,发现存在通往目的地址的路由,那么数据包将会传递到FORWARD处注册的钩子函数。

(4)LOCAL_OUT:当本地进程向外发送一个数据包时,数据包将会首先通过LOCAL_OUT处的钩子函数。

(5)POST_ROUTING:当FORWARD和LOCAL_OUT传递出来的数据包经过路由之后,发现有通往目的地址的路由,数据包将被传递到POST_ROUTING处注册的钩子函数。通常,POST_ROUTING与PRE_ROUTING结合可以实现NAT功能。

每一个钩子函数在处理完数据包可以有5个返回值,这些返回值决定数据包的命运,它们是:

(1)NF-ACCEPT:通知Netfilter让数据包继续传递。

(2)NF_DROP:通知Netfilter将丢弃该数据包。

(3)NF_STOLEN:通知Netfilter忘记该数据包,不再继续传递。

(4)NF_QUEUE:将该数据包排队到用户空间去,由用户空间程序处理。

(5)NF_REPEAT:继续在该钩子点进行规则匹配出来。

前面讲过实现Netfilter防火墙有两种方式,一种是使用用户态配置工具Iptables直接配置内核态的Netfilter。该方法是目前实现Linux防火墙较多的方式。第二种方法,即通过在HOOK点上挂接自己的函数对过往的数据包进行处理。Netfilter使用一个二维数组nf_hook[NPROTO][NF_MAX_HOOKS]存储需要调用的钩子函数。一维为协议族,目前协议族支持AF_INET及AF_INET6两类;二维是各个函数调用点入口,存储的是一个双向链表指针。每个链表的节点都是一个nf_hook_ops结构,nf_hook_ops实际存储了钩子函数的内容。

3 用iptables配置简单的防火墙

iptables是一种工具,也称为用户空间(userspace),用来插入、删除、修改规则链中的规则,它包括filter,nat及mangle表格及以后扩展的表模块。下面介绍防火墙的简单配置。

我们以设置Filter表的防火墙为例,首先清除现在Filter的所有规则。

首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链

如果做了邮件服务器,开启25,110端口。

如果你还做了其他的服务器,需要开启哪个端口,照写就行了。

下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.。减少不安全的端口连接

4 结论

随着互联网技术不断的发展,网络本身的安全面临着重大的挑战,随之而来的信息安全问题也日益突出。由于Linux是开放源代码的免费正版软件,而且在稳定性、效率和安全性等方面具有较强的优势,因此采用Linux网络操作系统作为服务器的用户也越来越多,分析和研究Linux的防火墙有着重要的现实意义。

参考文献

[1]WcsNoona几IdoDubrawsky.防火墙基础[M].北京:人民邮电出版社,2007,6.

防火墙的核心技术及工作原理 篇2

防火墙是一种高级访问控制设备,置于不同网络安全域之间,它通过相关的安全策略来控制(允许、拒绝、监视、记录)进出网络的访问行为。防火墙的包含如下几种核心技术:

 包过滤技术

包过滤技术是一种简单、有效的安全控制技术,它工作在网络层,通过在网络间相互连接的设备上加载允许、禁止来自某些特定的源地址、目的地址、TCP端口号等规则,对通过设备的数据包进行检查,限制数据包进出内部网络。

包过滤的最大优点是对用户透明,传输性能高。但由于安全控制层次在网络层、传输层,安全控制的力度也只限于源地址、目的地址和端口号,因而只能进行较为初步的安全控制,对于恶意的拥塞攻击、内存覆盖攻击或病毒等高层次的攻击手段,则无能为力。

 应用代理技术

应用代理防火墙工作在OSI的第七层,它通过检查所有应用层的信息包,并将检查的内容信息放入决策过程,从而提高网络的安全性。

应用网关防火墙是通过打破客户机/服务器模式实现的。每个客户机/服务器通信需要两个连接:一个是从客户端到防火墙,另一个是从防火墙到服务器。另外,每个代理需要一个不同的应用进程,或一个后台运行的服务程序,对每个新的应用必须添加针对此应用的服务程序,否则不能使用该服务。所以,应用网关防火墙具有可伸缩性差的缺点。

 状态检测技术

状态检测防火墙工作在OSI的第二至四层,采用状态检测包过滤的技术,是传统包过滤功能扩展而来。状态检测防火墙在网络层有一个检查引擎截获数据包并抽取出与应用层状态有关的信息,并以此为依据决定对该连接是接受还是拒绝。这种技术提供了高度安全的解决方案,同时具有较好的适应性和扩展性。状态检测防火墙一般也包括一些代理级的服务,它们提供附加的对特定应用程序数据内容的支持。

状态检测防火墙基本保持了简单包过滤防火墙的优点,性能比较好,同时对应用是透明的,在此基础上,对于安全性有了大幅提升。这种防火墙摒弃了简单包过滤防火墙仅仅考察进出网络的数据包,不关心数据包状态的缺点,在防火墙的核心部分建立状态连接表,维护了连接,将进出网络的数据当成一个个的事件来处理。主要特点是由于缺乏对应用层协议的深度检测功能,无法彻底的识别数据包中大量的垃圾邮件、广告以及木马程序等等。

 完全内容检测技术

防火墙的工作原理 篇3

数据包过滤技术工作在OSI网络参考模型的网络层和传输层,它是个人防火墙技术的第二道防护屏障。数据包过滤技术在网络的入口目的地址、端口号和协议类型等标志确定是否允许通过。只有满足过滤条件的数据包才被转发到相应的目的地,其余数据包则被从数据流中丢弃。

所谓的数据包过滤技术。又称“报文过滤”技术,它是防火墙最传统、最基本的过滤技术。防火墙的包过滤技术就是对通信过程中数据进行过滤,使符合事先规定的安全规则的数据包通过,而使那些不符合安全规则的数据包丢弃。这个安全规则就是防火墙技术的根本,它是通过对各种网络应用、通信类型和端口的使用来规定的。

包过滤方式是一种通用、廉价和有效的安全手段。它的优点是它对于用户来说是透明的,处理速度快而且易于维护,通常被做为一道基本防线。不用改动客户机和主机上的应用程序,因为它工作在网络层和传输层,与应用层无关。之所以通用,是因为它不是针对各个具体的网络服务采取特殊的处理方式,适用于所有网络服务;之所以廉价,是因为大多数路由器都提供数据包过滤功能,所以这类防火墙多数是由路由器集成的;之所以有效,是因为它能很大程度上满足了绝大多数企业安全要求。

防火墙对数据的过滤,首先是根据数据包中包头部分所包含的源IP地址、目的IP地址、协议类型(TCP包、UDP包、ICMP包)、源端口、目的端口及数据包传递方向等信息,判断是否符合安全规则,以此来确定该数据包是否允许通过。

包过滤技术最先使用的是在路由器上进行的,它也是最原始的防火墙方案。实现起来非常容易,只需要在原有的路由器上进行适当的配置即可实现防火墙方案。在整个防火墙技术的发展过程中,包过滤技术出现了两种不同版本,称为“第一代静态包过滤”和“第二代动态包过滤”。

(1)第一代静态包过滤类型防火墙。这类防火墙几乎是与路由器同时产生的,它是根据定义好的过滤规则审查每个数据包,以便确定其是否与某一条包过滤规则匹配。过滤规则基于数据包的报头信息进行制订。报头信息中包括IP源地址、IP目标地址、传输协议(TCP、UDP、ICMP等等)、TCP/UDP目标端口、ICMP消息类型等。

(2)第二代动态包过滤类型防火墙。这类防火墙采用动态设置包过滤规则的方法,避免了静态包过滤所具有的问题。这种技术后来发展成为包状态监测技术。采用这种技术的防火墙对通过其建立的每一个连接都进行跟踪,并且根据需要可动态地在过滤规则中增加或更新条目。

包过滤技术的应用非常广泛,因为包过滤技术相对较为简单,只需对每个数据包与相应的安全规则进行比较即可得出是否通过的结论,所以防火墙主机CPU用来处理包过滤的时间非常短,执行效率也非常高。而且这种过滤机制对用户来说完全是透明的,根本不用用户先与防火墙取得任何合法身份,符合规则的通信,用户根本感觉不到防火墙的存在,使用起来很方便。

2 应用网关技术

应用级网关可以工作在OSI七层模型的任一层上,能够检查进出的数据包,通过网关复制传递数据,防止在受信任服务器和客户机与不受信任的主机间直接建立联系。应用级网关能够理解应用层上的协议,能够做复杂一些的访问控制,并做精细的注册。通常是在特殊的服务器上安装软件来实现的。

电路级网关也是一种代理。电路级网关用来监控受信任的客户或服务器与不受信任的主机间的TCP握手信息,这样来决定该会话是否合法,电路级网关是在OSI模型中会话层上来过滤数据包,这样比包过滤防火墙要高两层。另外,电路级网关还提供一个重要的安全功能,即网络地址转移(NAT)将所有公司内部的IP地址映射到一个“安全”的IP地址,这个地址是由防火墙使用的。有两种方法来实现这种类型的网关,一种是由一台主机充当筛选路由器而另一台充当应用级防火墙。另一种是在第一个防火墙主机和第二个之间建立安全的连接。这种结构的好处是当一次攻击发生时能提供容错功能。

3 地址翻译技术

地址翻译技术NA是将一个IP地址用另一个IP地址代替。地址翻译技术主要模式有以下几种:

(1)静态翻译。按照固定的翻译表,将主机的内部地址翻译成防火墙的外网接口地址。(2)动态翻译。为隐藏内部主机或扩展的内部网络地址之间,一个大的用户群共享一个或一组小的Internet IP地址。(3)负载平衡翻译。一个IP地址和端口被翻译为同等配置的多个服务器。当请求到达时,防火墙按照一个算法平衡所有连接到内部的服务器。这样,向一个合法的IP地址请求,实际上有多台服务器在提供服务。(4)网络冗余翻译。多个连续被附结在一个NAT防火墙上,防火墙根据负载和可用性对连接进行选择和使用。

4 状态检测技术

状态检测防火墙采用基于连接的状态检测机制,将属于同一连接的所有包作为一个整体的数据流看待,构成连接状态表,通过规则表与状态表的共同配合,对表中的各个连接因素加以识别。

当一个状态检测防火墙收到一个初始化TCP连接的SYN包该包被防火墙规则库检查,如果检查了所有规则后,该包都没有被接受,那么拒绝该次连接。如果该包被接受,那么本次会话被记录到状态监测表里。并设置一个合适的时间溢出值,当防火墙收到返回的含有SYN/ACK标志的确认连接数据包,防火墙调整时间溢出值到合适大小,否则拒绝服务攻击马上就会将防火墙陷入瘫痪。随后的数据包(没有带SYN标志)就和该状态监测表的内容进行比较,通过比较源地址、目的地址和端口号来区分是否是同一个会话。如果该数据包是状态表内的会话的一部分,该包被接受,如果不知则该包被丢弃。这种方式提高了系统性能,因为每个数据包不是和规则库比较,而是和状态表比较,只有在SYN数据包到来时才和规则库比较。

5 结语

综上所述,多区域防火墙系统就是采用多种防火墙技术将网络根据不同功能划分部同区域进行防护,对网络中传送的信息进行重重检测,鉴定其安全性,从而来对网络进行层层防护。其还可以将单一防火墙功能集中度较高,多任务效率过低的问题解决,通过分散处理,使处理等高效,抗攻击性更强,这样就能更好的控制受保护的网络。

摘要:本文结合笔者多年工作的实践经验,对目前安全网络构建中防火墙技术原理进行了深入的比较与分析,谨供大家作参考之用。

防火墙原理 篇4

首先,我们需要了解一些基本的防火墙实现原理,防火墙目前主要分包过滤,和状态检测的包过滤,应用层代理防火

墙。但是他们的基本实现都是类似的。

│ │---路由器-----网卡│防火墙│网卡│----------内部网络│ │

防火墙一般有两个以上的网络卡,一个连到外部(router),另一个是连到内部网络。当打开主机网络转发功能时,两个网卡间的网络通讯能直接通过。当有防火墙时,他好比插在网卡之间,对所有的网络通讯进行控制。

说到访问控制,这是防火墙的核心了:),防火墙主要通过一个访问控制表来判断的,他的形式一般是一连串的如下规则:

1 accept from+ 源地址,端口 to+ 目的地址,端口+ 采取的动作

2 deny ...........(deny就是拒绝。。)

3 nat ............(nat是地址转换。后面说)

防火墙在网络层(包括以下的炼路层)接受到网络数据包后,就从上面的规则连表一条一条地匹配,如果符合就执行预先安排的动作了!如丢弃包。。。。

但是,不同的防火墙,在判断攻击行为时,有实现上的差别。下面结合实现原理说说可能的攻击。

二、攻击包过滤防火墙

包过滤防火墙是最简单的一种了,它在网络层截获网络数据包,根据防火墙的规则表,来检测攻击行为。他根据数据包的源IP地址;目的IP地址;TCP/UDP源端口;TCP/UDP目的端口来过滤!!很容易受到如下攻击:

1 ip 欺骗攻击:

这种攻击,主要是修改数据包的源,目的地址和端口,模仿一些合法的数据包来骗过防火墙的检测。如:外部攻击者,将他的数据报源地址改为内部网络地址,防火墙看到是合法地址就放行了:)。可是,如果防火墙能结合接口,地址来匹

配,这种攻击就不能成功了:(

2 d.o.s拒绝服务攻击

简单的包过滤防火墙不能跟踪 tcp的状态,很容易受到拒绝服务攻击,一旦防火墙受到d.o.s攻击,他可能会忙于处理,而忘记了他自己的过滤功能。:)你就可以饶过了,不过这样攻击还很少的。!

3 分片攻击

这种攻击的原理是:在IP的分片包中,所有的分片包用一个分片偏移字段标志分片包的顺序,但是,只有第一个分片包含有TCP端口号的信息,

当IP分片包通过分组过滤防火墙时,防火墙只根据第一个分片包的Tcp信息判断是否允许通过,而其他后续的分片不作防火墙检测,直接让它们通过。

这样,攻击者就可以通过先发送第一个合法的IP分片,骗过防火墙的检测,接着封装了恶意数据的后续分片包就可以直接穿透防火墙,直接到达内部网络主机,从而威胁网络和主机的安全。

4 木马攻击

对于包过滤防火墙最有效的攻击就是木马了,一但你在内部网络安装了木马,防火墙基本上是无能为力的。

原因是:包过滤防火墙一般只过滤低端口(1-1024),而高端口他不可能过滤的(因为,一些服务要用到高端口,因此防火墙不能关闭高端口的),所以很多的木马都在高端口打开等待,如冰河,subseven等。。。

但是木马攻击的前提是必须先上传,运行木马,对于简单的包过滤防火墙来说,是容易做的。这里不写这个了。大概就是利用内部网络主机开放的服务漏洞。

早期的防火墙都是这种简单的包过滤型的,到现在已很少了,不过也有。现在的包过滤采用的是状态检测技术,下面谈谈状态检测的包过滤防火墙。

三、攻击状态检测的包过滤

状态检测技术最早是checkpoint提出的,在国内的许多防火墙都声称实现了状态检测技术。

可是:)很多是没有实现的。到底什么是状态检测?

一句话,状态检测就是从tcp连接的建立到终止都跟踪检测的技术。

原先的包过滤,是拿一个一个单独的数据包来匹配规则的。可是我们知道,同一个tcp连接,他的数据包是前后关联的,先是syn包,-》数据包=》fin包。数据包的前后序列号是相关的。

如果割裂这些关系,单独的过滤数据包,很容易被精心够造的攻击数据包欺骗!!!如nmap的攻击扫描,就有利用syn包,fin包,reset包来探测防火墙后面的网络。!

相反,一个完全的状态检测防火墙,他在发起连接就判断,如果符合规则,就在内存登记了这个连接的状态信息(地址,port,选项。。),后续的属于同一个连接的数据包,就不需要在检测了。直接通过。而一些精心够造的攻击数据包由于没有在内存登记相应的状态信息,都被丢弃了。这样这些攻击数据包,就不能饶过防火墙了。

上一篇:医院床位规模下一篇:现金流量控制