以 DDOS SYN Flood 攻击为例。
第一种方式是禁止攻击来源IP,但是通常攻击源都不是一个IP
|
第二钟方式是 限制syn并发的次数以及同一个IP 新建连接数的数量
|
但是如果攻击源特别多,其实还是很难阻挡。
SYN Flood 会导致 SYN_RECV 状态的连接急剧增大,可以通过调整半连接容量大小,例如调整为 1024
|
另外,每个SYN_RECV 如果失败,内核还会自动重试,默认是 5次,可以修改为1次
|
此外,TCP SYN Cookies 是一种专门防御 SYN Flood 攻击的方法,其原理是基于连接信息(包括源地址、源端口、目的地址、目的端口等)以及一个加密种子(如系统启动时间),计算出一个哈希值(SHA1),这个哈希值称为 cookie。
这个 cookie 就被用作序列号,来应答 SYN+ACK 包,并释放连接状态。当客户端发送完三次握手的最后一次 ACK 后,服务器就会再次计算这个哈希值,确认是上次返回的 SYN+ACK 的返回包,才会进入 TCP 的连接状态。 因而,开启 SYN Cookies 后,就不需要维护半开连接状态了,进而也就没有了半连接数的限制。
注意:开启 TCP syncookies 后,内核选项 net.ipv4.tcp_max_syn_backlog 也就无效了。
可以通过下面的方式开启
|
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客!