4

WordPress防刷新 CC攻击防御 ,Nginx防刷搜索 ,只需简单配置一下Nginx就行了

 1 year ago
source link: https://uzbox.com/tech/wordpress-shuaxin.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
首页技术宅WordPress防刷新 CC攻击防御 ,Nginx防刷搜索 ,只需简单配置一下Nginx就行了

WordPress防刷新 CC攻击防御 ,Nginx防刷搜索 ,只需简单配置一下Nginx就行了

WordPress防刷新 ,小网站莫名其妙的CPU跑满,网站报错502,到底是怎么了?

WordPress防刷新 ,WP安全是第一位。很多做网站的朋友,最苦恼的一件事是,网站没流量时,绞尽脑汁做引流,做宣传。网站有了流量后,好事坏事就一起来了,网站莫名其妙的被攻击了,现在很多网站都是使用wordpress搭建的小博客,平时也就那么十几人同时在线,服务器CPU为什么会跑满100%,内存也是瞬间飙升到顶。很多网站用的都是按流量计费模式的国外主机,没几天流量跑光了,网站也就打不开了。

最近很多wordpress网站都遇到类似的问题。对于网站被攻击的原因,经过探索发现,下列几个原因。

  • 因为利益发起的攻击:你的SEO优化比较好,排在了某些网站的前面,把你关键词打掉,没了引擎排名,自然也就没人攻击你了。一般常用于DDOS攻击,目前网络上DDOS攻击价格比较昂贵,切搜索引擎上的流量已经微乎其微了,大部分的互联网上的流量都在移动端,所以这几年很少在PC端网站遇到这类攻击了。
  • 网站引流发起的攻击:这类攻击目前经常在使用WordPress搭建的网站上遇到,恶意刷关键字搜索量,因为你的搜索排名比较靠前,自然网站的新链接,搜索引擎会秒收录。WordPress的搜索可以在url中任意提交内容,之后搜索引擎会快速抓取提交的每一条链接,造成服务器CPU的巨大压力。

WordPress防刷新 CC攻击防御 ,搜索防刷,只需简单配置一下Nginx就行了-1

wordpress刷搜索,主要原因是为了推广一些见上不得台面的网站,这种网站为了推广,不择手段。

WordPress防刷新 CC攻击防御 ,搜索防刷,只需简单配置一下Nginx就行了-1

下面说一下wordpress在遇到刷搜索的时候的解决方法,同时分析了解一下wp刷搜索的原理。

wordpress的搜索功能很简单,在域名的后面加上”?s=”,=号后面,填写需要搜索的关键词,就可以完成搜索,例如:

https://uzbox.com/?s=office

将网址复制到浏览器的地址栏中,就可以查询到网站中关于office相关的内容。在网站中正常的搜索,是在搜索框内输入关键词,然后通过表单提交的方式进行搜索。

既然wordpress可以通过地址栏输入URL进行搜索,那么攻击者可以编写一个简单的脚本,不停的刷新搜索,由于搜索会从数据库中索引信息,所以最后服务器上的数据库会跑满CPU

WordPress防刷新 CC攻击防御 ,搜索防刷,只需简单配置一下Nginx就行了-1

这类搜索攻击大多都是为了刷搜索的关键字排名,为了给黑灰产网站引流才这样做的,很多时候把服务器刷死机了,也是攻击者不想看到的,攻击者也没想到有些服务器是那么不堪一刷,刷新的频率高了,服务器就挂了!

知道了攻击者的攻击方式,和刷搜索的思路,下面我们解决掉这个问题。

wordpress防刷新 的解决办法

这类刷新web网站类的攻击,大多都属于CC攻击。与DDOS攻击不同,DDOS攻击通过海量的肉鸡IP,集中对一个网站进行谢绝服务式访问,最后巨大的访问流量造成服务器网络堵塞瘫痪。如果遇到DDOS攻击,需要使用CDN分布式节点的方式解决,当然价格也是很昂贵的。

CC攻击一般很好解决,找到攻击方的攻击方式,然后进行围堵就可以了。

我们已经知道了是通过搜索进行的刷新访问,那么下面说一说如何解决。

第一步:限制同一IP地址访问网站的次数

需要在Nginx中进行配置HttpLimit模块,HttpLimit以针对条件,进行会话的并发连接数控制。(例如:限制每个IP的并发连接数。)

http{
#limit_zone one $binary_remote_addr 10m;
limit_req_zone $binary_remote_addr zone=req_one:10m rate=10r/s;
server{
#limit_conn one 1;
limit_req zone=req_one burst=1;
http{
#limit_zone one $binary_remote_addr 10m;
limit_req_zone $binary_remote_addr zone=req_one:10m rate=10r/s;
server{
#limit_conn one 1;
limit_req zone=req_one burst=1;
}
}

上面有两种模块配置的使用方法,可根据不同情况设置。

方法1:

limit_zone one  $binary_remote_addr  10m;
这里的 one 是声明一个 limit_zone 的名字,$binary_remote_addr是替代 $remore_addr 的变量,10m 是会话状态储存的空间
limit_conn one 1 ,限制客户端并发连接数量为1

方法2:

limit_req_zone  $binary_remote_addr  zone=req_one:10m rate=10r/s;

rate=10r/m 的意思是每个地址每分钟只能请求10次,也就是说根据令牌桶原理burst=1 一共有1块令牌,并且每分钟只新增10块令牌,
1块令牌发完后多出来的那些请求就会返回503

加上 nodelay 之后超过 burst大小的请求就会直接返回503

如果没有这个字段会造成大量的tcp连接请求等待。

limit_zone两种工作情况

limit_req zone=one burst=10 ;

默认情况下是这样配置的,这样每个请求就会有一个delay时间0

limit_req_zone $binary_remote_addr zone=one:100m rate=10r/m;

就是每分钟有10个令牌供用户使用,每个请求时间就是60/10,那每个请求时间就是6s。

limit_req zone=one burst=10 nodelay;

添加 nodelay 配置,这样就是根据你的网络状况访问,一分钟访问够10次后,服务器直接返回503。

imit_req_zone $binary_remote_addr zone=one:100m rate=10r/m;

就是每分钟有10个令牌供用户使用,会根据网络情况访问url,如果一分钟超过10个令牌,服务器返回503,等待下一个一分钟领取访问令牌。

配置完HttpLimit模块后,重新启动nginx。

第二步:安装wordpress安全插件

在wordpress中,安全插件是必不可少的,没有安全插件等于在互联网上裸奔。推荐安装 Wordfence 安全插件,可以实时查看网站上登陆的IP,包括一个端点防火墙和恶意软件扫描程序,它们是为保护 WordPress 从头开始​​构建的。最流行的 wordpress 防火墙和安全扫描器

WordPress防刷新 CC攻击防御 ,Nginx防刷搜索 ,只需简单配置一下Nginx就行了-1

Wordfence 安全 – 防火墙、恶意软件扫描和登录安全

WordPress 安全性需要专门的分析师团队研究最新的恶意软件变体和 WordPress 漏洞,将它们转化为防火墙规则和恶意软件签名,并实时将它们发布给客户。Wordfence 被广泛认为是世界上排名第一的 WordPress 安全研究团队。我们的插件提供了一套全面的安全功能,我们团队的研究为我们的插件提供了强大的动力,并提供了我们众所周知的安全级别。

在 Wordfence,WordPress 安全不是我们业务的一个部门——WordPress 安全就是我们所做的一切。我们聘请了全球 24 小时专门事件响应团队,为我们的优先客户提供 1 小时的任何安全事件响应时间。我们的全球安全团队永不落山,我们运行一个复杂的威胁情报平台来汇总、分析最新的安全威胁并进行突破性的安全研究。

Wordfence Security 包括端点防火墙、恶意软件扫描程序、强大的登录安全功能、实时流量视图等。我们的威胁防御源为 Wordfence 提供最新的防火墙规则、恶意软件签名和恶意 IP 地址,以确保您的网站安全。Wordfence 由 2FA 和一套附加功能完善,是可用的最全面的 WordPress 安全解决方案。

WORDPRESS 防火墙
Web 应用程序防火墙识别并阻止恶意流量。由一个 100% 专注于 WordPress 安全性的大型团队构建和维护。
[高级版] 通过威胁防御源实时更新防火墙规则和恶意软件签名(免费版延迟 30 天)。
[高级] 实时 IP 阻止列表阻止来自最恶意 IP 的所有请求,在减少负载的同时保护您的网站。
在端点保护您的网站,实现与 WordPress 的深度集成。与云替代方案不同,它不会破坏加密,无法绕过也不会泄露数据。
集成的恶意软件扫描程序可阻止包含恶意代码或内容的请求。
通过限制登录尝试来防止暴力攻击。
WORDPRESS 安全扫描仪
恶意软件扫描程序检查核心文件、主题和插件是否存在恶意软件、错误 URL、后门、SEO 垃圾邮件、恶意重定向和代码注入。
[高级版] 通过威胁防御源实时更新恶意软件签名(免费版延迟 30 天)。
将您的核心文件、主题和插件与 WordPress.org 存储库中的内容进行比较,检查它们的完整性并向您报告任何更改。
通过用原始的原始版本覆盖它们来修复已更改的文件。删除任何不属于 Wordfence 界面的文件。
检查您的网站是否存在已知的安全漏洞,并在出现任何问题时提醒您。当插件被关闭或放弃时,还会提醒您注意潜在的安全问题。
通过扫描文件内容、帖子和评论中的危险 URL 和可疑内容来检查您的内容安全。
[高级] 检查您的网站或 IP 是否因恶意活动、生成垃圾邮件或其他安全问题而被列入黑名单。
登录安全
双因素身份验证 (2FA),一种最安全的远程系统身份验证形式,可通过任何基于 TOTP 的身份验证器应用程序或服务获得。
登录页面 CAPTCHA 阻止机器人登录。
禁用 2FA 或将 2FA 添加到 XML-RPC。
使用已知的泄露密码阻止管理员登录。
WORDFENCE 中心
Wordfence Central 是一种强大而有效的方式,可以在一个地方管理多个站点的安全性。
在一个视图中有效评估所有网站的安全状态。无需离开 Wordfence Central 即可查看详细的安全发现。
强大的模板使配置 Wordfence 变得轻而易举。
高度可配置的警报可以通过电子邮件、短信或 Slack 发送。通过利用严重级别选项和每日摘要选项来提高信噪比。
跟踪重要安全事件并发出警报,包括管理员登录、密码使用泄露和攻击活动激增。
免费用于无限站点。
安全工具
使用 Live Traffic,实时监控其他分析包中未显示的访问和黑客尝试;包括来源、他们的 IP 地址、一天中的时间和在您网站上花费的时间。
通过 IP 阻止攻击者或基于 IP 范围、主机名、用户代理和引荐来源网址构建高级规则。
Wordfence Premium 提供国家/地区屏蔽功能。

免费下载 Wordfence Premium 破解版 v7.8.2

第三步:修改 WordPress 中默认搜索的 URL

修改默认的搜索链接,wordpress的默认搜索是”?s=”,默认链接很容易被扫到,可以将搜索链接改名,虽然在安全方面意义不大,可以增加搜索引擎的收录。

具体修改方法请参考:修改 WordPress 中默认搜索的 URL ,增加 SEO 收录数量!

nginx安装HttpGuard防止CC攻击

HttpGuard一款基于nignx lua的工具。它的功能比较单一,但非常强大有效,主要功能依然是抵御CC攻击。主要通过技术手段检测访客是否为有效的浏览器以及是否支持跳转来判断是否需要拦截。但HttpGuard还有另一样特别本领,就是可以监测实时的连接数来判断是否需要开启防攻击模块。

在安装HttpGuard之前,需要安装OpenResty。

在 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包。查看更多系统的安装方法

wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/
sudo dnf check-update
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/

sudo dnf check-update

然后就可以像下面这样安装软件包,比如 openresty:

sudo dnf install -y openresty
sudo dnf install -y openresty

如果你想安装命令行工具 resty,那么可以像下面这样安装 openresty-resty 包:

sudo dnf install -y openresty-resty
sudo dnf install -y openresty-resty

安装编译工具和相关依赖。

dnf install pcre-devel openssl-devel gcc curl
dnf install pcre-devel openssl-devel gcc curl

OpenResty安装成功,你已经将OpenResty安装到 /usr/local/openresty 目录中(这是默认设置)

点击下载HttpGuard

下载后将文件解压后上传到服务器根目录中。

cp -r HttpGuard/ /etc/nginx
cp -r HttpGuard/ /etc/nginx

将文件夹,拷贝到Nginx的安装目录,通过dnf安装的nginx目录在/etc/nginx,编译安装的nginx目录一般在/usr/local/nginx。复制前确定一下nginx的安装目录。

拷贝完毕之后,编辑nginx的配置文件 nginx.conf 。

#在http区块中添加以下内容
lua_package_path "/etc/nginx/HttpGuard/?.lua";
lua_shared_dict guard_dict 100m;
lua_shared_dict dict_captcha 70m;
init_by_lua_file '/etc/nginx/HttpGuard/init.lua';
access_by_lua_file '/etc/nginx/HttpGuard/runtime.lua';
lua_max_running_timers 1;
#在http区块中添加以下内容
lua_package_path "/etc/nginx/HttpGuard/?.lua";
lua_shared_dict guard_dict 100m;
lua_shared_dict dict_captcha 70m;
init_by_lua_file '/etc/nginx/HttpGuard/init.lua';
access_by_lua_file '/etc/nginx/HttpGuard/runtime.lua';
lua_max_running_timers 1;




About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK