TCP intercept
R1R2建立 TCP连接的过程:
1、  R1发送一个序列号100R2SYN
2、  R2回复101,并发送自己的一个序列号200(SYN ACK)
3、  R1回复R2一个201序列号(ACK)
至此R1R2双方的TCP连接建立完全。
 
R1R2发送数据,R2回应R1的数据并发送自己的序列号,如果这时R1不给R2回应,则R2会启动一个等待计时器来等待这个回应,直到超时为止。这样的连接称为半连接。
 
如果R2是一台服务器,这样的半连接过多,会占用掉服务器的资源 ,从而导致服务器瘫痪不能正常工作,为了避免这种情况在服务器上可以进行设置,同样在中间路由器上也可以设置。
 
路由器上可以监测TCP连接的状态,如果长时间TCP连接都没有建立成功,则认为这是 一个攻击,并告诉服务器端重置这个会话;还可以在路由器上设置半连接的最大数量。
路由器为服务器提供TCP保护的两种模式:
1、  watch模式
客户端的TCP连接请求会被正确发送到服务器,路由器会跟踪监测这条会话,如果长时间TCP连接都没有建立成功,路由器会向服务器端发送重置会话的请求。
2、  intercept模式
客户端的TCP连接请求会被停置在路由器上,只有当三次握手建立后,才会将该会话发送给服务器,让服务器与客户端正常连接,否则路由器将清除该会话。
 
在配置TCP intercept时,需要通过ACL来告诉路由器需要监测哪些TCP会话
 
配置TCP intercept
1、  建立ACL告诉路由器需要监测哪些TCP会话,并将ACLtcp intercept关联起来
Access-list 100 permit tcp any any
Ip tcp intercept list 100
 
2、  配置TCP intercept的模式
Ip tcp intercept mode watch
Ip tcp intercept mode intercept
 
3、  配置半连接最长等待时间,也就是watch模式的最长等待时间
Ip tcp intercept watch-timeout 60          时间以秒为单位
在这里还可以配置一个连接超时时间,即TCP连接建立完后多长时间没有传送数据就断开该连接。默认路由器会监测这个会话24小时,这个时间可以修改,比如修改为1个小时
         Ip tcp intercept connection-timeout 3600\
 
4、  定义路由器中记录的半连接数的阈值,默认分别为9001100
Ip tcp intercept max-incomplete low 800
Ip tcp intercept max-incomplete high 1000
还可以定义每分钟最大/小的半连接数
         Ip tcp intercept one-minute low 800
         Ip tcp intercept one-minute high 1000
5、  配置丢弃模式,即半连接数达到最大阈值时,如何丢弃连接;默认是丢弃时间最长的会话
Ip tcp intercept drop-mode old/random