WordPress是一个功能强大的CMS,几乎可以通过插件和主题实现任何功能。尽管WordPress功能强大,但由于其动态特性,其性能很差。如果不优化的话,可能会刷新几次才会死,更不用说恶意CC攻击了。
WordPress防CC攻击设置教程-字节智能
上一篇文章对服务器简单的防CC攻击设置,简单介绍了网站遇到CC攻击的一般解决方案,本文给出了WordPress全面的防CC攻击设置。
WordPress的弱点
默认情况下,WordPress不是静态的,所有请求都是动态生成然后发送的。游客少的时候,问题不大。流量上来的时候基本都是GG,不使用缓存或者静态。因此,WordPress性能优化最重要的一个方面是使用缓存/静态插件。
启用cache/static插件后,页面和文章访问一次后就会被缓存,不需要动态生成下一个请求,性能会有很大提升,低VPS也能轻松加载上万个ip,非常好看。
但是对于WordPress的CC攻击,缓存远远不够,因为它致命的弱点还没有解决:WordPress的动态性是它的弱点,弱点的弱点是搜索。文章数量是固定的,但是搜索词无止境,所以缓存对CC攻击没有影响。如果文章数以万计,每次搜索都非常耗费资源,再多几次搜索式CC攻击,WordPress就会趴下。
总结一下:WordPress的弱点是动态的,致命的弱点是搜索。必须解决这两个弱点才能防止(减轻)CC攻击。
防抄送攻击设置
了解WordPress的弱点,然后介绍WordPress的防CC攻击设置。
1.安装缓存/静态插件,解决WordPress动态生成网页的弱点。本网站使用的WordPress超级缓存配置简单,性能良好。插件安装启用后,主要设置如下:1。选中“常规”中的“启用缓存功能(推荐)”;2.在高级中进行以下设置:
不要勾选“GET请求不缓存”,理论上解决了搜索攻击的问题,但是会让你的网站不正常。
2.然后解决搜索的弱点。通常,与CC攻击预防一样,主要手段是限制请求的数量和速率。假设我们使用Nginx,解决方案是:
在Nginx的主配置文件的http部分分配极限计数区(例如,/etc/nginx/nginx.conf):
http {
# 一些其他配置
# 增加下面三行,作用分别是:1. 分配10MB大小的连接数计数区(能统计16万个ip);
# 2. 分配正常请求的限制区,每秒请求次数不能超过10(请按照自己需求更改)
# 3. 分配搜索限制区,每分钟搜索不能超过10次
limit_conn_zone $binary_remote_addr zone=limit_conn:10m;
limit_req_zone $binary_remote_addr zone=limit_req:10m rate=10r/s;
limit_req_zone $binary_remote_addr zone=limit_req_s:10m rate=10r/m;
# 其他设置
}
打开网站配置文件(例如/etc/nginx/conf.d/tlanyan.conf),在server段中增加防CC攻击设置:
server {
# 一些其他配置
# 增加以下配置行
limit_conn limit_conn 10; # 单个ip的并发连接数不能超过10(请按照自己情况修改)
limit_req zone=limit_req burst=10 nodelay; # 使用limit_req限制正常请求
location / {
# 注意:一定要在 location / 添加,否则后台功能可能不正常
if ($query_string ~ "s=") {
rewrite ^ /search.php?$query_string last; # 将搜索请求重定向
}
# location / 的其他设置
}
location = /search.php {
limit_req zone=limit_req_s burst=5 nodelay; # 限制搜索频率
fastcgi_pass php-fpm; # 这里请改成你php的设置
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
}
# 其他设置
}
在上面的配置中,最重要的设置以if ($query_string ~ “s= “开头,重定向搜索,然后使用我们定制的搜索频率设置。如果超过这个搜索频率,直接503返回一个错误消息。
使用nginx -t命令检查配置错误,然后systemctl重新启动Nginx以重新启动Nginx。
因此,由于连接数量的限制,单个ip不能无限期地发起到服务器的连接;通过正常请求率限制单个ip对普通文章页面的请求率;通过搜索限制,大大限制了搜索频率,从而有效防止CC攻击,提高服务器性能。
重启Nginx后,打开你的WordPress博客,搜索几次,会出现“503服务暂时不可用”的提示,说明我们的搜索限制起作用了。