您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 36.Linux iptables服务
Linux网络防火墙基本概念:防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。防火墙工作在主机边缘:对于进出本网络或者本主机的数据报文,根据事先设定好的检查规则对其检查,对形迹可疑的报文一律按照事先定义好的处理机制做出相应处理对linux而言tcp/ip协议栈是在内核当中,意味着报文的处理是在内核中处理的,也就是说防火墙必须在工作在内核中,防火墙必须在内核中完成tcp/ip报文所流进的位置,用规则去检查,才真正能工作起来。iptables用来衡量tcp/ip报文的属性:源ip、目标ip、源端口、目标端口;tcp标志位:syn、syn+ack、ack、fin、urg、psh、rst;目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关。对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测。但是对于七层的防火墙,不管你源端口或者目标端口,源地址或者目标地址是什么,都将对你所有的东西进行检查。所以,对于设计原理来讲,七层防火墙更加安全,但是这却带来了效率更低。所以市面上通常的防火墙方案,都是两者结合的。而又由于我们都需要从防火墙所控制的这个口来访问,所以防火墙的工作效率就成了用户能够访问数据多少的一个最重要的控制,配置的不好甚至有可能成为流量的瓶颈。防火墙的策略:防火墙策略一般分为两种,一种叫“通”策略,一种叫“堵”策略。通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。所以我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。iptables的发展iptables的前身叫ipfirewall(内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,内核2.4系列它叫做iptables/netfilter,可以将规则组成一个列表,实现绝对详细的访问控制功能。iptables是什么:如果想让防火墙生效,必须把规则写在内核中,写进内核,这个做法一般是极其困难的,于是有人想个机制,就是在内核中tcp/ip模块上选择了几个位置,这些位置是开放的,并且只开放给用户空间的某一个命令,这个命令可以生成一条条规则,并且可以把这些规则放到内核这几个位置上去,就是说这几个位置只开放给这个命令,这个命令写的规则会被指定放到相应的位置上去,内核中这几个位置就叫工作框架,那个命令就叫用户空间的管理工具,这个命令在Linux2.0中叫ipfw,内核位置firewall,Linux2.2叫ipchain,内核位置firewall,Linux2.4叫iptables,内核位置是netfilter。netfilter就是可以放规则的内核位置,iptables就是用户空间命令,可以写规则,放进内核中的应用程序,所以生效的是内核位置的这些规则,当写完规则,iptables应用程序就没有用了,就是规则生成器。iptables他们都是工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,可以让在内核空间当中的netfilter来读取,并且实现让防火墙工作。而放入内核的地方必须要是特定的位置,必须是tcp/ip的协议栈经过的地方。而这个tcp/ip协议栈必须经过的地方,可以实现读取规则的地方就叫做netfilter.(网络过滤器)作者一共在内核空间中选择了5个位置:1.内核空间中:从一个网络接口进来,到另一个网络接口去的2.数据包从内核流入用户空间的3.数据包从用户空间流出的4.进入/离开本机的外网接口5.进入/离开本机的内网接口这5个位置也被称为五个钩子函数(hookfunctions),也叫五个规则链:1.PREROUTING(路由前)2.INPUT(数据包流入口)3.FORWARD(转发管卡)4.OUTPUT(数据包出口)5.POSTROUTING(路由后)这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。filter(过滤)功能,定义允许或者不允许的,对于filter来讲一般只能做在3个链上:filter表INPUTOUTPUTFORWARDnat(地址转换)功能,可以写在如下的规则链中:nat表PREROUTINGOUTPUTPOSTROUTINGmangle(拆开、修改、封装):修改报文原数据,mangle表PREROUTINGINPUTFORWARDOUTPUTPOSTROUTINGraw():数据跟踪处理PREROUTINGOUTPUT表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。定义链:iptables还支持自己定义链。但是自己定义的链,必须是跟某种特定的链关联起来的。在一个关卡设定,指定当有数据的时候专门去找某个特定的链来处理,当那个链处理完之后,再返回。接着在特定的链中继续检查。可以使用自定链,但只在被调用时才能发挥作用,而且如果没有自定义链中的任何规则匹配,还应该有返回机制;用可以删除自定义的空链默认链无法删除#iptables-Nclean_in#iptables-Aclean_in-d255.255.255.255-picmp-jDROP#iptables-Aclean_in-d172.16.255.255-picmp-jDROPiptables/netfilter(这款软件)是工作在用户空间的,它可以让规则进行生效的,本身不是一种服务,而且规则是立即生效的。而我们iptables现在被做成了一个服务,可以进行启动,停止的。启动,则将规则直接生效,停止,则将规则撤销。iptables相关模块:可以使用命令lsmod命令查看有关iptables模块:[root@fuzhu~]#lsmod|grepipip_conntrack917490nfnetlink404571ip_conntrackiptable_filter361611ip_tables554571iptable_filterx_tables505052xt_tcpudp,ip_tables……………………………..[root@fuzhu~]#如果没有相关模块,需要安装:安装iptable_mangle模块:[root@fuzhu~]#modprobeiptable_mangle[root@fuzhu~]#echoiptable_mangle/etc/rc.local[root@fuzhu~]#lsmod|grepiptableiptable_mangle360330iptable_filter361611ip_tables554572iptable_mangle,iptable_filter[root@fuzhu~]#安装iptable_nat模块:[root@fuzhu~]#modprobeiptable_nat[root@fuzhu~]#echoiptable_nat/etc/rc.local[root@fuzhu~]#lsmod|grepiptableiptable_nat405170ip_nat529731iptable_natiptable_mangle360330ip_conntrack917492iptable_nat,ip_natiptable_filter361611ip_tables554573iptable_nat,iptable_mangle,iptable_filterx_tables505053iptable_nat,xt_tcpudp,ip_tables[root@fuzhu~]#安装ip_conntrack模块:[root@fuzhu~]#modprobeip_conntrack[root@fuzhu~]#echoip_conntrack/etc/rc.local[root@fuzhu~]#lsmod|grepiptableiptable_nat405170ip_nat529731iptable_natiptable_mangle360330ip_conntrack917492iptable_nat,ip_natiptable_filter361611ip_tables554573iptable_nat,iptable_mangle,iptable_filterx_tables505053iptable_nat,xt_tcpudp,ip_tables[root@fuzhu~]#规则的写法规则的次序非常关键,谁的规则越严格,应该放的越靠前,而检查规则的时候,是按照从上往下的方式进行检查的。iptables不是服务,但有服务脚本;服务脚本的主要作用在于管理保存的规则装载及移除iptables/netfilter相关的内核模块有:iptables_nat,iptables_filter,iptables_mangle,iptables_raw,ip_nat,ip_conntrack格式:iptables[-tTABLE]COMMANDCHAIN[num]匹配标准-j处理办法例如:iptables-tfilter-AINPUT-s172.16.0.0/16-d172.16.100.7-jDROP说明:iptables:关键字[-tTABLE]:指定表名,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。COMMAND:命令,通常是选项,定义如何对规则进行管理。1.链管理命令(这都是立即生效的)-P:设置默认策略的(设定默认门是关着的还是开着的)默认策略一般只有两种iptables-PINPUT(DROP|ACCEPT)默认是关的/默认是开的比如:iptables-PINPUTDROP这就把默认规则给拒绝了。并且没有定义哪个动作,所以关于外界连接的所有规则包括Xshell连接之类的,远程连接都被拒绝了。-F[CHAIN]:flush,清空指定规则链,如果省略CHAIN,则可以实现删除对应表中的所有链(注意每个链的管理权限)iptables-tnat-FPREROUTINGiptables-tnat-F清空nat表的所有链-N:NEW支持用户新建一个链iptables-Ninbound_tcp_web表示附在tcp表上用于检查web的。-X:用于删除用户自定义的空链使用方法跟-N相同,但是在删除之前必须要将里面的链给清空昂了-E:用来Renamechain主要是用来给用户自定义的链重命名-Eoldnamenewname-Z:清空链,及链中默认规则的计数器的(有两个计数器,被匹配到多少个数据包,多少个字节)iptables-Z:清空2.规则管理命令-A:追加,在当前链的最后新增一个规则-Inum:插入,把当前规则插入为第几条。-Ifilter3:插入为第三条,如果不指定数字,默认插入第一条。-Rnum:Replays替换/修改第几条规则格式:iptables-R3…………-DCHAINnum:删除,明确指定删除链的第几条规则3.查看管理命令-L:显示指定表中的规则;附加子命令-n:以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向
本文标题:36.Linux iptables服务
链接地址:https://www.777doc.com/doc-4578481 .html