首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >深夜警报:开源项目演示站遭恶意攻击,别再手动Ban IP了!快用这款安全神器,一键接入全球威胁情报库!

深夜警报:开源项目演示站遭恶意攻击,别再手动Ban IP了!快用这款安全神器,一键接入全球威胁情报库!

作者头像
希里安
发布2025-05-26 11:31:52
发布2025-05-26 11:31:52
4310
举报
文章被收录于专栏:希里安希里安

希里安近日见闻

过了五一,感受到夏天的温度了,天气越来越热。喜欢夏天有很多水果可以吃,喜欢夏天不用像冬天那样穿很厚的衣服。但是周末真的只能在家开空调窝着了。有了时间,就把自己的开源项目cilikube的演示站点部署上了,还不知道cilikube是什么的,可以看下希里安上一篇文章开源新星CILIKUBE,专为小白设计,玩转Vue3+Go全栈与云原生,Helm部署轻松上手!

部署完后看到正常运行还挺开心的,就把站点分享给了社区里的小伙伴,以运维职业敏感性,所以会时常关注着运行日志,果不其然,没两天就发现有很多异常日志了。比如:

  • • 频繁的路径扫描:如 /wp-login.php、/admin 等(我的网站根本不是 WordPress!)。
  • • 可疑的 User-Agent:一些请求来自非浏览器客户端,像是扫描工具
  • • 高频访问:某些 IP 在短时间内发起数百次请求,明显是自动化脚本
  • • 甚至还有远程shell命令执行

这些迹象表明,我的开源演示站点正遭受爬虫、暴力破解或其他恶意攻击,那么除了最基础效率最低的手动ban掉异常ip之外,还有没有其他的方式可以防御呢?所以急需部署一个高效的入侵检测与防御系统(IDS/IPS),咱说干就干,抓紧部署!

为什么选择 CrowdSec ?

经过对比,我最终选择了 CrowdSec,原因如下:

CrowdSec 是一款开源、协作式的安全工具,通过日志分析和社区共享的威胁情报,能够有效检测并阻止恶意行为

CrowdSec 的核心优势包括:

  • 社区威胁情报:CrowdSec 的最大亮点是其社区驱动的威胁情报共享机制。全球用户会将检测到的恶意 IP 上传到 CrowdSec 的中央数据库,服务器可以实时获取这些信息,防御已知的攻击者。这种“众人拾柴火焰高”的模式让我觉得非常可靠
  • Nginx 集成:提供专用的 Nginx 防护组件,能直接分析 Nginx 日志,检测爬虫、SQL 注入等攻击行为
  • 轻量高效:基于日志分析,日志分析对性能影响小,适合 Ubuntu 服务器的资源限制
  • 灵活扩展:支持多种场景,覆盖 Web 攻击、SSH 暴力破解等
  • 开源与免费: 作为开源项目,CrowdSec 完全免费,且社区活跃,文档齐全,适合独立开发者

CrowdSec 的主要组件包括:

  • CrowdSec 代理(Agent):分析 Nginx 和系统日志,检测可疑行为
  • 本地 API(LAPI):连接代理与防护组件
  • 防护组件(Bouncer):阻止恶意流量,支持 Nginx、防火墙等多种方式
  • 命令行工具(cscli):管理配置和决策

那这款工具和其他工具对比有什么差异呢?各位读者接着来看下一部分

CrowdSec 与其他工具的对比

以下是 CrowdSec 与 Fail2Ban 和 Suricata 在保护 Nginx 部署的 Cilikube 项目时的对比:

特性/工具

CrowdSec

Fail2Ban

Suricata

开源性

开源

开源

开源

威胁情报

社区共享,实时更新恶意 IP

本地规则,无共享

依赖规则集,免费规则延迟 30 天

Web 防护

原生支持 Nginx,防护 SQL 注入、XSS 等

需手动配置正则规则

依赖流量分析,需额外配置

检测方式

日志分析,适合 Nginx

日志正则匹配

网络流量分析

防护方式

Nginx 集成、防火墙等多层次

仅防火墙规则

依赖防火墙或专用设备

易用性

CLI 和 Web 仪表盘,易于配置

配置简单,无 Web 界面

配置复杂,需专业知识

性能影响

轻量,适合 Ubuntu

轻量

流量分析,资源占用高

1. 与 Fail2Ban 的差异
  • Web 防护:CrowdSec 提供原生 Nginx 防护组件,可直接处理 HTTP 攻击(如针对 Cilikube 的路径遍历);Fail2Ban 需手动编写正则规则,配置还是比较复杂
  • 威胁情报:CrowdSec 的社区共享机制能快速识别全球攻击者,Fail2Ban 仅依赖本地日志
  • 扩展性:CrowdSec 的 Hub 提供丰富的 Web 攻击场景,Fail2Ban 扩展性有限
2. 与 Suricata 的差异
  • 资源占用:CrowdSec 基于日志分析,适合资源有限的 Ubuntu 服务器;Suricata 需分析网络流量,消耗较高
  • Nginx 集成:CrowdSec 提供开箱即用的防护组件,Suricata 需复杂配置
  • 实时性:CrowdSec 实时共享威胁情报,Suricata 免费规则延迟 30 天

安装 CrowdSec

以下是在 Ubuntu(测试于 20.04/22.04)上安装 CrowdSec 的步骤

1. 添加 CrowdSec 软件源

运行以下命令添加官方软件源:

代码语言:javascript
复制
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
2. 安装 CrowdSec 主程序

更新软件包并安装:

代码语言:javascript
复制
sudo apt update
sudo apt install -y crowdsec

安装后,CrowdSec 会自动启动并配置默认场景

3. 安装 Nginx 防护组件

为保护 Cilikube 的 Nginx 服务器,安装 Nginx 防护组件:

代码语言:javascript
复制
sudo apt install -y crowdsec-nginx-bouncer

注意:你也可以安装 crowdsec-firewall-bouncer-iptables 安装后,Bouncer 会自动与 CrowdSec 协同工作,封禁检测到的恶意 IP

4. 验证服务状态

检查 CrowdSec 和防护组件是否运行:

代码语言:javascript
复制
sudo systemctl status crowdsec
sudo systemctl status crowdsec-nginx-bouncer
5. 配置 Nginx 日志源

CrowdSec 通过解析 Nginx 日志检测 Web 攻击。编辑 /etc/crowdsec/acquis.yaml,添加 Nginx 日志路径(默认已经配置好的):

代码语言:javascript
复制
filenames:
  - /var/log/nginx/access.log
  - /var/log/nginx/error.log
  - /var/log/auth.log  # 同时监控 SSH 相关攻击
labels:
  type: nginx

确保 Nginx 日志格式正确(CrowdSec 默认支持 Nginx 的 combined 格式)。若使用自定义日志格式,参考官方文档调整解析器。

6. 安装 Web 防护场景

为 Cilikube 添加 Web 攻击防护(如 SQL 注入、XSS、路径遍历):

代码语言:javascript
复制
sudo cscli collections install crowdsecurity/nginx
sudo cscli collections install crowdsecurity/http-cve
7. 配置 Nginx 集成

将 Nginx 与 CrowdSec 防护组件集成,编辑 Nginx 配置文件(如 /etc/nginx/nginx.conf 或站点配置文件),添加:

代码语言:javascript
复制
http {
  ...
  include /etc/nginx/crowdsec.conf;
}

CrowdSec 安装 crowdsec-nginx-bouncer 时会自动生成 /etc/nginx/crowdsec.conf,用于检查请求是否来自恶意 IP。

重启 Nginx:

代码语言:javascript
复制
sudo systemctl restart nginx
8. 可视化仪表盘(可选)

不过目前官网推荐注册在线的web页面,https://app.crowdsec.net/signup

也可以安装 Metabase 仪表盘以监控 Cilikube 的攻击情况,不过会有废弃提示cscli dashboard will be deprecated in version 1.7.0, read more at https://docs.crowdsec.net/blog/cscli_dashboard_deprecation/

代码语言:javascript
复制
sudo cscli dashboard setup --listen 0.0.0.0 --port 8080 --password <your_password>

访问 http://<your_server_ip>:8080,查看攻击详情和封禁记录

使用 CrowdSec 保护 Cilikube

安装完成后,CrowdSec 会自动监控 Nginx 和系统日志,检测针对 Cilikube 的攻击。以下是常用操作:

查看防护状态

• 列出已安装的防护场景:

代码语言:javascript
复制
sudo cscli collections list
sudo cscli scenarios list

• 查看当前封禁的恶意 IP:

代码语言:javascript
复制
sudo cscli decisions list
测试防护功能

模拟 Web 攻击(如路径遍历):

代码语言:javascript
复制
curl http://<your_server_ip>/%2e%2e/%2e%2e/etc/passwd

检查日志确认是否触发封禁:

代码语言:javascript
复制
sudo tail -f /var/log/crowdsec.log

手动管理封禁

• 封禁特定 IP:

代码语言:javascript
复制
sudo cscli decisions add --ip 1.2.3.4 --duration 24h --reason "cilikube_attack"

• 移除封禁:

代码语言:javascript
复制
sudo cscli decisions delete --ip 1.2.3.4

最后

通过这次部署和防护的经历,深刻体会到开源项目网站的安全不能忽视,Nginx 日志中的攻击行为让我警醒,而 CrowdSec 的引入让我对网站的防护更有信心。

根据实际使用体验来说,CrowdSec 是一个强大且易用的安全工具。其 Nginx 防护组件和社区威胁情报能够有效应对 Web 攻击和暴力破解,优于 Fail2Ban 和 Suricata 的灵活性和实时性。通过以上步骤,你可以快速部署 CrowdSec,保护你的项目网站免受恶意攻击。更多信息请访问 CrowdSec 官网 或查阅官方文档。

如果你也在云服务器上部署了自己的项目,不妨试试 CrowdSec!它不仅能保护你的网站,还能让你更深入地了解网络安全的世界

生活的意义,也许一时难以看清,但能和一群志同道合的人,全情投入的做一些喜欢和热爱的事,这本身就是最有意义的活法!

参考资料

  • • CrowdSec 官方 Nginx 集成指南:https://doc.crowdsec.net
  • • CrowdSec Hub Web 场景说明
  • • Fail2Ban 和 Suricata 官方文档
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 希里安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 希里安近日见闻
  • 为什么选择 CrowdSec ?
  • CrowdSec 与其他工具的对比
    • 1. 与 Fail2Ban 的差异
    • 2. 与 Suricata 的差异
  • 安装 CrowdSec
    • 1. 添加 CrowdSec 软件源
    • 2. 安装 CrowdSec 主程序
    • 3. 安装 Nginx 防护组件
    • 4. 验证服务状态
    • 5. 配置 Nginx 日志源
    • 6. 安装 Web 防护场景
    • 7. 配置 Nginx 集成
    • 8. 可视化仪表盘(可选)
  • 使用 CrowdSec 保护 Cilikube
    • 查看防护状态
    • 测试防护功能
  • 手动管理封禁
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档