DDOS攻击原理,及通过iptables预防syn洪水攻击

时间:2022-09-02 17:49:12

DDOS攻击中文翻译成『分布式阻断服务攻击』,从字面上的意义来看,它就是透过分散在各地的僵尸计算机进行攻击, 让你的系统所提供的服务被阻断而无法顺利的提供服务给其他用户的方式。 这种攻击法也很要命,而且方法有很多,最常见的就属 SYN Flood 攻击法了!还记得我们在网络基础里面提到的,当主机接收了一个带有 SYN 的 TCP 封包之后,就会启用对方要求的 port 来等待联机,并且发送出回应封包 (带有 SYN/ACK 旗目标 TCP 封包),并等待 Client 端的再次回应。

        好了,在这个步骤当中我们来想一想,如果 cient 端在发送出 SYN 的封包后,却将来自 Server 端的确认封包丢弃,那么你的 Server 端就会一直空等,而且 Client 端可以透过软件功能,在短短的时间内持续发送出这样的 SYN 封包,那么你的 Server 就会持续不断的发送确认封包,并且开启大量的 port 在空等~呵呵!等到全部主机的 port 都启用完毕,那么.....系统就挂了!

        更可怕的是,通常攻击主机的一方不会只有一部!他会透过 Internet 上面的僵尸网络 (已经成为跳板,但网站主却没有发现的主机) 发动全体攻击,让你的主机在短时间内就立刻挂点。 这种 DDoS 的攻击手法比较类似『玉石俱焚』的手段, 他不是入侵你的系统,而是要让你的系统无法正常提供服务! 最常被用来作为阻断式服务的网络服务就是 WWW 了,因为 WWW 通常得对整个 Internet 开放服务。

        这种攻击方法也是最难处理的,因为要嘛就得要系统核心有支持自动抵挡 DDoS 攻击的机制, 要嘛你就得要自行撰写侦测软件来判断!真是麻烦啊~而除非你的网站非常大, 并且『得罪不少人』,否则应该不会被 DDoS 攻击啦!

        DDOS攻击最核心的办法还是增加带宽,毕竟你不能拒绝别人访问是吧。不过为了预防DDOS攻击导致服务器卡死,我们还是需要做一些手段的。在IPTABLES中添加如下一条:

        iptables -A INPUT -p tcp --syn -m limit --limit 100/s --limit-burst 100 -j  ACCEPT

        上面的命令每秒钟最多允许100个新连接。请注意这里的新连接指的是state为New的数据包,在后面我们也配置了允许状态为ESTABLISHED和RELATED的数据通过;另外,100这个阀值则要根据服务器的实际情况来调整,如果是并发量不大的服务器这个数值就要调小,如果是访问量非常大且并发数不小的服务器,这个值则还需要调大,调整到合适值以后,在遇到syn洪水攻击以后,正在访问的连接不会中断,新建的连接会受限,这样可以第一时间知道服务器被攻击,而且不影响攻击之前的服务,你只需要第一时间查找攻击源或者添加带宽等方法处理掉即可!