1、函式处理,所以会让来自内部网络的封包无条件放行,来自外部网络的封包则过滤是否为响应封包,若是则放行。PREROUTING:需要转送处理的封包由此函式负责处理,此函式用来做目的地的转译动作(DNAT)。所有转送封包都在这里处理,这部分的过滤规则最复杂。POSTROUTING:转送封包送出之前,先透过这个函式进行来源的转译动作(SNAT)。从本机送出去的封包由这个函式处理,通常会放行所有封包。都可以自行定义规则群组(rule-set),规则群组被称为规则炼(chains),前面所描述的函式,也都有相对应的规则炼(INPUT、FORWARD、OUTPUT、Prerouting、Postrouting
2、),为了有别于自行定义的规则炼,这些规则炼我们就称为内建规则炼。不难了解为什么要叫做chains,因为它是将所有规则串接成一个序列逐一检查过滤,就像一条铁链一样一个环接一个环,在过滤过程中只要符合其中一条规则就会立即进行处理,如果处理动作是跳到某个规则群组,则继续检查群组内之规则设定,但如果处理动作是ACCEPT、REJECT、DROP、REDIRECT或MASQUERADE,则会中断过滤程序,而不再继续检查后面的规则设定,在这样的结构之下,有时候规则顺序的对调会产生完全相反的结果,这一点在设定防火墙时不能不谨慎。而是采用规则堆栈的方式来进行过滤,当一个封包进入网卡,会先检查Preroutin
3、g,然后检查目的判断是否需要转送出去,接着就会跳到Forward进行过滤,如果封包需转送处理则检查Postrouting,如果是来自本机封包,则检查OUTPUT以及Postrouting。过程中如果符合某条规则将会进行处理,处理动作除了MASQUERADE以外,还多出LOG、ULOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、TOS、TTL、MARK等,其中某些处理动作不会中断过滤程序,某些处理动作则会中断同一规则炼的过滤,并依照前述流程继续进行下一个规则炼的过滤(注意:这一点与不同),一直到堆栈中的规则检查完毕为止。透过这种机制所带来的好处是,我们可以进行复杂、多重的封包过
4、滤,简单的说,iptables可以进行纵横交错式的过滤(tables)而非炼状过滤(chains)。虽然为了扩充防火墙功能,而必须采用比较复杂的过滤流程,但在实际应用时,同一规则炼下的规则设定还是有先后顺序的关系,因此在设定规则时还是必须注意其中的逻辑。四、订定校园网络安全政策在实际设定防火墙之前,我们必须根据校园网络的安全需求,先拟定一份安全政策,拟定安全政策前必须搜集以下资料:1.找出需要过滤保护的服务器2.条列出被保护的服务器将提供何种网络服务3.一般工作站,需要何种等级的保护4.了解网络架构与服务器摆放位置根据这些数据,我们可以决定安全政策,以石牌国小为例:校内使用NAT虚拟网络,IP
5、数量需要两组C,所有均需作伪装校园内安全需求不高,服务器与工作站摆在同一网段,不需采用DMZ设计由于服务器功能经常扩充,所有服务器均采用一对一对应,不使用port转送功能所有工作站均能自由使用网络资源,不限制只能看网页5.服务器提供之服务包含:dns、web、mail、ftp、wam、webmin、ssh、rdp、pcaw,不提供proxy及其它网络服务6.为增进校园网络之安全性,采用正面表列方式进行封包过滤(定义想放行之封包,其余封包一律阻挡)还有一些网络安全须注意的事项,则是每所学校都应防范的,没有等差之别,例如:联机被绑架、阻断式攻击、连接端口扫描.等。五、iptables指令语法:-t
6、tablecommandmatch-jtarget/jump-t参数用来指定规则表,内建的规则表有三个,分别是:nat、manglefilter,当未指定规则表时,则一律视为是filter。各个规则表的功能如下:nat此规则表拥有Preroutingpostrouting两个规则炼,主要功能为进行一对一、一对多、多对多等网址转译工作(SNAT、DNAT),由于转译工作的特性,需进行目的地网址转译的封包,就不需要进行来源网址转译,反之亦然,因此为了提升改写封包的效率,在防火墙运作时,每个封包只会经过这个规则表一次。如果我们把封包过滤的规则定义在这个数据表里,将会造成无法对同一封包进行多次比对,因
7、此这个规则表除了作网址转译外,请不要做其它用途。manglePrerouting、FORWARD三个规则炼。除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或者是设定MARK(将封包作记号,以便进行后续的过滤),这时就必须将这些工作定义在规则表中,由于使用率不高,我们不打算在这里讨论的用法。filter这个规则表是预设规则表,拥有三个规则炼,这个规则表顾名思义是用来进行封包过滤的处理动作(例如:DROP、LOG、ACCEPTREJECT),我们会将基本规则都建立在此规则表中。常用命令列表:命令-A,-append范例-A.说明新增规则到某个规则炼中,该规则
8、将会成为规则炼中的最后一条规则。-D,-delete-D-dport80-jDROP1从某个规则炼中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。-R,-replace-R1-s192.168.0.1取代现行规则,规则被取代后并不会改变顺序。-I,-insert-IACCEPT插入一条规则,原本该位置上的规则将会往后移动一个顺位。-L,-list-LINPUT列出某规则炼中的所有规则。-F,-flush-F删除某规则炼中的所有规则。-Z,-zero-Z将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。-N,-new-chain-Nallowe
9、d定义新的规则炼。-X,-delete-chain-X删除某个规则炼。-P,-policy-P定义过滤政策。也就是未符合过滤条件之封包,预设的处理方式。-E,-rename-chain-Ealloweddisallowed修改某自订规则炼的名称。常用封包比对参数:参数-p,-protocol-ptcp比对通讯协议类型是否相符,可以使用!运算子进行反向比对,例如:tcp,意思是指除以外的其它类型,包含udp、icmp.等。如果要比对所有类型,则可以使用all关键词,例如:all。-s,-src,-source192.168.1.1用来比对封包的来源IP,可以比对单机或网络,比对网络时请用数字来表
10、示屏蔽,例如:192.168.0.0/24,比对时也可以使用192.168.0.0/24。-d,-dst,-destination-d用来比对封包的目的地IP,设定方式同上。-i,-in-interface-ieth0用来比对封包是从哪片网卡进入,可以使用通配字符+来做大范围比对,例如:eth+表示所有的ethernet网卡,也可以使用eth0。-o,-out-interface-o用来比对封包要从哪片网卡送出,设定方式同上。-sport,-source-port-sport22用来比对封包的来源埠号,可以比对单一埠,或是一个范围,例如:22:80,表示从22到埠之间都算是符合条件,如果要比对
11、不连续的多个埠,则必须使用-multiport参数,详见后文。比对埠号时,可以使用运算子进行反向比对。-dport,-destination-port用来比对封包的目的地埠号,设定方式同上。-tcp-flags-tcp-flagsSYN,FIN,ACKSYN比对TCP封包的状态旗号,参数分为两个部分,第一个部分列举出想比对的旗号,第二部分则列举前述旗号中哪些有被设定,未被列举的旗号必须是空的。状态旗号包括:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)、PSH(强迫推送)等均可使用于参数中,除此之外还可以使用关键词ALLNONE进行比对。比对旗号时,可以使用-s
12、yn用来比对是否为要求联机之封包,与SYN的作用完全相同,如果使用运算子,可用来比对非要求联机封包。-mmultiport-source-port22,53,80,110用来比对不连续的多个来源埠号,一次最多可以比对15个埠,可以使用-destination-port用来比对不连续的多个目的地埠号,设定方式同上。-port-port这个参数比较特殊,用来比对来源埠号和目的埠号相同的封包,设定方式同上。注意:在本范例中,如果来源端口号为但目的地埠号为110,这种封包并不算符合条件。-icmp-typeicmp-icmp-type8用来比对ICMP的类型编号,可以使用代码或数字编号来进行比对。请打
13、-help来查看有哪些代码可以用。limit-limit-limit3/hour用来比对某段时间内封包的平均流量,上面的例子是用来比对:每小时平均流量是否超过一次3个封包。除了每小时平均一次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后:/second、/minute、/day。除了进行封包数量的比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水攻击法,导致服务被阻断。-limit-burst-limit-burst5用来比对瞬间大量封包的数量,上面的例子是用来比对一次同时涌入的封包是否超过5个(这是默认值),超过此上限的封包将被直接丢弃。
14、使用效果同上。mac-mac-source-mac-source00:01用来比对封包来源网络接口的硬件地址,这个参数不能用在Postrouting规则炼上,这是因为封包要送出到网卡后,才能由网卡驱动程序透过ARP通讯协议查出目的地的MAC地址,所以在进行封包比对时,并不知道封包会送到哪个网络接口去。-markmark-mark用来比对封包是否被表示某个号码,当封包被比对成功时,我们可以透过MARK处理动作,将该封包标示一个号码,号码最大不可以超过4294967296。owner-uid-owner-uid-owner500用来比对来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器
15、使用root或其它身分将敏感数据传送出去,可以降低系统被骇的损失。可惜这个功能无法比对出来自其它主机的封包。-gid-owner-gid-owner用来比对来自本机的封包,是否为某特定使用者群组所产生的,使用时机同上。-pid-owner-pid-owner78用来比对来自本机的封包,是否为某特定行程所产生的,使用时机同上。-sid-owner-sid-owner100用来比对来自本机的封包,是否为某特定联机(SessionID)的响应封包,使用时机同上。state-state-stateRELATED,ESTABLISHED用来比对联机状态,联机状态共有四种:INVALID、ESTABLIS
16、HED、NEWRELATED。INVALID表示该封包的联机编号(SessionID)无法辨识或编号不正确。ESTABLISHED表示该封包属于某个已经建立的联机。NEW表示该封包想要起始一个联机(重设联机或将联机重导向)。RELATED表示该封包是属于某个已经建立的联机,所建立的新联机。例如:FTP-DATA联机必定是源自某个FTP联机。常用的处理动作:参数用来指定要进行的处理动作,常用的处理动作包括:ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK,分别说明如下:将封包放行,进行完此处
17、理动作后,将不再比对其它规则,直接跳往下一个规则炼(nat:postrouting)。REJECT拦阻该封包,并传送封包通知对方,可以传送的封包有几个选择:port-unreachable、ICMPecho-reply或是tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。范例如下:-reject-withtcp-resetDROP丢弃封包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。REDIRECT将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续比对其它规则。这个功能可以用来实作通透式porxy
18、或用来保护web服务器。PREROUTING-to-ports8080改写封包来源为防火墙NICIP,可以指定对应的范围,进行完此处理动作后,直接跳往下一个规则炼(mangle:这个功能与SNAT略有不同,当进行伪装时,不需指定要伪装成哪个IP,IP会从网卡直接读取,当使用拨接连线时,IP通常是由ISP公司的DHCP服务器指派的,这个时候特别有用。POSTROUTING1024-31000LOG将封包相关讯息纪录在/var/log中,详细位置请查阅/etc/syslog.conf组态档,进行完此处理动作后,将会继续比对其它规则。-log-prefixpackets为某特定范围,可以指定对应的范
19、围,进行完此处理动作后,将直接跳往下一个规则炼(mangle:tcp-oeth0-to-source194.236.50.155-194.236.50.160:1024-32000DNAT改写封包目的地对应的范围,进行完此处理动作后,将会直接跳往下一个规则炼(filter:inputfilter:forward)。15.45.23.67-to-destination192.168.1.1-192.168.1.10:80-100MIRROR镜射封包,也就是将来源与目的地对调后,将封包送回,进行完此处理动作后,将会中断过滤程序。QUEUE中断过滤程序,将封包放入队列,交给其它程序处理。透过自行开发
20、的处理程序,可以进行其它应用,例如:计算联机费用.等。RETURN结束在目前规则炼中的过滤程序,返回主规则炼继续过滤,如果把自订规则炼看成是一个子程序,那么这个动作,就相当于提早结束子程序并返回到主程序中。将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续比对其它规则。-set-mark2六、应用实例#!/bin/sh#石牌国小防火墙设定指令稿2002/8/27设定者:李忠宪(修改自tutorial1.1.11byOskarAndreasson)原文件是依需求设计,已根据校园网络之需求修改,其余改动部份包括:新增通讯协议定义区块新增执行时,自动清除已设定之规则支援FTP修改所有规则,改采方式以简化规则原文件仅支持伪装(多对一对应),已扩充为支持一对一对应及多对多对应原文件仅支援DNS及WEB,新增ftp、mail、wam、PCAnywhere、ssh.等多种服务器修改若干规则设定上的小错误Copyright(C)2001Thisprogramisfreesoftware;youcanredistributeitand/ormodifyunderthetermsofGNUGeneralPublicLicenseaspublishedbyFreeSoftwareFoun
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1