在WordPress网站的日常运营中,抵御恶意流量和各种网络攻击是站长们面临的持续挑战。虽然我们已经了解了CrowdSec安全引擎的强大之处,但如何将其防护能力无缝集成到WordPress网站本身呢?答案就是CrowdSec WordPress插件。
这款插件不仅能让你的WordPress网站受益于CrowdSec的智能威胁检测和全球IP信誉网络,还能提供多种灵活的防护模式。主题铺今天就来为你详细介绍CrowdSec WordPress插件的功能、安装方法以及各项配置,帮助你为WordPress网站构建一个坚不可摧的安全堡垒!
CrowdSec WordPress插件能做什么?
CrowdSec WordPress插件旨在利用CrowdSec先进的威胁检测和黑名单功能,保护你的WordPress网站免受恶意流量的侵害。它主要提供以下三种核心使用场景:
- 即时WordPress黑名单(Instant WordPress Blocklist):无需复杂的CrowdSec引擎配置,即可快速订阅并阻止针对WordPress网站最活跃的已知恶意IP。
- 黑名单即服务集成(Blocklist as a Service Integration):对于已使用CrowdSec控制台的用户,可以直接将控制台中的精选黑名单同步到WordPress网站进行防护。
- 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控制台):
- 安装CrowdSec WordPress插件:
- 登录WordPress后台。
- 导航到【插件】>【安装插件】。
- 在搜索框中输入“CrowdSec”。
- 找到“CrowdSec – WordPress Security Plugin”,点击【立即安装】,然后【启用】。
- 订阅黑名单:
- 在CrowdSec插件设置主页面中,点击“Instant WordPress Blocklist”选项。
- 或者直接访问订阅链接。
- 填写表格,输入你的电子邮件和WordPress网站URL。
- 接收访问链接:你将在24小时内收到包含黑名单访问链接的电子邮件。
- 粘贴访问链接:回到插件设置,将邮件中的访问链接粘贴到相应的字段中。

B. 即时WordPress黑名单连接到你的CrowdSec控制台:
- 确保插件已安装并连接到CrowdSec安全引擎:这是前提条件。
- 订阅黑名单并提供组织ID:
- 在CrowdSec插件设置主页面中,点击“Instant WordPress Blocklist”选项。
- 或者直接访问订阅链接。
- 填写表格,输入你的电子邮件和WordPress网站URL,并务必填写你的组织ID(可在CrowdSec控制台的设置部分找到)。
- 接收确认邮件:你将在24小时内收到电子邮件确认。
- 控制台自动激活:你的CrowdSec控制台将自动激活订阅。你可以在控制台的“黑名单/订阅”部分查看状态。
二、黑名单即服务集成(Blocklist as a Service Integration)
对于CrowdSec控制台的现有用户,你可以无需部署本地安全引擎,直接将控制台中的精选黑名单发送到WordPress网站进行防护。
分步设置:
- 创建黑名单集成:
- 按照CrowdSec官方指南在控制台中创建黑名单集成。
- 根据说明订阅你选择的黑名单。
- 配置插件:
- 在WordPress插件设置中,输入你在设置过程中获得的端点URL和API密钥。

- 在WordPress插件设置中,输入你在设置过程中获得的端点URL和API密钥。
重要配置说明:
- 启用流模式(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墙界面简洁。


- 你可以轻松自定义这些页面的所有颜色,使其与你的网站设计完美融合。
- 所有文本也完全可定制,你可以翻译成用户语言。
- 默认的封禁墙和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的最大允许时间。
- 本地API URL:连接CrowdSec本地API的URL。如果CrowdSec Agent安装在同一服务器上,通常设置为
- 阻断设置(Bouncing):
- 阻断级别:
- 普通阻断(Normal bouncing):应用CrowdSec的完整指令。
- 弹性阻断(Flex bouncing):更宽松的模式,永远不会直接封禁IP,最坏情况也只会提供CAPTCHA。

- 仅限公共网站(Public website only):如果启用,管理员相关的请求将不受保护。主题铺强烈建议将其设置为“关闭(OFF)”,以保护WordPress后台,因为后台是网络攻击的常见目标,且某些关键公共接口也被视为“管理员”接口。

- 阻断级别:
- 设置测试:
- 测试阻断:点击按钮测试特定IP的阻断效果(旁路、CAPTCHA或封禁)。
- 测试地理定位:测试获取特定IP的国家信息。
B. 主题定制(Theme customization)
- 自定义阻断页面:在此部分,你可以修改封禁墙和CAPTCHA墙的文本和颜色,以符合你的网站设计。
![图片[1]-WordPress CrowdSec插件安装及防护设置教程-主题铺](https://cdn.zhutipu.com/wp-content/uploads/2025/06/20250602190107438.jpg/ztp)
![图片[2]-WordPress CrowdSec插件安装及防护设置教程-主题铺](https://cdn.zhutipu.com/wp-content/uploads/2025/06/20250602190107602.jpg/ztp)
![图片[3]-WordPress CrowdSec插件安装及防护设置教程-主题铺](https://cdn.zhutipu.com/wp-content/uploads/2025/06/20250602190108260.jpg/ztp)
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,只发送头部;也可选择 block 或 allow)。
补救措施(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插件安装及防护设置教程-主题铺](https://cdn.zhutipu.com/wp-content/uploads/2025/06/20250602190111462.jpg/ztp)
技术说明:使用系统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网站构建一个真正智能、主动的威胁防御体系,确保网站的稳定运行和用户数据的安全。


























暂无评论内容