WordPress CrowdSec插件安装及防护设置教程

WordPress CrowdSec插件安装及防护设置教程

AI 智能摘要
这款插件不仅能让你的WordPress网站受益于CrowdSec的智能威胁检测和全球IP信誉网络,还能提供多种灵活的防护模式。主题铺今天就来为你详细介绍CrowdSec WordPress插件的功能、安装方法以及各项配置,帮助你为WordPress网站构建一个坚不可摧的安全堡垒!

在WordPress网站的日常运营中,抵御恶意流量和各种网络攻击是站长们面临的持续挑战。虽然我们已经了解了CrowdSec安全引擎的强大之处,但如何将其防护能力无缝集成到WordPress网站本身呢?答案就是CrowdSec WordPress插件

这款插件不仅能让你的WordPress网站受益于CrowdSec的智能威胁检测和全球IP信誉网络,还能提供多种灵活的防护模式。主题铺今天就来为你详细介绍CrowdSec WordPress插件的功能、安装方法以及各项配置,帮助你为WordPress网站构建一个坚不可摧的安全堡垒!

CrowdSec WordPress插件能做什么?

CrowdSec WordPress插件旨在利用CrowdSec先进的威胁检测和黑名单功能,保护你的WordPress网站免受恶意流量的侵害。它主要提供以下三种核心使用场景:

  1. 即时WordPress黑名单(Instant WordPress Blocklist):无需复杂的CrowdSec引擎配置,即可快速订阅并阻止针对WordPress网站最活跃的已知恶意IP。
  2. 黑名单即服务集成(Blocklist as a Service Integration):对于已使用CrowdSec控制台的用户,可以直接将控制台中的精选黑名单同步到WordPress网站进行防护。
  3. CrowdSec阻断器(CrowdSec Bouncer):这是最强大的功能,将WordPress网站与本地运行的CrowdSec安全引擎实时连接,实现更精细、更实时的威胁防护。

CrowdSec WordPress插件的灵活性在于,无论你是希望快速获得基础防护,还是需要与现有CrowdSec引擎深度集成,它都能提供相应的解决方案。

在安装CrowdSec插件前,需要安装免费的CrowdSec服务,如下:

核心功能详解与配置指南

一、即时WordPress黑名单(Instant WordPress Blocklist)

这是CrowdSec插件提供的一项独家功能,旨在为WordPress网站提供即时、简单的保护。

主要优势:

  • 防护范围广:阻止多达10,000个最活跃的恶意IP,这些IP专门针对WordPress网站发起攻击。
  • 设置简单:订阅和设置过程非常简单,通常在24小时内即可完成。
  • 无需技术知识:即使是技术小白也能轻松上手。

如何订阅即时WordPress黑名单:

你可以通过插件内部或直接访问特定链接进行订阅。你需要提供你的电子邮件(用于接收访问链接)和WordPress网站URL(用于验证网站合法性)。如果你是CrowdSec现有用户,可以包含你的组织ID,以便通过CrowdSec控制台管理订阅。

设置说明:

A. 直接集成(不连接CrowdSec控制台):

  1. 安装CrowdSec WordPress插件
    • 登录WordPress后台。
    • 导航到【插件】>【安装插件】。
    • 在搜索框中输入“CrowdSec”。
    • 找到“CrowdSec – WordPress Security Plugin”,点击【立即安装】,然后【启用】。
  2. 订阅黑名单
    • 在CrowdSec插件设置主页面中,点击“Instant WordPress Blocklist”选项。
    • 或者直接访问订阅链接。
    • 填写表格,输入你的电子邮件和WordPress网站URL。
  3. 接收访问链接:你将在24小时内收到包含黑名单访问链接的电子邮件。
  4. 粘贴访问链接:回到插件设置,将邮件中的访问链接粘贴到相应的字段中。

B. 即时WordPress黑名单连接到你的CrowdSec控制台:

  1. 确保插件已安装并连接到CrowdSec安全引擎:这是前提条件。
  2. 订阅黑名单并提供组织ID
    • 在CrowdSec插件设置主页面中,点击“Instant WordPress Blocklist”选项。
    • 或者直接访问订阅链接。
    • 填写表格,输入你的电子邮件和WordPress网站URL,并务必填写你的组织ID(可在CrowdSec控制台的设置部分找到)。
  3. 接收确认邮件:你将在24小时内收到电子邮件确认。
  4. 控制台自动激活:你的CrowdSec控制台将自动激活订阅。你可以在控制台的“黑名单/订阅”部分查看状态。

二、黑名单即服务集成(Blocklist as a Service Integration)

对于CrowdSec控制台的现有用户,你可以无需部署本地安全引擎,直接将控制台中的精选黑名单发送到WordPress网站进行防护。

分步设置:

  1. 创建黑名单集成
    • 按照CrowdSec官方指南在控制台中创建黑名单集成。
    • 根据说明订阅你选择的黑名单。
  2. 配置插件
    • 在WordPress插件设置中,输入你在设置过程中获得的端点URLAPI密钥

重要配置说明:

  • 启用流模式(Stream mode):在高级设置中启用流模式,以实现黑名单的直接集成。
  • 指标限制:补救措施指标将显示在本地,但不会发送到CrowdSec控制台。
  • AppSec功能不可用:在此模式下,AppSec(应用安全)功能不可用。

三、CrowdSec WordPress阻断器插件(CrowdSec WordPress Bouncer Plugin)

这是CrowdSec插件的核心功能,它将WordPress网站与本地运行的CrowdSec安全引擎实时连接,提供最全面的防护。

前提条件:

  • 已安装CrowdSec v1+:你的服务器上必须安装并运行CrowdSec安全引擎。CrowdSec引擎负责“检测”,但不会自行阻止任何内容。你需要部署一个阻断器来“应用”决策。
  • CrowdSec引擎可访问:CrowdSec引擎必须在WordPress网站可访问的服务器上运行(例如,如果都在同一台服务器上,可通过 http://localhost:8080 访问)。

主要功能:

  • 智能阻断:当CrowdSec怀疑某个用户恶意时,阻断器会向其发送CAPTCHA(验证码)挑战,或直接显示访问拒绝页面。如果是正常用户,则正常访问页面。
  • 可定制的阻断页面
    • 默认的封禁墙和CAPTCHA墙界面简洁。
    • 你可以轻松自定义这些页面的所有颜色,使其与你的网站设计完美融合。
    • 所有文本也完全可定制,你可以翻译成用户语言。

理解阻断器的局限性:

虽然此插件通过拦截和阻断通过WordPress加载过程的Web请求提供了有效保护,但这种方法存在固有的局限性,可能会留下潜在的防护空白:

WordPress核心加载过程之外的PHP文件请求

由于此插件作为WordPress核心过程的一部分加载,如果直接访问自定义的公共PHP脚本,它将不会尝试检索或应用补救措施。

解决方案:考虑启用 auto_prepend_file 模式(见下文),以确保所有PHP脚本都被覆盖。

非PHP文件请求(例如 .env 或其他静态文件)

此插件不处理对非PHP文件(如 .env 或其他静态文件)的请求。

解决方案:由于此限制与PHP本身的性质有关,你可能需要实施额外的服务器级保护(例如,严格的文件权限或通过服务器配置阻止访问敏感文件)来保护此类文件。

Nginx示例

location ~ /\. {
    deny all;
}

Apache示例

<FilesMatch "^\.">
    Require all denied
</FilesMatch>

主题铺建议: 了解这些局限性,可以帮助你采取额外措施,全面保护你的网站,并补充CrowdSec阻断器插件提供的防护。

配置选项:

CrowdSec插件的配置位于WordPress后台的CrowdSec管理部分,主要分为三个部分:CrowdSec、主题定制和高级。

A. 常规设置(CrowdSec部分)

  • 连接详情
    • 本地API URL:连接CrowdSec本地API的URL。如果CrowdSec Agent安装在同一服务器上,通常设置为 http://localhost:8080
    • 认证类型:选择“阻断器API密钥”或“TLS证书(pki)认证”。TLS认证仅在CrowdSec Agent版本高于1.4.0时可用,且需要配置证书路径和CA证书路径。
    • 阻断器API密钥:如果选择API密钥认证,需在此处填写通过 cscli bouncers add 命令生成的密钥。
    • 使用cURL调用本地API:默认使用 file_get_contents 方法。如果启用此选项,将使用cURL请求(需要PHP cURL扩展),这在 allow_url_fopen 未启用时很有用。
    • 本地API请求超时:设置请求CrowdSec API的最大允许时间。
  • 阻断设置(Bouncing)
    • 阻断级别
      • 普通阻断(Normal bouncing):应用CrowdSec的完整指令。
      • 弹性阻断(Flex bouncing):更宽松的模式,永远不会直接封禁IP,最坏情况也只会提供CAPTCHA。
    • 仅限公共网站(Public website only):如果启用,管理员相关的请求将不受保护。主题铺强烈建议将其设置为“关闭(OFF)”,以保护WordPress后台,因为后台是网络攻击的常见目标,且某些关键公共接口也被视为“管理员”接口。
  • 设置测试
    • 测试阻断:点击按钮测试特定IP的阻断效果(旁路、CAPTCHA或封禁)。
    • 测试地理定位:测试获取特定IP的国家信息。

B. 主题定制(Theme customization)

  • 自定义阻断页面:在此部分,你可以修改封禁墙和CAPTCHA墙的文本和颜色,以符合你的网站设计。
图片[1]-WordPress CrowdSec插件安装及防护设置教程-主题铺
图片[2]-WordPress CrowdSec插件安装及防护设置教程-主题铺
图片[3]-WordPress CrowdSec插件安装及防护设置教程-主题铺

C. 高级设置(Advanced settings)

通信模式

启用“流模式”(Stream mode)

直播模式(Live mode)(默认):当陌生访客首次连接网站时,插件会直接向CrowdSec API检查IP。后续浏览通过缓存加速。

流模式:通过后台任务(CRON)不断将恶意IP列表同步到阻断器,检查访客IP时速度更快。适合访问量大的网站,减少对CrowdSec实例API的流量影响。

每次同步决策(仅限流模式):设置流模式下缓存刷新的频率。

缓存

缓存技术:选择缓存技术(文件系统、Redis或Memcached)。Redis或Memcached比文件系统缓存更快。

重新检查干净IP的间隔(仅限直播模式):设置重新向本地API查询已检查干净IP的间隔。

重新检查恶意IP的间隔(仅限直播模式):设置重新向本地API查询已检查恶意IP的间隔。

CAPTCHA流程缓存生命周期:CAPTCHA流程缓存的生命周期。

Redis DSN/Memcached DSN:如果选择相应缓存技术,需填写DSN(数据源名称)。

AppSec(应用安全)

启用AppSec:如果启用,当初始LAPI(本地API)判断为旁路时,插件会请求AppSec组件根据当前请求进行补救。

限制:不适用于TLS证书认证类型。

AppSec组件URL:AppSec组件的URL(默认为 http://localhost:7422)。

请求超时:AppSec请求的最大执行时间。

超时回退:当AppSec调用因超时失败时,应用的补救措施(推荐:captcha)。

最大请求体大小:限制发送给AppSec组件的请求体大小。

请求体大小超出时的行为:当请求体大小超出限制时采取的行动(推荐:headers_only,只发送头部;也可选择 blockallow)。

补救措施(Remediation)

回退到:当CrowdSec建议的补救措施无法处理时,应用的补救措施。

信任CDN IP(或负载均衡器、HTTP代理):如果使用CDN、反向代理或负载均衡器,可以在阻断器设置中指定这些设备的IP范围,以便插件检查用户的真实IP(而不是代理IP)。对于其他IP,阻断器将不信任 X-Forwarded-For 头。

隐藏CrowdSec提示:在封禁墙和CAPTCHA墙上隐藏CrowdSec的提及。

地理定位(Geolocation)

启用地理定位功能:启用后,被阻断的IP将进行地理定位,最终的补救措施会考虑任何与国家相关的决策。

地理定位类型:目前只支持MaxMind数据库类型。

MaxMind数据库类型:选择“国家”或“城市”。

MaxMind数据库路径:MaxMind数据库的绝对路径。确保此文件不可公开访问!

地理定位缓存生命周期:缓存地理定位结果的生命周期。

调试(Debug)

启用调试模式:在特定日志文件中查看调试信息。日志文件会写入 wp-content/uploads/crowdsec/logs 文件夹。确保此路径不可公开访问!

禁用生产日志:禁用 prod.log 文件的写入。

自定义User-Agent:为调用LAPI的User-Agent添加自定义后缀,有助于多站点调试。

启用错误显示:在浏览器中显示意外的阻断错误。生产环境应禁用此功能!

独立与测试(Standalone and Test)

启用 auto_prepend_file 模式

作用:此设置允许阻断器在项目中的任何PHP脚本运行之前就拦截请求。这意味着即使是绕过WordPress核心加载过程的自定义PHP脚本或某些插件(如WP Super Cache的简单模式),也能被有效阻断。

配置:需要修改PHP配置(php.ini)、Nginx配置或Apache .htaccess 文件,添加 auto_prepend_file 指令,指向插件生成的 inc/standalone-bounce.php 文件。

PHP应该将此行添加到php.ini文件中:

auto_prepend_file = /wordpress-root-directory/wp-content/plugins/crowdsec/inc/standalone-bounce.php

如果您使用的是 Nginx,则需要修改 Magento 2 的 nginx 配置文件,添加一个fastcgi_param 指令。php 代码块如下所示:

location ~ \.php$ {
    ...
    ...
    ...
    fastcgi_param PHP_VALUE "auto_prepend_file=/wordpress-root-directory/wp-content/plugins/crowdsec/inc/standalone-bounce.php";
}

如果您使用的是 Apache,则应将以下行添加到您的.htaccess文件中:

php_value auto_prepend_file "/wordpress-root-directory/wp-content/plugins/crowdsec/inc/standalone-bounce.php"

强调: 确保生成的 standalone-settings.php 文件(位于 wp-content/plugins/crowdsec/inc)不可公开访问!插件安装目录必须是 wp-content/plugins/crowdsec

强制测试IP:在测试时使用指定IP代替当前浏览器IP。生产环境必须留空!

强制测试X-Forwarded-For IP:在测试时使用指定IP代替X-Forwarded-For IP。生产环境必须留空!

安全注意事项

CrowdSec插件会生成一些敏感文件,必须保护它们免受直接访问:

  • inc/standalone-settings.php 文件(用于 auto_prepend_file 模式)。
  • wp-content/uploads/crowdsec/logs 文件夹中的日志文件。
  • wp-content/uploads/crowdsec/cache 文件夹中的缓存文件(如果使用文件系统缓存)。
  • TLS认证文件和地理定位数据库文件(用户定义路径)。

主题铺建议:

  • 如果未使用 auto_prepend_file 模式,则无需保护 standalone-settings.php
  • 如果使用Redis或Memcached缓存,则无需保护缓存文件。
  • 如果禁用调试和生产日志,则无需保护日志文件。
  • 如果使用API密钥认证,则无需保护TLS文件。
  • 如果未启用地理定位功能,则无需保护地理定位文件。

Web服务器配置示例:

Nginx:在网站配置文件的 server 块中添加指令,拒绝访问这些敏感文件夹。

server {
   ...
   ...
   ...
   # Deny all attempts to access some folders of the crowdsec plugin
   location ~ /crowdsec/(cache|logs|inc/standalone-settings) {
           deny all;
   }
   ...
   ...
}

Apache:插件根目录已包含必要的 .htaccess 文件来保护日志、缓存和独立设置文件。

Redirectmatch 403 wp-content/uploads/crowdsec/logs/
Redirectmatch 403 wp-content/uploads/crowdsec/cache/
Redirectmatch 403 wp-content/plugins/crowdsec/inc/standalone-settings

多站点使用(Multisite usage)

如果你的WordPress是多站点安装,CrowdSec阻断器插件必须在网络管理员面板中网络激活。所有站点的配置将是相同的,这意味着网络中的每个站点都将受到相同设置的保护。配置可在【我的站点】>【网络管理】左侧面板访问,设置存储在 wp_sitemeta 表中。

图片[4]-WordPress CrowdSec插件安装及防护设置教程-主题铺

技术说明:使用系统CRON代替wp-cron

为了提高效率和稳定性,你可以禁用WordPress内置的 wp-cron,转而使用系统CRON来触发插件的后台任务(尤其是流模式下的决策同步)。

wp-config.php 文件中添加:define('DISABLE_WP_CRON', true);

在WordPress宿主机的命令行中,添加系统CRON任务:

(crontab -l && echo "* * * * * wget -q -O - http://<host>:<port>/wp-cron.php?doing_wp_cron >/dev/null 2>&1") | crontab -

<host>:<port> 替换为你的网站本地URL。

最后总结

CrowdSec WordPress插件为WordPress网站提供了多层次、高效率的安全防护。无论你是希望快速获得基础防护,还是需要与CrowdSec安全引擎深度集成,这款插件都能满足你的需求。主题铺认为,通过理解其各项功能和配置选项,并结合最佳实践,你可以为你的WordPress网站构建一个真正智能、主动的威胁防御体系,确保网站的稳定运行和用户数据的安全。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容