天天看点

TCP intercept

TCP intercept

R1与R2建立 TCP连接的过程:

1、  R1发送一个序列号100至R2(SYN )

2、  R2回复101,并发送自己的一个序列号200(SYN ACK)

3、  R1回复R2一个201序列号(ACK)

至此R1与R2双方的TCP连接建立完全。

R1给R2发送数据,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会话,并将ACL与tcp 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、  定义路由器中记录的半连接数的阈值,默认分别为900和1100

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