突然突发奇想,想了一个抵制DDoS的方法,不知道是否可行
DDoS攻击可以伪造IP源,因此无法用“堵”的方法来制止,因此,我想了很久,想试试“开”的方法
原理是这样的……
分为几步(不知道这个原理的可行性如何,有机会应该实验一下)
1、开一个简单的服务(只要能产生ESTABLISHED就可以),端口定为80,把真正的HTTP服务移动到60000
2、每分钟运行一次脚本,该脚本负责检查80端口的ESTABLISHED状态和IP地址,把产生了ESTABLISHED的IP进行PREROUTING,映射到60000端口
3、同时,80端口做并发数限制,只允许一定量的并发数,这样不会影响已经映射好的IP地址对WEB的访问,因为那些IP地址已经进行 PREROUTING了,而不会进入filter表的INPUT链去和80端口进行连接,因此不会占用并发数,只有没登记过的IP才进入filter表的 INPUT链
以上方法也未必可行,存在以下几个问题
1、因为浏览器产生的是短连接,未必会ESTABLISHED,有可能是TIME_OUT,但是DDoS绝对是含有“SYN”字样的,如果进行这个的试验,可以先按照ESTABLISHED进行,如果不行再换“非SYN”
2、平时可以不启用这个方案,HTTP端口还开在60000,对所有IP做PREROUTING,当发现有大量SYN状态时,判定收到DDoS攻击,马上清除PREROUTING规则,使所有IP连接到80端口,并启用DDoS策略
3、由于crond的限制,开IP的SHELL只能每分钟运行一次(最高频率),所以有可能会出现问题,ESTABLISHED的存在概率可能太小了,因为用户打开浏览器,没有看到页面的最大等待时间一般是10秒钟,不可能有人等上1分钟,然后再刷新的
可能写成一个程序,在后台运行会好些,但是,只有思想,不会写LINUX下的C……