防止SYN Flooding的DoS攻击

/proc/sys/net/ipv4/tcp_syncookies
所谓的阻断式服务(DoS)攻击法中的一种方式,就是利用tcp数据包SYN的3次握手原理实现的,
这种方式称为SYN Flooding,如何预防这种方式的攻击,我们可以启用内核的SYN Cookie模块。
这个SYN Cookie模块可以在系统用来启动随机联机的端口(1024:65535)即将用完时自动启动

 当启动SYN Cookie时,主机在发送SYN/ACK确认数据包前,会要求Client端在短时间内回复一个
序号,这个序号包含许多原SYN数据包内的信息,包括IP、port等,若Client端可以回复正确的序号
,那么主机就确定该数据包为可信的,因此会发送SYN/ACK数据包,否则就不理会此数据包
 
 通过此机制可以大大降低无效的SYN等待端口,避免SYN Flooding的DoS攻击:
  # echo "1" > /proc/sys/net/ipv4/tcp_syncookies
 这个设置值由于违反了TCP的3次握手(因为主机在发送SYN/ACK之前需要先等待Client的序号响应)
所以可能会造成某些服务的延迟现象,例如SMTP(mail server),不过总的来说,这个设置还是不错的,
只是不适合用在负载已经很高的服务器内,因为负载太高的主机有时会让内核误判遭受SYN Flooding攻击

内核取消ping响应的设置有两个:/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts和
         /proc/sys/net/ipv4/icmp_echo_ignore_all