首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >服务器被扫描爆破?用 CrowdSec防御,给它点“颜色看看”!

服务器被扫描爆破?用 CrowdSec防御,给它点“颜色看看”!

作者头像
释然IT杂谈
发布2025-06-12 13:17:12
发布2025-06-12 13:17:12
4180
举报
文章被收录于专栏:释然IT杂谈释然IT杂谈

公众号

在为我的服务器项目寻找一款稳定可靠的安全防护方案时,我对市面上的主流工具进行了深入对比。最终,我毫不犹豫地选择了 CrowdSec

这不是一次“随便试试”的尝试,而是一场有依据、有实践、有收获的技术落地。今天这篇文章,我就来和你聊聊:

  • ✅ 为什么我选择 CrowdSec
  • 🔍 它和其他安全工具的区别
  • 🛠 如何在 Ubuntu 上部署 CrowdSec
  • 💡 实战中如何保护 Nginx 和 Web 服务


🔒 什么是 CrowdSec?

CrowdSec 是一款 免费开源的日志行为分析工具,通过社区协作共享恶意 IP 情报,从而形成一张不断进化的安全防线。

它的核心理念很简单:

“你发现的攻击者,也可能是别人今天要防御的目标。”

✅ 主要亮点:
  • 🧠 实时共享威胁情报:恶意 IP 数据由全球社区贡献并共享,提升检测广度与时效。
  • ⚙️ 原生支持 Nginx:可直接分析 Nginx 日志,识别如 SQL 注入、爬虫攻击等 Web 威胁。
  • 🪶 极致轻量级:基于日志分析,对系统资源影响微乎其微,适合 Ubuntu 等轻量服务器部署。
  • 📦 多场景支持:不仅能防 Web 攻击,还能检测 SSH 暴力破解、系统登录异常等。
  • 🆓 永久开源免费:社区活跃,文档齐全,适合独立开发者和小型项目使用。


🧩 CrowdSec 组件结构

图片
图片

部署 CrowdSec 后,它的工作机制如下:

组件

作用

Agent

分析日志,提取可疑行为

LAPI(Local API)

中央逻辑中枢,连接 Agent 与 Bouncer

Bouncer

实际执行拦截任务(如阻断 IP)

cscli

命令行工具,用于配置和管理规则


⚔️ 与 Fail2Ban / Suricata 对比

为了更好地评估效果,我对比了市面上的几款常见安全工具:

特性 / 工具

CrowdSec

Fail2Ban

Suricata

开源性

✅ 是

✅ 是

✅ 是

威胁情报

🌍 社区共享,实时更新

📄 本地规则,孤立运行

⌛ 免费规则有延迟

Web 防护

✔️ 原生支持 Nginx

⚠️ 手动配置正则

❌ 无内建支持

检测方式

📜 日志行为分析

🔍 日志匹配

🌐 网络流量分析

防护手段

多层:Nginx + 防火墙

防火墙为主

需 IDS/IPS 硬件

上手难度

🟢 友好,支持仪表盘

🟢 简单但无界面

🔴 配置复杂需专业知识

性能影响

🟢 极小,适合轻量服务器

🟢 轻量

🔴 占用高


🛠 Ubuntu 上安装 CrowdSec(以 Nginx 为例)

以下为 Ubuntu 20.04 / 22.04 安装步骤:

1️⃣ 添加官方源并安装主程序

代码语言:javascript
复制
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt update && sudo apt install -y crowdsec

2️⃣ 安装 Nginx 防护组件

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

可选:支持防火方式拦截:

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

3️⃣ 检查服务是否正常运行

代码语言:javascript
复制
sudo systemctl status crowdsec
sudo systemctl status crowdsec-nginx-bouncer

4️⃣ 配置日志来源

CrowdSec 会读取如下日志:

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

5️⃣ 安装 Web 防护场景(例如 SQL 注入、XSS 等)

代码语言:javascript
复制
sudo cscli collections install crowdsecurity/nginx
sudo cscli collections install crowdsecurity/http-cve

6️⃣ 集成到 Nginx 配置

编辑配置文件(如 /etc/nginx/nginx.conf),加入:

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

然后重启 Nginx:

代码语言:javascript
复制
sudo systemctl restart nginx

7️⃣ 可选:开启 Web 仪表盘

CrowdSec 推荐使用在线控制台https://app.crowdsec.net/signup或临时部署本地仪表盘(未来将弃用):

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

🔍 实战检测与日常运维

✅ 查看当前防护规则:

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

🚫 查看已封禁的恶意 IP:

代码语言:javascript
复制
sudo cscli decisions list
图片
图片

🔧 手动封禁 / 解除封禁:

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

# 解除封禁
sudo cscli decisions delete --ip 1.2.3.4

🧪 模拟一次攻击,验证拦截效果:

代码语言:javascript
复制
curl http://<your_server_ip>/%2e%2e/%2e%2e/etc/passwd
sudo tail -f /var/log/crowdsec.log

🧠 写在最后:不是“是否需要安全防护”,而是“什么时候出问题”

过去,我常常忽略访问日志中那些不起眼的“异常请求”。直到有一天,我看到有人尝试遍历路径、探测系统文件,我才意识到,防护应当在攻击之前就准备好

CrowdSec 不仅帮我建立起第一道防线,更重要的是,它让我站在全球社区的肩膀上,第一时间就能识别新的威胁来源

如果你正在运营自己的站点、服务或者小型项目,不妨亲自试试 CrowdSec。

安全这事,早点做,才不晚。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 释然IT杂谈 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🔒 什么是 CrowdSec?
    • ✅ 主要亮点:
  • 🧩 CrowdSec 组件结构
  • ⚔️ 与 Fail2Ban / Suricata 对比
  • 🛠 Ubuntu 上安装 CrowdSec(以 Nginx 为例)
    • 1️⃣ 添加官方源并安装主程序
    • 2️⃣ 安装 Nginx 防护组件
    • 3️⃣ 检查服务是否正常运行
    • 4️⃣ 配置日志来源
    • 5️⃣ 安装 Web 防护场景(例如 SQL 注入、XSS 等)
    • 6️⃣ 集成到 Nginx 配置
    • 7️⃣ 可选:开启 Web 仪表盘
  • 🔍 实战检测与日常运维
    • ✅ 查看当前防护规则:
    • 🚫 查看已封禁的恶意 IP:
    • 🔧 手动封禁 / 解除封禁:
    • 🧪 模拟一次攻击,验证拦截效果:
  • 🧠 写在最后:不是“是否需要安全防护”,而是“什么时候出问题”
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档