首页 > 其他 > 详细

Iptables

时间:2014-03-26 08:06:47      阅读:716      评论:0      收藏:0      [点我收藏+]

1:Iptables/netfiter是linux下工作在网络层的防火墙,但是他支持连接追踪(状态检测).很多防火墙资料但中,都把iptables和netfiter叫做防火墙,其实netfiter是linux内核中实现的包过滤防火墙的内部结构,不以程序或文件的形式存在,属于内核态(内核空间),而iptables是管理防火墙命令的工具,是一个程序,iptables在为netfiter的管理上提供策略和规则(以下统统成为iptables).其中又分为网络防火墙和应用层防火墙(网关).

1.1:网络防火墙

数据报文到达该防火墙时,该防火墙会检测ip首部中的源地址,目标地址,TTL,tcp的源端口,目标端口TTL等,如果匹配到防火墙定义的规则,就进行相应的处理,如:通过,丢弃,许进不许出等.但是ip是很容易伪装的,所以就有了应用层防火墙

1.2:应用层防火墙(网关,代理服务器)

工作在应用层,不检测ip和tcp报文,但是会检测数据的内容,如果内容匹配到防火墙的策略,就进行相应的处理,如:丢弃或通行,许进不许出等.但是ip和tcp已经被丢弃了,没有了源ip,和源端口,所以该防火墙就把自己当成源ip源端口.

2:工作机制

2:1Iptables的钩子函数

一个数据报文进入我们的linux主机有5中流向,首先进入我们主机的内核空间,这是就是路由前(PREROUTING),内核空间的tcp/ip协议栈上的路由功能(FORWARD)对该报文进行检测,判断该报文的目标ip,如果该报文的目标ip就是我们的机器,就检查目标端口,如果该目标端口有进程在监听,那么路由就会把该报文转发到本机的用户空间中,这就是输入(INPUT).如果目标ip不是本机,就判断本机是否允许做网络间转发,如果不允许,就丢弃该包.如果允许,路由就会把该报文转发到另外一张网卡,这是路由后(POSTROUTING).还有一种情况,如果报文是通过本机出去的呢?这就是输出(OUTPUT)了,总结下来有5种情况了.路由前(PREROUTING),输入(INPUT),路由(FORWARD),输出(OUTPUT),路由后(POSTROUTING),而这5个流向也叫做钩子函数(),也就是我们需要设置的规则.

2.2iptables的处理机制

Iptables是如何防火的呢?有几种情况:过滤(Ffilter).网络地址转换(NAT),NAT又分为源地址转换(DNAT),目标地址转换(SNAT)(源地址转换为目标地址都是在路由后(请求),目标地址转换为源地址都在路由前(响应)).(私有ip是不能访问公网的,客户端经过一台公网ip的服务器访问互联网,在服务器端需要完成地址转换(NAT),该报文刚进入到服务器端的时候(路由前),还不知道该报文的目标ip,所以不能做NAT,需要在路由后做.互联网的响应发回来的时候,服务器在接受到响应报文,因为该报文就是发往本服务器的,如果经过服务器内部的路由的话,就会被服务器端的用户空间接受到该报文,但是该报文又不是服务器端的进程发送的,所以只能不经过该服务器端的路由,直接发回给最初发送请求的客户端,这叫路由前,也就是目标地址转换.简单的说,经过了路由的就叫路由后,没经过路由的就叫路由前).mangle:主要是做记录用的,他可以改变ip或tcp报文中的一些信息,相当于打个标记.raw:这个用的不多,就不做介绍了....总的来说就是:过滤(filter) ,网络地址转换(NAT),mangle,raw

2.3:规则钩子函数+处理机制就组成了规则表了

钩子函数加上处理机制就是他的处理规则了,下面看组合以及优先级

优先级:raw-->mangle-->NAT—>filter

组合四表五链,是表和链的对应关系

raw:PREROUTING,OUTPUT,-->这个用的不多

mangle:INPUT,FORWORD,OUTPUT,PREROUTING,POSTROUTING(主要做防火墙标记的)

nat: PREROUTING,POSTROUTING,OUTPUT

filter:INPUT,FORWORD,OUTPUT(这是默认表,如果执行命令的时候不指定表,默认使用此表),默认有通和堵,通:默认为堵,只对能识别的记性放行.堵:默认为通,只对能识别的就行阻截.

下面是为了另一种记法,五链四表,和上面一样的

路由前(PREROUTING):filter,mangle,raw

输入(INPUT):filter,mangle

路由(FORWARD):mangle,nat

输出(OUTPUT):filter,mangle,nat,raw

路由后(POSTROUTING):mangle,nat

如下图:

bubuko.com,布布扣

2.4:检查条件:网络层防火墙只能检查,ip首部,tcp首部,帧首部等等

IP:源IP,目标IP

TCP:源端口,目标端口,Flags(SYN,ACK,FIN)

UDP:源端口,目标端口

ICMP:ICMP-TYPE

2.5:扩展检查:对时间,对协议,对关键字,对state,

处理机制

DENY:

DROP:

REJECT:

ACCEPT:

RETURN:

3:TCP的有限状态机(这里简单说说,不熟悉的去补补吧)

第一次握手:SYN=1,ACK=0,FIN=0

第二次握手:SYN=1,ACK=1,FIN=0

第三次握手:SYN=0,ACK=1,FIN=0

3.1状态:

客户端服务器状态
CloseListen初始状态
syn_sentsyn_rcvd三次握手
establishedestablished连接状态

4.Iptables命令

4.1新增链


iptables -t filter -N mychain         #-N:新增一条链表
iptables -t filter -L -n              #查看链表
Chain INPUT (policy ACCEPT)           #系统链是policy   
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination       
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination       
Chain mychain (0 references)         #增加了一条mychain的链,自定义链名为references,为引用
target     prot opt source               destination
iptables -X mychain            #删除mychain的链
iptables -t filter -L -n       #查看链,可以看到已经不存在了
Chain INPUT (policy ACCEPT)
target     prot opt source               destination       
                                                                 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination       
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target     prot opt source

4.3:修改链的默认策略

iptables [-t table] -P chain target  #改变表的默认规则,就是我们前面提到的通和堵
iptables -t filter -P FORWARD DROP    #改变filter表中的forward链的默认规则,可以看到意见改变了
iptables -t filter -L -n            #查看链表
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
Chain FORWARD (policy DROP)
target     prot opt source               destination        
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


Iptables,布布扣,bubuko.com

Iptables

原文:http://lidefu.blog.51cto.com/3429777/1384180

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!