1、防火墙简介web
所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上构造的保护屏障。是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间创建起一个安全网关,从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所链接的网络之间的软件或硬件。该计算机流入流出的全部网络通讯和数据包均要通过此防火墙。固然须要注意的是世界上没有绝对的安全,防火墙也只是可以启到必定的安全防御,大多数的安全风险仍是在内网之中。算法
2、防火墙分类
安全
一、从特色上分类bash
(1)软件防火墙,软件防火墙运行于特定的计算机上,它须要客户预先安装好的计算机操做系统的支持,通常来讲这台计算机就是整个网络的网关。俗称“我的防火墙”。软件防火墙就像其它的软件产品同样须要先在计算机上安装并作好配置才可使用。服务器
(2)硬件防火墙,硬件防火墙其实就是一个普通PC机的架构,而后上面跑有专门的操做系统。网络
(3)芯片级防火墙,这种防火墙基于专门的硬件平台,没有操做系统,专有的ASIC芯片使它们比其余类的防火墙速度更快,处理能力极强,性能更高,可是价格也极其昂贵。架构
二、从技术上分类并发
(1)包过滤型防火墙,这类的防火墙主要是工做在网络层,根据事先设定好的规则进行检查,检查结果根据事先设定好的处理机制进行处理。app
(2)应用层防火墙,它是工做在TCP/IP模型中的最高层应用层,相比较来讲速度要慢一点。框架
(3)状态监视器,状态监视做为防火墙其安全性为最佳,但配置比较复杂,且网络速度较慢。
三、iptables的原理详解
一、netfilter与iptables
Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址假装、透明代理、动态网络地址转换(Network Address Translation,NAT),以及基于用户及媒体访问控制(Media Access Control,MAC)地址的过滤和基于状态的过滤、包速率限制等。Iptables/Netfilter的这些规则能够经过灵活组合,造成很是多的功能、涵盖各个方面,这一切都得益于它的优秀设计思想。
Netfilter是Linux操做系统核心层内部的一个数据包处理模块,它具备以下功能:
网络地址转换(Network Address Translate)
数据包内容修改
数据包过滤防火墙功能
链(chains)
Netfilter 平台中制定了数据包的五个链,分别是PRE_ROUTING、INPUT、OUTPUT、FORWARD、POST_ROUTING。链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中能够有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否知足规则所定义的条件。若是知足,系统就会根据该条规则所定义的方法处理该数据包;不然iptables将继续检查下一条规则,若是该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
规则(rules)
规则(rules)其实就是网络管理员预约义的条件,规则通常的定义为“若是数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工做就是添加、修改和删除这些规则。
表(tables)
表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。
二、filter、nat、mangle、raw
filter表
主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT、LOG)。filter 表对应的内核模块为iptable_filter,包含三个规则链:
INPUT链:INPUT针对那些目的地是本地的包;
FORWARD链:FORWARD过滤全部不是本地产生的而且目的地不是本地(即本机只是负责转发)的包;
OUTPUT链:OUTPUT是用来过滤全部本地生成的包;
nat表
主要用于修改数据包的IP地址、端口号等信息(网络地址转换,如SNAT、DNAT、MASQUERADE、REDIRECT)。属于一个流的包(由于包 的大小限制致使数据可能会被分红多个数据包)只会通过这个表一次。若是第一个包被容许作NAT或Masqueraded,那么余下的包都会自动地被作相同的操做,也就是说,余下的包不会再经过这个表。表对应的内核模块为 iptable_nat,包含三个链:
PREROUTING链:做用是在包刚刚到达防火墙时改变它的目的地址;
OUTPUT链:改变本地产生的包的目的地址;
POSTROUTING链:在包就要离开防火墙以前改变其源地址;
mangle表
主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,以实现Qos(Quality Of Service,服务质量)调整以及策略路由等应用,因为须要相应的路由设备支持,所以应用并不普遍。包含五个规则链:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD。
raw表
是自1.2.9之后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理。在匹配数据包时,raw表的规则要优先于其余表。包含两条规则链——OUTPUT、PREROUTING
三、INPUT、FORWARD等规则链和规则
在处理各类数据包时,根据防火墙规则的不一样介入时机,iptables供涉及5种默认规则链,从应用时间点的角度理解这些链:
INPUT链:当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则。
OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则。
FORWARD链:当接收到须要经过防火墙发送给其余地址的数据包(转发)时,应用此链中的规则。
PREROUTING链:在对数据包做路由选择以前,应用此链中的规则,如DNAT。
POSTROUTING链:在对数据包做路由选择以后,应用此链中的规则,如SNAT。
其中中INPUT、OUTPUT链更多的应用在“主机防火墙”中,即主要针对服务器本机进出数据的安全控制;而FORWARD、PREROUTING、POSTROUTING链更多的应用在“网络防火墙”中,特别是防火墙服务器做为网关使用时的状况。
防火墙处理数据包的方式(规则):
ACCEPT:容许数据包经过
DROP:直接丢弃数据包,不给任何回应信息
REJECT:拒绝数据包经过,必要时会给数据发送端一个响应的信息。
SNAT - Source Network Address Translation源网络地址转换。这是一种改变数据包源ip地址的技术, 常常用来使多台计算机分享一个Internet地址。这只在IPv4中使用,由于IPv4的地址已快用完了,IPv6将解 决这个问题。
DNAT - Destination Network Address Translation 目的网络地址转换。 DNAT是一种改变数据包目的 ip地址的技术,常常和SNAT联用,以使多台服务器能共享一个ip地址连入Internet,而且继续服务。经过对 同一个ip地址分配不一样的端口,来决定数据的流向。
MASQUERADE,是SNAT的一种特殊形式,适用于像adsl这种临时会变的ip上。
REDIRECT:是DNAT的一种特殊形式,将网络包转发到本地host上(无论IP头部指定的目标地址是啥),方便在本机作端口转发。
RETURN:返回
LOG:在/var/log/messages文件中记录日志信息,而后将数据包传递给下一条规则。
注意:除去最后一个LOG,前3条规则匹配数据包后,该数据包不会再往下继续匹配了,因此编写的规则顺序极其关键。
四、 Linux数据包路由原理
网口数据包由底层的网卡NIC接收,经过数据链路层的解包以后(去除数据链路帧头),就进入了TCP/IP协议栈(本质就是一个处理网络数据包的内核驱动)和Netfilter混合的数据包处理流程中了。数据包的接收、处理、转发流程构成一个有限状态向量机,通过一些列的内核处理函数、以及Netfilter Hook点,最后被转发、或者本次上层的应用程序消化掉。是时候看这张图了:
从上图中,咱们能够总结出如下规律:
当一个数据包进入网卡时,数据包首先进入PREROUTING链,在PREROUTING链中咱们有机会修改数据包的DestIP(目的IP),而后内核的”路由模块”根据”数据包目的IP”以及”内核中的路由表”判断是否须要转送出去(注意,这个时候数据包的DestIP有可能已经被咱们修改过了)
若是数据包就是进入本机的(即数据包的目的IP是本机的网口IP),数据包就会沿着图向下移动,到达INPUT链。数据包到达INPUT链后,任何进程都会-收到它
本机上运行的程序也能够发送数据包,这些数据包通过OUTPUT链,而后到达POSTROTING链输出(注意,这个时候数据包的SrcIP有可能已经被咱们修改过了)
若是数据包是要转发出去的(即目的IP地址再也不当前子网中),且内核容许转发,数据包就会向右移动,通过FORWARD链,而后到达POSTROUTING链输出(选择对应子网的网口发送出去)
咱们在写Iptables规则的时候,要时刻牢记这张路由次序图,根据所在Hook点的不一样,灵活配置规则。
4、iptables的几个状态
iptables的状态跟踪链接有4种,分别是:NEW、ESTABLISHED、RELATED、INVALID,除了从本机出去的数据包有NAT表的OUTPUT链处理外,其它全部的状态跟踪都在NAT表中的PREROUTING链中处理,具体状态信息以下:
一、NEW状态:说明这个数据包是收到的第一个数据表。
二、ESTABLISHED状态:只要发送并接到应答,一个数据表的状态就从NEW变为ESTABLISHED,而且该状态会继续匹配这个链接后继数据包。
三、RELATED状态:当一个数据包的状态处于ESTABLISHED状态的链接有关系的时候,就会被认为是RELATED,也就是说一个链接想要是RELATED状态,首先要有一个ESTABLISHED的链接。
四、INVALID状态:不能被识别属于哪一个链接状态或没有任何关系的状态,通常这种数据包都是被拒绝的。
5、iptables的命令使用
一、查看链表,建立链表类命令
(1)、建立自定义链 iptables [-t table] -N chain :建立一条自定义规则的链 # iptables -t filter -N clean_in #自定义链在没有引用以前是不起做用的 (2)、删除自定义链 iptables [-t filter] -X [chain] : 删除一个自定义链 # iptables -t filter -X clean_in (3)、修改自定义链名字 iptables [-t table] -E old-chain-name new-chain-name : 为一个自定义链修更名字
二、查看修改规则命令组
-F:清空链中的规则,规则具备编号,从上到下,从1开始 -L:list,列出表中的全部规则 -n: 数字格式显示IP和Port -v: 详细格式显示 pkts bytes target prot opt in out source destination 每一个字段的含义: pkts: packets, 被本规则所匹配到的报文的个数; bytes: 被本规则所匹配到的全部报文的大小之和,会执行单位换算; target: 目标,即处理机制; prot: 协议,通常为{TCP|UDP|ICMP}; opt: 可选项 in: 数据包的流入接口; out: 数据包的流出接口; source: 源地址; destination: 目标地址; -X:exactly, 精确值,不执行单位换算 --line-number: 显示各规则的行号 -Z:匹配数量清零
三、添加和编辑规则
-A: append, 附加一条规则 -D chain [rulenum] rule-specification: 删除一条规则 -I chain [rulenum] rule-specification : 修改规则 -R chain [rulenum] rule-specification:替换指定规则 -S chain [rulenum] 只显示链上的规则添加 rule-specification格式 : 匹配条件 -j 处理机制 通用匹配条件: -s: 匹配原地址,能够IP,也能够是网络地址,可使用操做符取反!192.168.0.0/16;-s至关于--src或--source -d: 匹配目标地址 -p: 匹配协议,一般只使用{TCP|UDP|ICMP}三者之一; -i:数据报文流入的接口:一般用于INPUT, FORWARD, PREROUTING -o:流出接口,一般只用于OUTPUT,FORWARD,和POSTROUTING -j target RETURN:返回调用链 ACCEPT: 放行 示例: 一、为了避免断开主机,先开放本机的22号端口 # iptables -t filter -A INPUT -s 192.168.0.0/16 -d 192.168.130.251 -p tcp --dport 22 -j ACCEPT # iptables -t filter -A OUTPUT -s 192.168.130.251 -d 192.168.0.0/16 -p tcp --sport 22 -j ACCEPT # iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -L -n -v Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 253 21356 ACCEPT tcp -- * * 192.168.0.0/16 192.168.130.251 tcp dpt:22 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 62 6640 ACCEPT tcp -- * * 192.168.130.251 192.168.0.0/16 tcp spt:22 二、容许192.168.0.0/24网段ping通,当前192.168.120.251主机 # ping -w 2 -c 2 192.168.130.251 #先ping一下测试 PING 192.168.130.251 (192.168.130.251) 56(84) bytes of data. --- 192.168.130.251 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 1999ms #不通 # iptables -A INPUT -s 192.168.0.0/16 -d 192.168.130.251 -p icmp --icmp-type 8 -j ACCEPT # iptables -A OUTPUT -s 192.168.130.251 -d 192.168.0.0/16 -p icmp --icmp-type 0 -j ACCEPT # ping -w 2 -c 2 192.168.130.251 #另外一台机器ping测试 PING 192.168.130.251 (192.168.130.251) 56(84) bytes of data. 64 bytes from 192.168.130.251: icmp_seq=1 ttl=64 time=0.350 ms 64 bytes from 192.168.130.251: icmp_seq=2 ttl=64 time=0.412 ms --- 192.168.130.251 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.350/0.381/0.412/0.031 ms # iptables -L -n -v #查看本机报文匹配 Chain INPUT (policy DROP 1 packets, 229 bytes) pkts bytes target prot opt in out source destination 872 72532 ACCEPT tcp -- * * 192.168.0.0/16 192.168.130.251 tcp dpt:22 2 168 ACCEPT icmp -- * * 192.168.0.0/16 192.168.130.251 icmp type 8 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 440 46340 ACCEPT tcp -- * * 192.168.130.251 192.168.0.0/16 tcp spt:22 2 168 ACCEPT icmp -- * * 192.168.130.251 192.168.0.0/16 icmp type 0
三、iptables隐含扩展
一、tcp协议隐含扩展 -p tcp --dport m[-n]:匹配的目标端口,可使连续的多个端口 -sport: 源端口 --tcp-flags rst,syn,ack,fin syn : 空格以前表示匹配哪些标识位,空格以后是哪些标识位为1 --syn:单独匹配某一项标识位 全部使用的值: URG, PSH, RST, SYN, ACK, FIN,ALL, NONE 示例:释放全部192.168.0.0/16网段的ssh服务 # iptables -t filter -A INPUT -s 192.168.0.0/16 -d 192.168.130.251 -p tcp --dport 22 -j ACCEPT # iptables -t filter -A OUTPUT -s 192.168.130.251 -d 192.168.0.0/16 -p tcp --sport 22 -j ACCEPT # iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -L -n -v Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 253 21356 ACCEPT tcp -- * * 192.168.0.0/16 192.168.130.251 tcp dpt:22 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 62 6640 ACCEPT tcp -- * * 192.168.130.251 #结果: ssh连接不会断开,能够看见进出都有报文匹配 二、udp协议隐含扩展 -p udp : udp报文相关的拓展匹配 --dport --sport 放行本机的tftp服务 # iptables -A INPUT -s 192.168.0.0/16-d 192.168.130.251 -p udp --dport 69 -j ACCEPT # iptables -A OUTPUT -s 192.168.130.251 -d 192.168.0.0/16 -p udp --sport 69 -j ACCEPT 放行本机DNS服务 # iptables -A INPUT -s 192.168.0.0/16 -d 192.168.130.51 -p udp --dport 53 -j ACCEPT # iptables -A OUTPUT -s 192.168.130.251 -d 192.168.0.0/16 -p udp --sport 53 -j ACCEPT 三、ICMP协议的隐含扩展 -p icmp : icmp协议相关拓展 --icmp-type 8: ping 请求 0:ping 响应
四、iptables显示扩展:必须指定扩展模块
一、multiport:多端口匹配模块,一次能够指定最多15离散端口。 -m multiport --source-ports,--sports port[,port|,port:port] : 指定源端口 --destination-port, --dports: 指定目标端口 --ports: 指定源端口和目标端口 #示例:开放本机所在网络,ssh和web服务。 # iptables -A INPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -p tcp -m multiport --dport 22,80 -j ACCEPT # iptables -A OUTPUT -s 192.168.130.251 -d 192.168.0.0/16 -p tcp -m multiport --sport 22,80 -j ACCEPT 二、iprange:匹配IP地址范围 -m iprange: [!] --src-range from[-to] [!] --dst-range from[-to] #示例:开放本机ssh给192.168.130.1-192.168.130.100访问 # iptables -A INPUT -d 192.168.130.251 -p tcp --dport 22 -m iprange --src-range 192.168.130.1-192.168.130.100 -j ACCEPT # iptables -A OUTPUT -s 192.168.130.251 -p tcp --sport 22 -m iprange --dst-range 192.168.130.1-192.168.130.100 -j ACCEPT 三、time:指定时间范围匹配 -m time --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]] --timestart hh:mm[:ss] --timestop hh:mm[:ss] [!] --weekdays day[,day...] #示例:在工做时间开放samba(tcp,901端口)服务 # iptables -A INPUT -d 192.168.130.251 -p tcp --dport 901 -m time --weekday Mon,Tus,Wed,Thu,Fri --timestart 09:00:00 --timestop 18:00:00 -j ACCEPT # iptables -A OUTPUT -s 192.168.130.251 -p tcp --sport 901 -j ACCEPT 四、string:字符串过滤 -m string --algo {bm|kmp}:字符匹配查找时使用的算法 --string "STRING" : 要查找的字符串 --hex-string "HEX-STRING": 要查找的字符,先编码成16进制格式,能够提升查询效率 示例:禁止本机的web报文,包含‘hello’字符 # iptables -A INPUT -s 192.168.0.0/16 -d 192.168.130.251 -p tcp -m string --algo bm --string "hello" -j DROP # iptables -A OUTPUT -s 192.168.130.251 -p tcp --sport 80 -j ACCEPT 五、connlimit:每一个IP对指定服务的最大并发链接数 -m connlimit --connlimit-above [n]:链接的数量大于n --connlimit-upto [n]:链接的数量小于等于n 六、limit:报文速率控制 -m limit --limit #/[/second|/minute|/hour|/day] 限制速率 --limit-burst # 峰值速率 举例: 防护DDos*** # iptables -I INPUT -d 192.168.130.251 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 10 -j ACCEPT 在另外一台主机上,使用hping3命令发起*** # hping -1 -c 10000 -i u1 192.168.130.251 七、state:状态匹配 -m state --state NEW:新发出的请求;链接追踪模版中不存在此链接相关的条目 ESTABLISHED:已经创建的链接 RELATED:与现有链接有关联的链接 INVALID:没法识别的链接,异常链接 状态匹配是由ip_conntrack, nf_conntrack两个模块实现的。 # cat /proc/sys/net/nf_conntrack_max 定义了链接追踪的最大值,所以,建议按需调大此值; # cat /proc/net/nf_conntrack 记录了当前追踪的全部链接 # cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established 记录创建的链接超时时间 法则: 1. 对于进入的状态为ESTABLISHED都应该放行; 2. 对于出去的状态为ESTABLISHED都应该放行; 3. 严格检查进入的状态为NEW的链接; 4. 全部状态为INVALIED都应该拒绝; 示例:放行工做于被动模式下的FTP服务 1. 确保iptables加载ftp协议支持的模块:ip_nat_ftp, ip_conntrack_ftp 编辑/etc/sysconfig/iptables-config文件,定义以下参数: IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp" 2. 开放命令链接端口,tcp 21号端口 # iptables -A INPUT -d 192.168.130.251 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT 3. 放行请求报文的RELATED和ESTABLISHED状态,放行响应报文的ESTABLISHED状态; # iptables -A INPUT -d 192.168.130.251 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT # iptables -A OUTPUT -s 192.168.130.251 -p tcp -m state --state ESTABLISHED -j ACCEPT 若是只开放命令链接的话,依然能够进行身份认证,可是没法下载,或者查看目录
五、INPUT和OUTPUT默认策略
1. 限制本地主机的web服务器在周一不容许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不容许访问;web服务器仅容许响应报文离开本机; # iptables -A INPUT -d 192.168.130.251 -p tcp --dport 80 -m state --state NEW -m limit --limit 100/second -m time ! --weekdays Mon -j ACCEPT # iptables -A INPUT -d 192.168.130.251 -p tcp --dport 80 -m state --state ESTABLISHED -j ACCEPT # iptables -A OUTPUT-s 192.168.130.251 -p tcp --sport 80 -m state --state ESTABLISHED -m string --algo kmp ! --string "admin" -j ACCEPT 2. 在工做时间,即周一到周五的8:30-18:00,开放本机的ftp服务给192.168.130.0网络中的主机访问;数据下载请求的次数每分钟不得超过5个 # iptables -R INPUT 2 -d 192.168.130.251 -s 192.168.130.0/24 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -m time --weekdays Mon,Tus,Wed,Thu,Fri --timestart 08:00:00 --timestop 18:00:00 -j ACCEPT # iptables -R INPUT 3 -d 192.168.130.251 -s 192.168.130.0/24 -p tcp -m state --state RELATED -m limit --limit 5/min -j ACCEPT # iptables -A INPUT -d 192.168.130.251 -s 192.168.130.0/24 -p tcp -m state --state ESTABLISHED -j ACCEPT # iptables -A OUTPUT -d 192.168.130.0/24 -s 192.168.130.251 -p tcp -m state --state ESTABLISHED -j ACCEPT 3. 开放本机的ssh服务给192.168.130.1-192.168.130.100中的主机,新请求创建的速率一分钟不得超过2个;仅容许响应报文经过其服务端口离开本机; # iptables -A INPUT -d 192.168.130.251 -p tcp --dport 22 -m state --state NEW -m iprange --src-range 192.168.130.1-192.168.130.100 -m limit --limit 2/min -j ACCEPT # iptables -A INPUT -d 192.168.130.251 -p tcp --dport 22 -m state --state ESTABLISHED -m iprange --src-range 192.168.130.1-192.168.130.100 -j ACCEPT # iptables -A OUTPUT -s 192.168.130.251 -p tcp --sport 22 -m iprange --dst-range 192.168.130.1-192.168.130.100 -m state --state ESTABLISHED -j ACCEPT 4. 拒绝TCP标志位所有为1及所有为0的报文访问本机; # iptables -A INPUT -d 192.168.130.251 -p --tcp-flags ALL ALL -j DROP
6、iptables看成网络防火墙的一些设置
一、FORWARD链限定本机路由功能
一、开启路由转发 # echo 1 > /proc/sys/net/ipv4/ip_forward 二、限定须要在FORWARD链上面写规则 举例: 三台主机,vm1,vm2,vm3 vm1: IP地址,192.168.130.10 vm2: IP地址,192.168.130.1 另外一块网卡为172.16.100.1 vm3:IP地址,172.16.100.200 只开通vm1和vm3之间的ping 请求 ## 设置vm1主机 # route add default gw 192.168.130.1 ## 设置vm3主机 # route add default gw 172.16.100.1 ## 设置vm2主机 # echo 1 /proc/sys/net/ipv4/ip_forward # iptables -t filter -A FORWARD -s 192.168.130.10 -d 172.16.100.200 -p icmp -j ACCEPT # iptables -t filter -A FORWARD -s 172.16.100.200 -d 192.168.130.10 -p icmp -j ACCEPT # iptables -P FORWARD DROP