简单谈下怎么防御DDOS或CC攻击

提醒:本文最后更新于 2828 天前,文中所描述的信息可能已发生改变,请仔细核实。


作为一个被D经历超过两年的博主(好悲催)。。。如何防D防C,一直是辛酸史。

博客目前配置:4G RAM、3核QEMU Virtual CPU。由PaulHost提供服务,已经使用Paulhost近3年了。

简单介绍个各应用内存占用情况:

1.MySQL是内存大户,最低1G,最高1.8G内存。目前1.09G。
2.Varnish内存使用是在150+M到1G。峰值是不到500M。
3.PHP静态进程50个,每个占用5~100M,含共享内存。按照内存统计,目前占用了4.16G。。。实际占用是1.1G左右。
4.Memcache最高是256M可被占用。目前一直在135.43M,一般就是20M~170M的范围波动。
5.Redis占用23.22 MB,相对固定。因为存储的数据原因,每月会固定增加0.5~4M。
6.Nginx占用也比较稳定,一直在100M左右,目前92.43M。
7.其他杂七杂八,几百M吧。

再发个写的系统检测信息:

服务器一般我都是禁用Swap的。因为硬盘I/O不行,可能是因为服务器虚拟化是KVM有关。

当内存到一定值,会自动启用Swap(通过脚本)。一般也就被ddos或cc时,会出现各应用占用高峰,这时SWAP就会打开,来应付攻击。

同时自己写的流量清洗(其实就是连接数和并发量检测),就会起作用。各种ip被ban(通过iptables),可能会误伤,但这是必要的。

如果SWAP来不及打开,怎么办?这时可能会触发到OOM Killer。

PHP虽然占用多,但是极为分散,平均20+M,所以首当其冲的就是MySQL了。

而作为数据库,崩溃是不能容忍的。所以我把MySQL的OOM触发Killer等级降低了。

也就是内存占用突增时,Varnish会被杀掉。

为什么这样做呢,没有Varnish不是不能访问网站么?

没错,但却预留了至多1分钟的时间,来进行流量清洗。

1分钟后web_keepalived被触发,Varnish满血复活。

因为大部分流量的ip已经被ban,这时候就不怕攻击了。

web_keepalived详见上篇文章:《再说博客服务器的KeepAlive》。

上面一切都是在同一组脚本执行的,一定程度上减少减缓被攻击形势,也保证了服务器应用的稳定性。

文章结束,睡觉。

转载请注明转自:kn007的个人博客的《简单谈下怎么防御DDOS或CC攻击