iptables的状态检测机制(TCP、UDP、ICMP状态详解)



1、UDP连接连接  


  UDP(用户数据包协议)是一种无状态协议,以为这个协议没有序列号。不过,这并不意味着我们不能跟踪UDP连接。虽然没有序列号,但是我们还可以使用其它的一些信息跟踪UDP连接的状态。下面是状态表中关于UDP连接的条目:  

 udp 17 19 src=192.168.1.2 dst=192.168.1.50 sport=1032 dport=53 [UNREPLIED] src=192.168.1.50 dst=192.168.1.2 sport=53 dport=1032 use=1  

 这个状态表项只有在iptables过滤规则允许建立新的连接时,才能建立。以下的规则可以产生这类状态表项,这两条规则只允许向外的UDP连接:  

iptables -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT   

iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT   

上面的状态表项包含如下信息:

        连接的协议是UDP(IP协议号17)

 这个状态表项还有19秒中就超时


2、TCP连接

iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT


################


Iptables中的有状态
现在我们来解释一下状态 
NEW:如果你的主机向远程机器发时一个连接请求,这个数据包状态是NEW. 
ESTABLISHED:当联接建立之后,远程主机和你主机通信数据状态为ESTABLISHED 
RELATED: 像ftp这样的服务,用21端口传送命令,而用20端口(port模式)或其他端口(PASV模式)传送数据。在已有21端口上建立好连接后发送命令,用20传送的数据,状态是RELATED 

1, 默认规则,对所以进入你机器的数据都丢弃,iptables -P INPUT DROP 
2, 禁止其他机器主动发起对你机器的连接,但你却可以主动的连接其他机器, 这条可以省去由默认规则处理,iptables -A INPUT -m state --state NEW -j DROP 
3, 当你主动连接其他机器之后,再进来的数据就是ESTABLISHED状态了,iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
4, 接下来如果你的机器提供pasv模式的ftp服务(会使用动态的端口来传送数据,这对于有状态的防火墙轻易做到,甚至不用知道它用了哪些端口,因为它会认识到这些数据是RELATED的), 
iptables -A INPUT -i ppp0 -p tcp -dport 21 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp -dport 21 -j ACCEPT 
两条命令就解决了内部用户上网收发E_mail、浏览网页、使用msn聊天等需求
#iptables –A FORWARD –i eth0 –p tcp –m multiport --dports 25,80,110,443,1863 –j ACCEPT
#iptables –A FORWARD –i eth0 –p udp --dport 53 –j ACCEPTIptables中的有状态
现在我们来解释一下状态 
NEW:如果你的主机向远程机器发时一个连接请求,这个数据包状态是NEW. 
ESTABLISHED:当联接建立之后,远程主机和你主机通信数据状态为ESTABLISHED 
RELATED: 像ftp这样的服务,用21端口传送命令,而用20端口(port模式)或其他端口(PASV模式)传送数据。在已有21端口上建立好连接后发送命令,用20传送的数据,状态是RELATED 

1, 默认规则,对所以进入你机器的数据都丢弃,iptables -P INPUT DROP 
2, 禁止其他机器主动发起对你机器的连接,但你却可以主动的连接其他机器, 这条可以省去由默认规则处理,iptables -A INPUT -m state --state NEW -j DROP 
3, 当你主动连接其他机器之后,再进来的数据就是ESTABLISHED状态了,iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
4, 接下来如果你的机器提供pasv模式的ftp服务(会使用动态的端口来传送数据,这对于有状态的防火墙轻易做到,甚至不用知道它用了哪些端口,因为它会认识到这些数据是RELATED的), 
iptables -A INPUT -i ppp0 -p tcp -dport 21 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp -dport 21 -j ACCEPT 
两条命令就解决了内部用户上网收发E_mail、浏览网页、使用msn聊天等需求
#iptables –A FORWARD –i eth0 –p tcp –m multiport --dports 25,80,110,443,1863 –j ACCEPT
#iptables –A FORWARD –i eth0 –p udp --dport 53 –j ACCEPT


 


你可能感兴趣的:(IPTABLES)