tcp半连接攻击防护

最近总有些人在负责的网吧里面搞破坏,每次也不知道别人故意的还是木马,但是客观上导致网络断线.所以特别查了些资料,用于减轻这类的危害.由于使用的ipcop软路由,所以找的是linux相关的资料,具体如下:
1.开启SYN Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
基本原理:
SYN cookies应用于linux、FreeBSD等操作系统,当半连接队列满时,SYNcookies并不丢弃SYN请求,而是通过加密技术来标识半连接状态。
  在TCP实现中,当收到客户端的SYN请求时,服务器需要回复SYN+ACK包给客户端,客户端也要发送确认包给服务器。通常,服务器的初始序列号由服务器按照一定的规律计算得到或采用随机数,但在SYN cookies中,服务器的初始序列号是通过对客户端IP地址、客户端端囗、服务器IP地址和服务器端囗以及其他一些安全数值等要素进行hash运算,加密得到的,称之为cookie。当服务器遭受SYN攻击使得backlog队列满时,服务器并不拒绝新的SYN请求,而是回复cookie(回复包的SYN序列号)给客户端, 如果收到客户端的ACK包,服务器将客户端的ACK序列号减去1得到cookie比较值,并将上述要素进行一次hash运算,看看是否等于此cookie。如果相等,直接完成三次握手(注意:此时并不用查看此连接是否属于backlog队列)。

2.增加最大半连接数
sysctl -w net.ipv4.tcp_max_syn_backlog="2048"
基本原理:
Linux用变量tcp_max_syn_backlog定义backlog队列容纳的最大半连接数。在Redhat 7.3中,该变量的值默认为256,这个值是远远不够的,一次强度不大的SYN攻击就能使半连接队列占满。
3.缩短超时时间
sysctl -w net.ipv4.tcp_synack_retries="3"

你可能感兴趣的:(tcp)