Linux防火墙的规则和语法

本文发布时间: 2019-Mar-21
今天给大家带来的是防火墙一、防火墙防火墙分为网络防火墙和应用层防火墙1、网络防火墙网络防火墙就是一个位于计算机和它所连接的网络之间的防火墙。该计算机流入流出的所有网络通信均要经过此防火墙。防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。2、应用层防火墙应用层防火墙是在 TCP/IP 堆栈的“应用层”上运作,您使用浏览器时所产生的数据流或是使用 FTP 时的数据流都是属于这一层。应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。因为应用层防火墙的算法会更复杂,过虑更为严格,所以在部署防火墙的时候,要把应用层防火墙部署到网络防火墙的里边。Linux防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(网络层防火墙)。二、iptables的表链结构1、iptables简介平时说iptables是防火墙,其实iptables是iptables/netfilter组合中的一个,只有iptables/netfilter才应该叫做防火墙,它是基于软件方式工作的网络防火墙。iptables工作于用户空间,是防火墙的规则编写工具,使用iptables编写规则并且发送到netfilter;防火墙的规则刚放到netfilter中,它是一个能够让规则生效的网络架构,工作于内核空间。2、iptables的表、链结构iptables是由四表五链组成的,想要配置iptables必须先了解这四表五链一个规则可以出现在多个表中,谁先谁后呢?所以在这四个表中是存在优先级关系的:1)四表优先级:raw表 > mangle表 > nat表 > filter表①、raw表RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了。RAW表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度。raw内含有两个链:PREROUTING和OUTPUT②、mangle表mangle表一般是对数据包进行修改用的比如在网络的转发过程中,数据包要从X到Z,中间夹了一个Y,当数据从X到Y的时候,Y要运行拆包,看是不是自己的,如果是就收下了,如果不就是重新封装,把源IP改为自己的,而不再是X的了,再进行转发。mangle表中含五个链:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING③、nat表用于nat功能(端口映射,地址映射等)主要用来处理一些将要到达本机路由和将要离开本机路由的数据包,修改数据包中的源、目标IP地址或端口;其对应的模块为iptable_nat。nat表内含三个链:PREROUTING、POSTROUTING、OUTPUT④、filter表一看名字就知道是用来做过滤用的。filter表是iptables的默认表,如果在设置规则时,不指定表,则默认就是在filter表上操作filter表内含三个链:INPUT、FORWARD、OUTPUT2)五链这五条链其实就是针对防火墙策略的规则①、PREROUTING路由前,数据包在经过防火墙前应做如何处理②、INPUT在数据包进行进入本机前就做何处理,目标是本机,不是网络内的主机③、OUTPUT在数据包离开本机时做何处理,源是本机,目标是其它主机④、FORWARD对于转发数据包做如何处理,因为本机可能是一台代理服务器,网络内的其它主机在与互联网通信时都需要经过这台服务器的转发⑤、POSTROUTING在数据包离开防火墙时做如何处理INPUT、OUTPUT链主要用在“主机型防火墙”中,即主要针对服务器本机进行保护的防火墙;而FORWARD、PREROUTING、POSTROUTING链多用在“网络型防火墙”中,三、iptables数据包的过滤流程为了更直观的表现数据包的过滤流程,请参考第二步及下图四、iptables使用规则iptables规则=检查条件+处理机制1)检查条件(1)IP:源IP,目标IP(2)Protocal:TCP、UDP、ICMPTCP:源端口、目标端口、FlagsUDP:源端口、目标端口ICMP:ICMP-TYPETCP Flags:基于标记的TCP包匹配经常被用于过滤试图打开新连接的TCP数据包,共有六个标志位,UDP没有①、URG如为1,则表示本数据包中含有紧急数据②、ACK确认标志们③、PSHPUSH操作,所谓PUSH操作就是批数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队④、RST表示连接复位请求,用来复位那些产生错误的连接;当PST=1时,表示出现严重错误,必须释放连接,然后再重新建立⑤、SYN表示同步序号,用来建立连接。SYN=1,ACK=0 表示连接请求SYN=1,ACK=1 表示连接请求被响应⑥、FIN表示数据已经发送完毕,希望释放连接2)处理机制、动作 -j targetACCEPT:将包放行,进行完此处理动作后,将不再匹配其它规则,直接跳往下一个规则链DENY:拒绝,委婉式的拒绝DROP:丢弃数据包,进行完此处理动作后,将不再匹配其它规则,直接中断过滤程序REJECT:阻拦该数据包,并通知对方(ICMP消息)SNAT:改定数据包源IPDNAT:改定数据包目标IPRETURN:结束在目前规则链中的过滤程序,返回主规则链继续过滤,如果把自定义规则链看成是一个子程序,那么这个动作,就相当于提前结束子程序并返回到主程序中。REDIRECT:将数据包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续匹配其它规则LOG:记录日志五、iptables语法1)创建一条自定义的规则链1iptables [-t table] -N chain2)删除一条自定义的规则链,必须为空链1iptables [-t table] -X [chain]3)修改自定义链名1iptables [-t table] -E old-chain-name new-chain-name4)为链指定默认策略,指定默认规则1iptables [-t table] -P chain target5)iptables [-t talbe] {-F|-L|-Z} [chain[rulenum]][options...]-F:flush,清空链中的规则,不指链则清空表中的所有规则,规则有编号,自上而下从1开始-L:list,列出表中的所有规则-n:只和-L一块用,数字格式显示IP和PORT-v:verbose,以详细格式显示-vvv-x:exactly,精确值,不执行单位换算--line-numbers:显示各规则的行号-Z:zero,清零,把规则的计数器清零6)iptables [-t table] {-A|-D} chain rule-specification-A:append,附加一条规则,添加到现在规则链的最下面(-I:默认添加到最前面)rule-specification匹配条件 -j 处理机制(1)通用匹配:-s:source,匹配源地址,可以是IP,也可以是网络地址;可以使用!操作符取反-d:匹配目标地址,可以是IP,也可以是网络地址;可以使用!操作符取反-p:匹配协议,通常只使用{TCP|UDP|ICMP}三者之一-i:数据报文流入接口;通常只用于INPUT、FORWARD和PREROUTING-o:数据报文流出接口;通常只用于OUTPUT、FORWARD和POSTROUTING(2)扩展匹配:①隐含扩展:使用-p{tcp|udp|icmp}指定某特定服务后,自动能够对协议进行扩展-p tcp--dport m[-n]:匹配的目标端口,可以是连续的多个端口--sport m[-n]:匹配的源端口,可以是连续的多个端口--tcpflags (6个标志们:URG、PSH、RST、SYN、ACK、FIN)--tcp-flags rst,syn,ack,fin syn = --synALL,NONE-p udp udp没有标志位,所以只有源端口和目标端口可选--dport--sport-p icmp--icmp-type8:ping 请求0:ping响应②显示扩展:必须要明确指定的扩展模块-m 扩展模块名称 --专用选项1 --专用选项2multiport:多端口匹配,一次指定多个(15个以内)离散端口--source-ports, --sports--destination-ports, --dports--portsiprange:ip地址范围[!] --src-range from[-to][!] --dst-range from[-to]time:指定时间范围datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]datestoptimestart hh:mm[:ss]timestop hh:mm[:ss][!]--weekdays day[,day...]string:字符串匹配--algo{bm|kmp}:字符匹配查找时使用算法--string "STRING":要查找的字符串--hex-string "HEX-STRING":要查找的字符,先编码成16进制格式connlimit:第IP对指定服务的最大并发连接数[!]--connlimit-above [n]limit:报文速率控制--limit #[/second|/minute|/hour|/day]--limit-burst #state:状态匹配ip_conntrack,nf_conntrack--stateNEWESTABLISHEDRELATEDINVALID-D 删除规则1iptables [-t table] -D chain rulenum-I 插入规则1iptables [-t table] -I chain [rulenum] rule-specification-R 替换指定规则1iptables [-t table] -Rchain rulenum rule-specification-S 只显示指定链上的规则添加命令1iptables [-t table] -S [chain [rulenum]]


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:08pm
栏目列表