IPTABLES应用手册

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

LINUXiptable应用手册(一)LINUXiptable应用手册防火墙(Firewall)、网址转换(NAT)、数据包(package)记录、流量统计,这些功能全是Linux核心里的Netfilter子系统所提供的,而iptables是控管Netfilter的唯一工具程序。iptables的接口很可能是Linux有史以来最精致的,它使得Linux成为最有弹性的网络过滤系统。iptables将许多组繁复的规则集成组织成容易控管的形式,以便管理员可以进行分组测试,或关闭、启动某组规则集。iptable能够为Unix、Linux和BSD个人工作站创建一个防火墙,也可以为一个子网创建防火墙以保护其它的系统平台。iptable只读取数据包头,不会给信息流增加负担,也无需进行验证。要想获得更加好的的安全性,可以将其和一个代理服务器(比如sqiud)相结合。每当有人紧急要求你开放或关闭特定通讯端口(为了让某种重要的网路通讯能通过防火墙,或是阻挡某种攻击),或是请你在防火墙设置某种功能,本文将能协助你尽速解决问题。本文以直接的语法和务实的范例,帮助你记忆iptables的各种用法,并提供一些适当的意见,让你的防火墙尽可能保持安全。我们将iptables的选项分成「防火墙」、「流量统计」、「NAT」三类,以合适务实查询的方式编排,协助管理员在最短时间内找到相关选项的语法和说明。操作范例如下:现在让我们来一个简单的iptables命令:iptables-tnat-APREROUTING-iethl-ptcp--dport80-jDNAT--to-destination192.168.1.3:8080(表1)是解释这个iptables命令的意义。▓概念Linux核心的包(package)处理流程中,共设置了五个(鱼钩)拦截点(hookpoints),分别是PREROUTING、INPUT、FORWARD、POSTROUTING以及OUTPUT。内建链结只能作用在这些拦截点;你可以针对个别拦截点设置一系列处理规则,每条规则各代表一次影响(或监测)包(package)处理流程的机会。*************************************▓诀窍我们常看到很多说明文件有着『...nat表格的PREROUTING串链...』这样的说法,隐喻着链结是属于表格。然而,链结与表格两者之间并没有统属关系,最多只有隐讳的关联性而已。链结(chains)的真正含意是「包(package)径路上的拦截点」而表格(tables)则是象征「处理效果」。然而,为了措词上的方便,本文仍免不了出现『...某表格的某链结...』之类的说法请读者注意。*************************************※图1、2、3分别展示了表格与链结的三种有效组合,以及各种组合所象征的包处理流程。其中《图l》是包经过「网址转换系统」(NAT)的流程,相关链结是作用于nat表格。※图2:是包流经「包过滤系统」的流程,相关链结是作用于filter(过滤)表格。※图3:是包流经「包内容调整系统」的流程,相关链结是作用于mangle表格。表2》说明五种拦截点(链结)的作用,以及各拦截适合处理的包类型。注解:混杂模式(promiscuousmode):Ethernet网卡的一种特殊作业模式,在此模式下,即使目的地MAC地址不是指向自己的Ethernet包,也会被收下来。Ethernet网卡通常是在非混杂模式下作业,也就是只接受MAC指向自己的Ethernet包。*************************************诀窍好奇的读者,可从核心原始程序的/usr/include/linux/netfilter_ipv4.h标头档查出各拦截点的定义,如下所示;它们的名称类似NF-IP_FORWARD、NF_IP_LOCAL_{IN,OUT}、和NF_IP_{PRE,POST}_ROUTING。/*IPHooks*//*Afterpromiscdrops,checksumchecks.*/#defineNF_IP_PRE_ROUTING0/*Ifthepacketisdestinedforthisbox.*/#defineNF_IP_LOCAL_IN1/*Ifthepacketisdestinedforanotherinterface.*/#defineNF_IP_FORWARD2/*Packetscomingfromalocalprocess.*/#defineNF_IP_LOCAL_OUT3/*Packetsabouttohitthewire.*/#defineNF_IP_POST_ROUTING4#defineNF_IP_NUMHOOKS5*************************************规则应该设置于哪个表格的哪个链结,取决于规则本身的功能性,以及包的性质。比方说,若你要设置的一条用于过滤离境包的规则,则应该将该规则设置于「filter表格」(因为功能性是「过滤」)的「OUTPUT链结」(因为包性质是「离境包」)虽然要离境的包,其最后一关应该是at表格的POSTROUfING链结(参阅《表4》与《表6》),但由于nat表格管不到POSTROUTING链结,所以你不能将出境包过滤规则设置在那里。表格(Tables)iptables内建三个表格:filter、mangle以及nat每个表格都被预先设置了一或多个代表各拦截点的链结(请参阅《表2》、《图1》、《图2》、《图3》)。这三个内建筛表的作用,请参阅《表3》。iptables将适当的链结设置于上述三个内建表格,当系统收到包时,便依据包的来源(本机行程或网络)来源主机的地址、目的地地址来判断包的性质(穿越、输入、输出、绕回),然后依照包的性质,分别以《表4》到《表7》所列的程序之一来处理该类包。*************************************诀窍图1-3只是个别相关功能的示意流程,而非包的实际旅程。表4-7所描述的顺序,才是包真正的旅程。*************************************链结(Chains)每个表格都预设了相关拦截点的链结,当系统刚开机时,所有链结都是空的:为此,回复iptables套件另外提供了两个辅助工具–iptables-save与iptables-restore-可供你储存、回复所有规则(参阅《辅助工具》)。每个链结各代表一个拦截点,《表2》是各拦截点的说明,《表3》列出各表格预设的链结。除了内建链结之外,你也可以建立自己的链结来组织你的规则。若包能通过链结里的每一条规则而下受影响,最后将由链结的政策(policy)决定包的命运。内建连接只能以「内建目标」(参阅《表8》)-ACCEPT与DROP–为政策:预设政策为ACCEPT所有自订链结的政策都固定是RETURN,不能改变。如果要为内建链结制定更复杂的政策,或是希望自订连接改用RETURN之外的其它政策,唯一办法是在链结末端添加一条通适规则(任何包都符合条件的规则),并将你要的任何目标设定于该规则。你不能直接修改已经设置到链结里的现有规则,如果发现某规则有误,唯一办法是删除掉旧规则(使用-D)、然后将正确的新规则加回去(使用-A或-I)。包(package)的流程当包流经链结时,必须依序通过该链结里每一条规则的检验。若包符合某条规则的「筛选条件」(match),则将包交给该规则的「目标」(target)来处理,否则,就继续由同链结里的下一条规则予以检验。倘若包顺利通过链结里的所有规则(不符合任何规则的筛选条件),则以链结的「政策」(policy,参阅《链结(Chains)》来决定其去向。包实际会经过哪些链结,取决于包本身的性质(转交、输入、输出、绕回),《表4》到《表7》分别列出各种性质的包的旅程顺序。《图1》《图2》和《图3》是单看特定筛表时,包如何通过该筛表各链结的详细流程。附录)描绘filter过滤表格的详细处理流程。注解:Package:包,套件或称呼封包Chain:链结或称呼串链LINUXiptable应用手册(二)LINUXiptable应用手册第二篇规则(Rules)iptables的每一条规则(rule),都是由两部分组成的,第一部分包含一或多个「过滤条件」其作用是检查包是否符合处理条件(所有条件都必须成立才算数);第二部分称为「目标」,用于决定如何处置符合条件的包。对于每一条规则,iptables各维护两个计数器:一个计算符合条件的封包数,称为packetcounter;另一个计算该规则所处理的总资料量,称为bytecounter。每当有包符合特定规则的过滤条件,该规则的packetcounter便会被累加一,并将该包的大小累加到该规则的bytecounter。规则可以只有「过滤条件」或「目标」(处置方式)的其中之一;没指定过滤条件时,则所有包都算符合条件;没指定处置方式时,则放任让包继续其流程,也就是说。包本身不会有任何改变,只有该规则的两个counters会累增而已。使用下列命令可将这种只有计数作用的空规则加入filter表格FORWARD链结:iptables-tfilter-AFORWARD过滤条件(Matches)iptables可让你设置多种过滤条件,但是某些条件需要核心有提供相关功能才行。Iptables本身内建一般性的InternetProtocol(IP)过滤条件,也就是说,即时没载入任何扩充模组,你也可以用IP包标头的「传输协定类型」、「来源地址」、「目的地地址」等栏位为过滤条件。关于一般性的IP过滤条件,请参阅《IPv4过滤条件》。除了IP之外的其它协定,诸如ICMP、TCP、UDP等等,必须载入相关的扩充模组,才可以作为过滤条件。使用iptables的-m或--match选项,指出载入特定协定的扩充模组。所有关于过滤条件的扩充模组,几乎都上针对网络层(IP、ICMP)或传输层(TCP、UDP),唯一例外上mac模组,它能让你以Ethernet网卡的MediaAccessController(MAC)地址为过滤条件【注解:Ethernet属于网络层之下的「资料连结层」(OSIModel)或「实体层」(IPModel)】。目标(Target)目标「(targets)决定如何处理符合过滤条件的包,或是当成链结的政策。iptables共内建四种目标(参阅《表8》),除此之外的其它目标,必须透过扩充模组来提供。表8:iptables内建的目标应用本节简述各种包处理技术的观念,以及它们的应用。包过滤(Packetfiltering)「包过滤」是最基本的封包处理方式:于核心网络程序的各交接点检查包内容,籍此决定包的后续处理流程(放行到下一阶段、不回复而径行放弃、回复拒收讯息,诸如此类)。累计(Accounting)「累计」:使用各种包过滤条件的byte/packagecounter来监测网络交通量。连线追踪(Connectiontracking)「连线追踪」:提供可用于判断包相关性的额外资讯。举例来说,一次FTPsession同时需要两条分离的连线,控制与资料传输各一;用于追踪FTP连线的扩充模组,运用对于FTP恊定的认知,从控制连在线流动的封包资料中,分析出足以便识资料连线的资讯(于何时建立、双方所用的TCPport),然后将查出的资讯提供给处理包的规则。封包修改(Packetmangling)「包修改」:修改包的标头栏位(通常是网路地址与通讯端口编号),或是其承载资料。网址转译(Networkaddresstranslation,NAT)NAT是一种涉及修改来源地址,目的地地址、来源端口、目的地端口之特殊「包修改」。对于只修改来源地址/通讯端口的操作,称为「SourceNAT」(或简称为S-NAT或SNAT);若只修改目的地地址/通讯端口,则称为「DestinationNAT」(或简称为D-NAT

1 / 80
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功