




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录摘 要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 被屏蔽子网185 防火墙的设计与实现205.1 网络结构205.2 防火墙的实现要求205.3 防火墙的实现原理215.4 防火墙的建立过程236 总结26参考文献27Linux个人防火墙的设计与实现学生姓名:王涛 指导老师:肖晓丽摘 要 防火墙在配置上能够防止来自“外部”世界未经授权的交互式登录。这大大有助于防止破坏者登录到你网络中的计算机上。本课程设计介绍基于Netfilter/Iptables的包过滤防火墙的实现原理。对Linux系统、TCP/IP的相关知识及Iptables语法做了介绍。详细介绍了Iptables命令的使用举例,通过实例介绍了基于Netfilter/Iptables的包过滤防火墙的配置过程。关键词 网络操作系统;包过滤;防火墙 王涛Linux个人防火墙的设计与实现 第28页 共30页1 引言1.1 课程设计的意义随着网络的发展, 网络的资源共享, 网上办公,电子商务等蓬勃发展, 越来越多的公司和政府部门在公司或部门范围内组建起自己的计算机网络系统(Intranet), Intranet3的技术优势, 给公司带来了高效的工作效率的同时, 也带来了全新的安全问题。全球信息安全方面的研究工作者就此问题展开了广泛而深入的研究,其中防火墙技术1是近年发展起来的一种网络安全技术。顾名思义,它是在受保护网与外部网之间构造一个保护层,把攻击者挡在受保护网的外面。这种技术强制所有内外网的连接都必须经过此保护层,在此进行检查和连接,从而保护了受保护网资源免遭外部非法入侵。它通过监测、限制或更改跨越防火墙的数据流,尽可能地对外部网络屏蔽有关受保护网络的信息和结构来实现对网络的安全保护。 本文将首先从Intranet的安全性入手, 分析Intranet面临的安全问题,讨论Intranet安全设计需求,然后详述防火墙的背景知识和关键技术,最后重点介绍我们提出的基于Linux平台的复合防火墙5的设计和实现。 1.2 课程设计的目的本课程设计设主要目的是在Linux操作系统下完成基于Netfilter/Iptables的包过滤防火墙的设计与实现。Internet等网络服务给人们的生活带来极大便利的同时也存在很多隐患,学会基于Netfilter/Iptables6的包过滤防火墙的配置就能在一定程度上有效地抵御来自网络上的攻击。通过完成课程设计的过程,学习包过滤防火墙1的相关知识,同时也深化对这学期Linux课程的学习。1.3 Linux防火墙的简单介绍netfilter/iptables是Linux系统提供的一个非常优秀的防火墙工具,它完全免费、功能强大、使用灵活、占用系统资源少,可以对经过的数据进行非常细致的控制。本节首先介绍有关iptables防火墙的基本知识,包括netfilter框架、iptables防火墙结构与原理、iptables命令格式等内容。2 Linux 防火墙的功能目前市场上有许多商用防火墙软件出售,但它们大多价格高昂,使许多个人及小企业用户难以承受。Linux 的出现给了我们一个新的选择。它提供了一套完全免费的解决方案,其内置防火墙功能非常强大,甚至超过了许多昂贵的商用软件。 2.1 包过滤功能 根据数据包的包头中某些标志性的字段,对数据包进行过滤。当数据包到达防火墙时,防火墙根据包头中的某些字段中的一些或全部进行判断,决定接受还是丢弃数据包。包过滤可能发生在以下几个时刻:接收到数据包时,发送数据包时以及转发数据包时。Linux中过滤包的方法如下: (1)将包头和过滤规则逐一进行匹配。 (2)第一条与包匹配的规则将决定以下采取的行动:首先,此规则指定的策略将被应用到该包上。应用在一个包的策略包括以下几种:接受(Accept),即允许包通过该过滤器;抛弃(Reject),即丢掉该包并发一个“主机不可到达”的 ICMP报文回发送者;拒绝(Deny),即丢掉该包且不发任何返回信息。其次,修改此规则对应的包和字节计数器的值;再次,一些关于包的信息会有选择性地被写入日志中。有的规则中可能含有参数来定义如何改写包头的服务类型(TOS)字段,用于确定不同包的优先级。 (3)如果没有与包相匹配的过滤规则,则将对该包采取缺省的过滤规则。Linux 的包过滤规则可包含如下一些信息: 源地址和目的地址以及子网掩码,其中子网掩码中的 0 表示可以匹配任何地址; 包的类型可以是 TCP,UDP,ICMP4 或“any”; 源和目的端口号,一条规则中可以指定 10 个以上的端口,也允许指定端口范围; ICMP报文类型; 包中的 ACK和 SYN标志3,这是为了防止在某个特定方向上建立新的链接; 某块网卡的名字或 IP地址,这样可以指定在特定的网卡上进出包; 指定是否修改包头的 TOS字段; 用一个标志来确定包的一些基本信息是否要被写入日志中。 1.2 代理服务功能 一个完整的防火墙解决方案不仅包括包过滤器,而且应该包括某种类型的应用层代理服务器。所谓代理服务,是指在防火墙上运行某种软件(称为代理程序),如果内部网需要与外部网通信,首先要建立与防火墙上代理程序的连接,把请求发送到代理程序;代理程序接收该请求,建立与外部网相应主机的连接,然后把内部网的请求通过新连接发送到外部网相应主机。反之亦然。概括的说,就是内部网和外部网的主机之间不能建立直接的连接,而是要通过代理服务进行转发。代理服务器具有用户级的身份验证,完备的日志记录和帐号管理等较包过滤器更加安全的功能。然而,许多代理机制需要客户端修改软件或修改用户接口,使用户意识到正在使用代理服务器。而 Linux 内核支持透明代理服务功能,透明代理用一种完全透明的方式,将一个经过本防火墙的连接重定向到本地代理服务器。客户端(用户和软件)完全不知道他们的连接被一个代理进程处理,他们认为自已在直接和指定的服务器对话。 1.3 包伪装功能 Linux 核心提供了一个用于防火墙解决方案的附加功能:IP 包伪装。IP 包伪装是 Linux 中的一种网络功能,它只能用于TCP/UDP包,它能使没有Internet地址的主机通过有Internet地址的主机访问Internet。如果一台 Linux 服务器用包伪装功能连接到 Internet 上,那私接上它的电脑即使没有获得正式指定的IP地址也可以接入Internet.这些电脑可以隐藏在Linux服务器后面存取Internet上的信息而不被发现,看起来就好象是服务器在使用 Internet。Linux 服务器实现代理功能的方法如下:当一个内部主机向外发包时,Linux 服务器在转发此IP包之前,用自已 IP地址替换此包的源 IP地址,并临时产生一个本机端口号来替换此包的TCP/UDP 头中的源端口号;同时,内核会记录下此替换。当外部的返回包到来时(送往防火墙主机的临时端口),服务器能自动识别它,将此返回包的 IP 地址和端口号替换成内部主机的地址和端口号,发给内部主机。分组过滤方式如下图2.1所示。 图2.1 分组过滤示意图通过这种 IP 包伪装方式,Linux 方便地实现了“代理”功能。从外部看来,所有包的收发都是针对此 Linux 主机的,所以具有很好的安全性。3 Linux 防火墙技术3.1 Linux 防火墙技术的发展Ipchains是linux3的防火墙配置工具,以前叫Ipfwadm,版本的更新非常快,现在的版本号是1.3.10。相对于Ipfwadm来讲,Ipchains更容易配置,且功能更强大。最近,Linux又推出新一代防火墙工具Iptable,但是其运行还不稳定。3.2 利用Linux 实现路由和包过滤Linux是一种可以运行在PC上的网络操作系统,对于硬件的要求低,稳定性高,有良好的伸缩性。Linux已内置了路由和防火墙功能。在2.2内核以后Linux推出的技术是Ipchains,在2.4内核版本后运行的技术是Iptables,它继续兼容Ipchains.3.3 Ipchains原理及简介Ipchains14即IP链,是由IP防火墙管理程序ipfwadm发展而来。从根本上说,Ipchains就是一种包过滤器。Ipchains(IP链) 作为Linux核心的一部分,当核心启动时,Ipchains也启动若干个规则表,也叫链。包过滤器实际上是一段程序,它检查IP包的包头,决定包的命运。它可以丢弃(DENY)这些包(就好像没收到)、接受(ACCEPT)或拒绝(REJECT)包(如DENY,但它告诉包的发送者已经接受)。命令ipchains 用于过滤和地址转换规则的建立,维护,及检查。这些防火墙规则15可被分为三种不同的类型: input链、 output链和forward链,过滤和地址转换的控制基于这三种类型的规则设置。 Input链是指从防火墙主机外部通过防火墙某块网卡进入防火墙主机的IP包的规则集合。 Output链是指从防火墙主机通过防火墙某块网卡出到防火墙主机外部的IP包的规则集合。 Forward链是指防火墙主机内部从某块网卡转发到另一网卡的IP包的规则集合。当一个包从Internet进入配置了防火墙的linux的主机,内核使用输入链决定该包的取舍。如果该包没有被丢弃,则内核继而调用转发链决定是否将该包发送到某个出口,最后当包要被发出前,内核通过输出链来做决定。 一个链就是一个规则(Rule)表。规则的意思是:如果包头符合规则的定义,就按预先的设定对包作某种处理。如果包与此规则不相符,就与下一个规则比较。最后,那么核心按预定的策略决定该做什么。在安全防护系统中,策略通常告诉核心拒绝或丢弃此包。图3.1说明了一个包进入一台机器的流程16。Packet In ChecksunC DENY Sanity OutputChainForwardChainInput Chain Chain DENY DENY/REJECTDemasqueradeedRoutingDecision Y Masquerad?Local?I/OInterfaceLocalProcess Y N N DENY/REJECT DENY/REJECT Packet Out 图3.1 包进入机器的流程(1)checksum:当一个包进来时,内核首先检查它是不是被篡改。主要是检查效验码。(checksum)如果效验码不对,则此包被拒绝。 (2)sanity:写在每条防火链的前面,特别是input链。主要是检验那些不规范的包。如果包被sanity拒绝,则在syslog文件中有记载。 (3)input:包进入input链,按照上面所说的一条链中的包的流程来走。是被拒绝,否定还是被接受,重定向等。 (4)Demasqerade:包被接受。此包是由原来的包经过伪装后的包则解伪装。(5)Routing Decision:通过路由机制判断包的目的地址,是本机器的还是需要转发给其他远程机器的。 (6)Local Process:如果包的目的地是本机器。则直接送到output链。 (7)Lo interface:如果包是从local process传来的,则它从output链中出来后interface被改为lo,然后再从新被送到input链,以接口是lo的身份再一次通过各个防火链。(8)forward:如果是需要转发的包则进入forward链。forward链对那些需要转发的包进行详细的检查,通过了再进行转发。 (9)output:此链核对出去的包的详细信息,若符合,则让它通过。 3.4 源代码分析 Ipchains内置的规则链如何处理接受的包,从而完成过滤任务,这我们必须从源代码进行分析。为加速网络的处理速度,Linux内核中的网络部分采用统一的的缓冲区结构skbuff17,各层协议间通过对skbuff的操作来完成各层协议的封装和拆包。一个个单独的skbuff被组织成双向链表的形式。网卡接收到的数据帧分配一块内存,然后将数据整理成skbuff 的结构。在网络协议处理的时候,数据均以skbuff的形式在各层之间传递、处理。Skbuff的强大功能在于它提供了众多指针,可以快速定位各层协议的协议头位置;它也同时保留了许多数据包信息(如使用的网络设备等),以便协议层根据需要灵活应用。对IP包过滤的实现在IP层进行,在IP协议层有3个关键的函数ip_rev( ),ip_forward( ),ip_output( )18,分别管理IP层的接收,转发和发送工作。Ipchains中的3种内置规则链分别对应作用于这3个函数。下面我们通过对这些函数的介绍,进一步明确Ipchains的工作流程。Ip_rev( )是IP层的接收函数,由它来处理网卡接收到的数据包,它首先检查:1) 长度是否正确2) 版本号是否正确(是IPV4还是IPV6)3) 校验和是否正确在确定这些信息无误后,则调用包过滤检测:fw_res =call_in_firewall(PF_INET,dev,iph,&rport,&skb);call_in_firewall 会对输入的数据包进行规则检查,fw_ res返回的便是匹配出来的规则。如果对应的规则为不接受该数据包,则立即将此数据包丢弃:if(fw_ resdaddr,iph-saddr,iph-tos,dev)此时路由信息已包括在了skbuff数据结构的dst项中,紧接着调用skb-dst-input(skb)继续处理。对发往本地高层协议的包,则调用ip_local_deliver( )进行处理;对转往其他主机的包,则实际调用ip_forward( )处理。值得注意的是,经伪装的包再回来时,其目的IP是防火墙的IP,经路由后,也送入ip_local_deliver( )处理,在ip_local_deliver( )内部先解伪装,然后再查一次路由,发往本地的直接发往高层,否则依然调用ip_forward( )。Ip_forward( )用来处理发往其他主机的数据包。其函数流程为:1) 因为ip_forward( )接收的参数是一个skbuff,它首先利用skbuff的指针,把IP头找出:iph=skb-nh.iph2) 因为ip_forward( )由ip_rev( )调用,而在ip_rev( )中已查过了路由,此处只需利用skbuff的指针定位路由信息即可:struct rtable * rt;/* Route we use */rt=(stuct rtable*)skb-dst;3) 如果此包的生存时间(ttl)已到,则丢弃:if(iph-ttlis_strict route & rt-rt_dst!=rt_rt_gateway) goto sr_failed;5)如果指定的伪装功能,且上层协议是ICMP,则在此处处理一部分,且跳过后面的包过滤处理: # if def CONFIG_IP_MASQUSERADE if (! (IPCB(skb)-flags &IPSKB-MASQUERADED) if (iph-protocol=IPPROTO_ICMP) fw_res=ip_fw_masq_icmp(&skb,maddr); if(fw_res) /*ICMP matched-skip firewall */ goto skip_call_fw_firewall; # end if6)如果上一步的前提不成立,则要经过一次包过滤。 fw_res= call_fw_firewall(PF_INET,dev2,iph,NULL,&skb);7)因为转发的数据总是要送出的,紧接着会调用call_out_firewall( ),并把数据送出去。Ip_output( )完成数据包的发送,具体过程参照Ip_rev( )。我们已经知道内核在网络层中自动调用用户编写的防火墙程序。但有一个前提条件就是用户必须正确地将自己编写的防火墙程序登记到内核中,内核中提供了防火墙的登记和卸载函数,分别是register_firewall和unregister_firewall。1、 register_firewall函数原型如下:int register_firewall(int pf,struct firewall_ops *fw)返回值:0代表成功,小于0表示不成功。参数:* 协议标志pf,主要的取值及其代表的协议如下:2代表Ipv4协议,4代表IPX协议,10代表Ipv6协议等。* 参数结构fw定义如下:struct firewall_opsstruct firewall_ops *next;int (*fw_forward)(struct firewall_ops *this, int pf, struct device *dev, void *phdr, void *arg, struct sk_buff *pskb);int (*fw_input)(struct firewall_ops *this, int pf, struct device *dev, void *phdr, void *arg, struct sk_buff *pskb);int (*fw_output)(struct firewall_ops *this, int pf, struct device *dev, void *phdr, void *arg, struct sk_buff *pskb);int fw_pf; int fw_priority; ;结构中next的域将由内核来修改,使其指向下一个防火墙模块。fw_pf域为协议标志,含义同上。fw_priority指定优先级,一般应大于0。fw_input、fw_output、fw_forward是用户编写的防火墙函数模块,在接收到网络报和发送网络报时内核将调用这些模块,后面将详细讨论。 2、 unregister_firewallunregister_firewall的原型说明与调用方法同register_firewall。3.5 Ipchains命令使用简介过滤和地址转换功能模块植入LINUX内核,因此利用Linux系统命令ipchains来配置过滤和地址转换规则。命令形式:ipchains命令19主要有以下几种形式:ipchains ADC 链名 规则描述 选项ipchains RI 链名 规则索引 规则描述 选项ipchains D 链名 规则索引 选项ipchains LFZNX 链名 选项ipchains P 链名 操作(target) 选项ipchains M -L|-S 选项简介: 命令ipchains 用于过滤和地址转换规则的建立,维护,及检查。这些防火墙规则可被分为三种不同的类型: input链、 output链和forward链,过滤和地址转换的控制基于这三种类型的规则设置。操作: 每条规则都规定了IP 包要符合的标准和一种操作,如果IP 包不匹配此规则的标准,则检查下一条规则;若匹配则按规则中规定的操作对包进行不同的处理。操作项的值是ACCEPT、DENY、REJECT、MASQ中的一个。 ACCEPT表示准许包通过;DENY则表示将包丢弃;REJECT 的作用与DENY相似,只是REJECT除了丢弃包外还向包的原端发送一个ICMP包告知发送者包被丢弃。 MASQ 只在forward链中起作用,外出包的源IP地址会自动被转换成防火墙主机的对外IP地址;进入包在绕经转发链时也会被识别并进行反向地址转换。选项: ipchains命令20所使用的选项可分为几个不同的组: 命令这一类选项指定了ipchains命令所执行的特定的行为,除以下指出的特殊情况外,在每一命令行中只能出现这类选项中的一个。-A 在选定的链上追加一条或多条规则,如果源或目的地址不止一个,则对每个可能的源地址目的地址组合都增加此规则。例如你设置一个能解析为多个 IP 地址(使用 DNS)的主机名, ipchains 将如同你对多个地址都设置了命令一样发生作用。假如主机名解析为三个 IP 地址, 主机名解析为两个 IP 地址, 那么命令 ipchains -A input -j reject -s -d 将在 input 链中追加6条规则。-D (-I, -R) 的语法与 -A 完全相同. 当在一个链中有多个相同的规则时, 只有第一个被删除。-D 从选定的链中删除一条或多条规则。删除规则有两种形式:指定要删除的规则在链中的索引;详细描述要删除的规则。首先如果我们知道它是链中的唯一规则, 我们可以使用编号删除, 输入:# ipchains -D input 1来删除进入链的编号1规则。第二条路是 -A 命令的镜象, 但是用 -D 代替 -A. 当你不愿意去数繁多的规则时, 这是一个有用的方法. 这种情况下, 我们使用:# ipchains -D input -s -p icmp -j DENY-R 在指定的链中用新规则替换已存在的规则。 如果源或目的地址不止一个,则此命令无效(规则从1 开始记数)。Ipchains R 链名 原规则号 新规则描述 参数-I 将一条或多条规则到指定链中的指定位置。如果指定位置号为1 ,新规则将被插入到链的最先位置。-L 列出指定链中的所有规则。如果不指定是哪条链,所有链的规则信息都被列出。-L有几个可选项. -n(数值)项非常有用, 它阻止 ipchains 去查找 IP 地址, 假如你的DNS没有正确设置, 或你已经过滤掉了 DNS 请求, 这将造成很大延时。 它还会导致端口用数字而不是名字被显示出来。-v选项显示规则的所有详细信息,如包和字节计数器,TOS 掩码, 接口, 和包标记. 用其它的方法这些项都会被忽略。-F 覆盖指定链上的规则。它等价于将链上的全部规则逐个删除。 # ipchains -F forward假如你不指定链, 那么所有链都将被清空。-Z 将链上的规则和记数器清零。若与命令-L 同时使用亦是合法的,这样在清零之前先显示链上的内容,清零之后不可以再指定任何链。-P 为链上的所有规则指定统一的操作。在操作部分已经介绍了有可能的合法操作。只有非自定义的链才可以使用此命令,内置的链名和自定义的链名不可以作为此命令用以指定的操作。-N -new-chain以给定的名字创建一条新的user defined链。不能与已有链同名。-M -masquerading允许观察当前IP伪装的连接(与-L一起)。或者设置内核IP 伪装的参数(与 S 一起)。-S -set tcp tcpfin udp设置伪装的超时值,-S 后跟三个以秒表示的超时值: TCP sessions, FIN 包到后的 TCP sessions, 和对于 UDP 包的。假如你不想改变这些值, 给个 0 值即可。默认值在 /usr/include/net/ip_masp.h 文件中, 目前分别是 15分, 2分和 5分。仅允许和 -M 一起使用。-C 用指定链中的规则对IP 包进行检查。它利用内核中用以检查实际网络的例程来检查IP 包,是极为有用的一个命令。它可以检查所有自定义链和内置链上的包,利用防火墙规则和IP 包中相同的参数来对包进行检测,源地址、目的地址、协议、端口号是必须具备的。-h 帮助。提供命令语法的简单描述。 参数上面命令中规则的详细描述是通过参数的组合来完成的,下面介绍一下ipchains命令中用到的一些参数的含义及用法21。 -p ! protocol 此参数用以指定规则中的协议或待检查包中的协议 protocol的取值可以是tcp、udp、icmp中的一种或全部,也可以是代表这些协议的数字值,文件/etc/protocols中的任意一个协议名都是合法取值,在protocol前加上“!”表示非protocol协议。若取值为零则代表所有协议,此情况将与任何协议均匹配。如果不设置此选项,则默认取值为所有协议。在CHECK 命令中,此参数不能取all。 -s ! address/mask ! port:port 描述源地址。Address的取值可以是一个主机名、网络名或者是一个单纯的IP 地址,mask的取值可以是一个网络掩码或者是一个数字,此数字代表网络掩码中左边所有“1”的个数。例如:24 代表网络掩码 ,16代表网络掩码,8代表网络掩码。address前加“!”表示非的意思。 源地址中可以包含端口号或ICMP 包的类型,它可以是某种服务的名称、一个端口号码、一个数字化的ICMP 类型码、或是命令ipchains h icmp 所显示的任意一个ICMP 类型名。 可以使用port:port格式来指定端口号的范围,若没有指定第一个端口号,默认从0开始;若后一端口号没有指定,则默认为65535。 只有在用到tcp、udp、ICMP协议是才可以指定端口号。加“!”表示取非。当使用Check命令时需且仅需一个端口号,若使用-f标志,则不允许使用任何端口号。-source-port ! port:port 此参数用以单独指定源端口号或端口号范围,详见-s中的介绍。-d ! address /mask ! port:port 指定目的地址。语法结构描述见-s,对于无端口号的ICMP 协议,目的端口指数字化的ICMP 类型码。-destination-port ! port:port 单独指定目的端口,详见-s。-icmp-type ! typename 指定ICMP 的类型(利用-h icmp 选项可以查看合法的ICMP 类型名)。将其附加于目的地址的定义中将更方便。-j target 此选项指定规则中的操作,即指定当包与规则匹配时要做什么。-i ! name 指定一接口的名称(eth0,eth1ethn),通过此接口接收包或将包发送出去。如果没有设定此选项,则默认是空串,这样将会匹配所有接口,在name前加“!”表示非的意思。若name串以“+”结束,则所有以name中“+”之前的串开头的接口均与之匹配。-t -TOS and xormask用于改变IP头的TOS域。当包匹配规则,它的TOS域首先与第一个掩码逐位相与,结果再与第二个掩码逐位异或,掩码将会被指定为8位16进制数。TOS的最低有效位必须没有被改变。TOS域的四个位是最小延时Minimum Delay, 最大吞吐量Maximum Throughput, 最大可靠程度Maximum Reliability和最小费用Minimum Cost。最常用的是把 telnet 和 ftp 的控制连接设为最小延时和把 FTP 数据设为最大吞吐量. 这样做:ipchains -A output -p tcp -d /0 telnet -t 0x01 0x10ipchains -A output -p tcp -d /0 ftp -t 0x01 0x10ipchains -A output -p tcp -s /0 ftp-data -t 0x01 0x08! f 此参数只对以分片包的第二个及以后的碎片起作用。由于这种包无法获知源、目的端口(或ICMP 类型),所以这种包不会匹配设置此参数的任何规则。“!”的意义同前,表示只对第一个碎片起作用。-l记入日志信息! y syn 此参数仅适用于TCP 包,该参数设置表示针对TCP初始连接的IP包。4 Linux防火墙构造安全的解决方案4.1 堡垒主机或双穴主机网关如图4.1所示,这种配置是用一台装有两块网卡的堡垒主机做防火墙。两块网卡各自与受保护网和外部网相连。堡垒主机上运行着防火墙软件,可以转发应用程序,提供服务等。堡垒主机 受保护网 外部网图4.1 堡垒主机解决方案图双穴主机网关11装配的防火墙软件一般不转发TCP/IP协议,它为每种服务提供专门的应用程序。其使用的便利性及安全性取决于管理者设置的访问方式:是否允许用户登录到防火墙上。如果设为允许,方便性提高了,但安全性会降低。例如若某一合法用户设置的口令比较脆弱(weak),很容易被计算出来,那么设法取得该用户口令的黑客会利用该用户的帐户登录到防火墙上,设法取得超级用户特权,这样危险带扩展到整个受保护网。双穴主机网关优于屏蔽路由器的地方是:堡垒主机的系统软件可用于维护系统日志、硬件拷贝日志或远程日志。这对于日后的检查很有用。但这不能帮助网络管理者确认内网中哪些主机可能已被黑客入侵。双穴主机网关的一个致命弱点是:一旦入侵者侵入堡垒主机并使其只具有路由功能,则任何网上用户均可以随便访问内网。例如,若堡垒主机的操作系统是UNIX,系统管理者可以修改核心变量ipforwarding来禁止TCP/IP转发。但熟知该操作系统的黑客设法取得系统特权后,也可以重设该变量使其具有路由功能。系统管理员必须很注意监视软件的校订级和网关主机的配置才能及早发现。4.2 被屏蔽主机网关屏蔽主机网关11易于实现也很安全,因此应用广泛。如图4.2 所示,一个分组过滤路由器连接外部网络,同时一个堡垒主机安装在内部网络上,通常在路由器上设立过滤规则,并使这个堡垒主机成为从外部网络唯一可直接到达的主机,这确保了内部网络不受未被授权的外部用户的攻击。进出内部网络的数据只能沿图中的虚线流动。堡垒主机屏蔽路由器网中其他主机外部网受保护网图4.2 屏蔽主机网关图如果受保护网是一个虚拟扩展的本地网,即没有子网和路由器,那么内网的变化不影响堡垒主机和屏蔽路由器的配置。网关的基本控制策略由安装在上面的软件决定。如果攻击者设法登录到它上面,内网中的其余主机就会受到很大威胁。这与双穴主机网关受攻击时的情形差不多。4.3 被屏蔽子网 堡垒主机外部网受保护网屏蔽路由器屏蔽路由器被屏蔽子网图 4.3 屏蔽子网图这种方法是在内部网络和外部网络之间建立一个被隔离的子网,用两台分组过滤路由器将这一子网分别与内部网络和外部网络分开。在很多实现中,两个分组过滤路由器放在子网的两端,在子网内构成一个“非军事区”DMZ12,如图4.3所示,内部网络和外部网络均可访问被屏蔽子网,但禁止它们穿过被屏蔽子网通信,象WWW和FTP服务器可放在DMZ中。有的屏蔽子网中还设有一堡垒主机作为唯一可访问点,支持终端交互或作为应用网关代理。这种配置的危险带仅包括堡垒主机、屏蔽子网主机及所有连接内网、外网和屏蔽子网的路由器。如果攻击者试图完全破坏防火墙,他必须重新配置连接三个网的路由器,既不切断连接又不要把自己锁在外面,同时又不使自己被发现,这样也还是可能的。但若禁止网络访问路由器或只允许内网中的某些主机访问它,则攻击会变得很困难。在这种情况下,攻击者得先侵入堡垒主机,然后进入内网主机,再返回来破坏屏蔽路由器,整个过程中不能引发警报。5 防火墙的设计与实现5.1 网络结构假设内部网有有效的Internet地址。为了将内部网段/24与Internet隔离,在内部网络和Internet之间使用了包过滤防火墙。防火墙的网接口是eth1(54),防火墙的Internet接口是eth0(54)。加外,内网中有3台服务器对外提供服务,如图5.1所示。分别为:WWW服务器:IP地址为51FTP服务器:IP地址为52E-mail服务器:IP地址为53图5.1 网络拓扑图5.2 防火墙的实现要求1、允许网络接口相连接的网络之间相互通信。2、从网络发往internet的数据包被伪装成IP地址54。3、网络上的任何主机可以使用internet的任何服务(Web,E-mail,Ftp等)。4、拒绝从防火墙的internet接口(eth0)进行的欺骗攻击(即黑客把防火墙作为默认网关,伪装成内部网IP,进入内部网络),并进行日志记录。5、拒绝全部从eth0进入的ICMP通信。6、允许internet用户访问网络中的DNS服务、WEB服务、FTP服务(其它服务禁止如telnet等)。5.3 防火墙的实现原理包过滤器操作的基本过程如下,器工作流程图如图5.2所示:包过滤规则必须被包过滤设备端口存储起来。当包到达端口时,对包报头进行语法分析。大多数包过滤设备只检查IP、TCP、或UDP报头中的字段。包过滤规则已特殊的方式存储。应用于包的规则的顺序与包过滤器规则存储顺序必须相同。若一条规则阻止包传输或接收,则此包不被允许。(1) 若一条规则允许包传输或接收,则此包可以被继续处理。(2) 若包不满足任何一条规则,则此包被阻止。图5.2 包过滤操作流程图数据包在Filter表中的流程图如图5.3所示,数据包的过滤过程如图5.4所示。有数据包进入系统时,系统首先根据路由表决定将数据包发给哪一条链,则可能有3种情况:(1) 如果数据包的目的地址是本机,则系统将数据包送往INPUT链,如果通过规则检查,则该数据包发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢弃。(2) 如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往FORWARD链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢弃。(3) 如果数据包是由本地系统进程产生的,则系统将其送往OUTPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢弃。图5.3 数据包在Filter表中的处理流程图图5.4 信息包过滤过程示意图5.4 防火墙的建立过程此防火墙主要是对内部的各种服务器提供保护。下面采用编辑并执行可执行脚本的方法建立此防火墙。其截图如图5.5所示,具本过程如下:图5.5 Red Hat 9.0中的安全设置截图1、 基本规则的配置#!/sbin/bash在屏幕上显示信息:echo Starting Iptables rules.开启内核转发功能echo 1;/proc/sys/net/ipv4/ip_forward定义变量:IPT=/sbin/IptablesWWW-SERVER=51FTP-SERVER=52EMAIL-SERVER=53IP_RANGE=/24刷新所有的链的规则:$IPT F首先禁止转发任何包,然后再一步步设置允许通过的包,所以首先设置防火墙FORWARD链的策略为DROP。$IPT -P FORWARD DROP下面设置关于服务器的包过滤规则,由于服务器/客户机交互是双向的,所以不仅仅要设置数据包,出去的规则,还要设置数据包返回的规则。(1) WWW服务服务端口为80,采用tcp或udp协议,规则为eth0=;允许目的为内部网WWW服务器的包:$IPT -A FORWARD -p tcp -d $WWW-SERVER-dport www -i eth0 -j ACCEPT(2) FTP服务服务端口为21,数据端口20,FTP的传输模式有主动和被动之分,FTP服务采用tcp协议,规则为eth0=;仅允许目的为内部网ftp服务器的包$IPT -A FORWARD -p tcp -d $FTP-SERVER -dport ftp -i eth0 -j ACCEPT(3) EMAIL服务包含两个协议,一个是smtp,另一个是pop3,出于安全性考虑,通常只提供对内的pop3服务,所以在这里我们只考虑对smtp的安全性问题。smtp端口为25,采用tcp协议,规则为etho=;仅允许目的为E-mail服务器的smtp请求。$IPT -A FORWARD -p tcp -d $EMAIL-SERVER-dport smtp -i eth0 -j ACCEPT2、设置针对Internet客户的过滤规则。本例中防火墙位于网关的位置,所以主要是防止来自Internet的攻击,假如网络中的服务器都是基于Linux的,也可以在每一部服务器上设置,相关的过滤规则来防止来自Internet的攻击,对于Internet对Intranet客户的返回包,定义如下规则:允许Intranet客户采用被动模式访问Internet的FTP服务器。$IPT -A FORWARD -p tcp -s 0/0 -sport ftp-data -d $IP_RANGE -i eth0 -j ACCEPT(1) 接收来自Internet的非连接请求tcp包。$IPT -A FORWARD -p tcp -d /24 ! -syn -i eth0 -j ACCEPT(2) 接收所有udp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省深圳市平湖中学2026届中考猜题数学试卷含解析
- 省旅游公路管理办法
- 韶关市重点中学2026届中考四模物理试题含解析
- 2026届天津市塘沽区一中学中考二模物理试题含解析
- 催化剂材料设计-洞察及研究
- 2026届山东省日照专用重点达标名校初中数学毕业考试模拟冲刺卷含解析
- 沉积物微生物群落演替-洞察及研究
- 微服务流量工程-洞察及研究
- 可持续城市规划-第2篇-洞察及研究
- 极地微生物碳循环-洞察及研究
- 搅拌器设计计算
- 剖宫产术的解剖
- 采掘电钳工题库全套及答案全案(高级)
- VDA6.3:2023 汽车核心工具自我评估测试题库真题 (含答案)
- ks-s3002sr2腔全自动清洗机规格书megpie
- 2022年泰顺县特殊教育岗位教师招聘考试笔试试题及答案解析
- GB/T 28955-2012道路车辆全流式机油滤清器滤芯尺寸
- GA/T 852.1-2009娱乐服务场所治安管理信息规范第1部分:娱乐服务场所分类代码
- 建设项目办理用地预审与选址意见书技术方案
- 历年托福词汇题汇总440题有答案
- 10kV中压开关柜知识培训课件
评论
0/150
提交评论