WEB开发网
开发学院网络安全防火墙 基于Linux系统的包过滤防火墙(2) 阅读

基于Linux系统的包过滤防火墙(2)

 2006-04-03 12:36:56 来源:WEB开发网   
核心提示:第2章、用用户空间命令iptables实现包过滤2.1相关的TCP/IP知识2.1.1建立TCP连接(通过3次握手实现)假如服务器A和客户机B通信,(1)B->;A,基于Linux系统的包过滤防火墙(2),当B要和A通信时,B首先向A发一个SYN标记的包,便送出ACK/FIN包,(4)B->;A,告诉A请求

第2章、用用户空间命令iptables实现包过滤

2.1 相关的TCP/IP知识

2.1.1建立TCP连接(通过3次握手实现)

假如服务器A和客户机B通信。

(1)B->;A。当B要和A通信时,B首先向A发一个SYN标记的包,告诉A请求建立连接。只有当A收到B发来的SYN包,才可以建立连接,除此之外别无它法。因此,如果你的防火墙丢弃所有的发往外网接口的SYN包,那么你将不能让外部任何主机主动建立连接。

(2)B<-A。接着,A收到后会发一个对SYN包的确认包(SYN/ACK)回去,表示对第一个SYN包的确认,并继续握手操作。

(3)B->;A。B收到SYN/ACK包后,B发一个确认包(ACK),通知A连接已建立。至此,3次握手完成,一个TCP连接完成。

需要注意的是,当3次握手完成、连接建立以后,TCP连接的每个包都会设置ACK位。这就是为何连接跟踪很重要的原因了,没有连接跟踪,防火墙将无法判断收到的ACK包是否属于一个已经建立的连接。

2.1.2 结束TCP连接(通过4次握手实现)

假如服务器A和客户机B通信。注意,由于TCP连接是双向连接,因此关闭连接需要在两个方向上做。

(1)B->;A。当B要与A结束通信时,B首先向A发一个FIN标记的包,告诉A请求结束连接。由于连接还没有关闭,FIN包总是打上ACK标记。没有ACK标记而仅有FIN标记的包不是合法的包,并且通常被认为是恶意的。

(2)B<-A。A送出ACK包给B,表示成功地中止B->;A传输通道。不过A->;B可能还有数据包需要传送,所以A->;B传输通道仍旧继续畅通,直到传输完毕才会进入下一步。

(3)B<-A。当A完成B<-A的传输后,便送出ACK/FIN包。

(4)B->;A。B送出ACK包给A进行确认。

1 2 3 4 5 6  下一页

Tags:基于 Linux

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接