
过了五一,感受到夏天的温度了,天气越来越热。喜欢夏天有很多水果可以吃,喜欢夏天不用像冬天那样穿很厚的衣服。但是周末真的只能在家开空调窝着了。有了时间,就把自己的开源项目cilikube的演示站点部署上了,还不知道cilikube是什么的,可以看下希里安上一篇文章开源新星CILIKUBE,专为小白设计,玩转Vue3+Go全栈与云原生,Helm部署轻松上手!
部署完后看到正常运行还挺开心的,就把站点分享给了社区里的小伙伴,以运维职业敏感性,所以会时常关注着运行日志,果不其然,没两天就发现有很多异常日志了。比如:


这些迹象表明,我的开源演示站点正遭受爬虫、暴力破解或其他恶意攻击,那么除了最基础效率最低的手动ban掉异常ip之外,还有没有其他的方式可以防御呢?所以急需部署一个高效的入侵检测与防御系统(IDS/IPS),咱说干就干,抓紧部署!
经过对比,我最终选择了 CrowdSec,原因如下:
CrowdSec 是一款开源、协作式的安全工具,通过日志分析和社区共享的威胁情报,能够有效检测并阻止恶意行为

CrowdSec 的核心优势包括:
CrowdSec 的主要组件包括:

那这款工具和其他工具对比有什么差异呢?各位读者接着来看下一部分
以下是 CrowdSec 与 Fail2Ban 和 Suricata 在保护 Nginx 部署的 Cilikube 项目时的对比:
特性/工具 | CrowdSec | Fail2Ban | Suricata |
|---|---|---|---|
开源性 | 开源 | 开源 | 开源 |
威胁情报 | 社区共享,实时更新恶意 IP | 本地规则,无共享 | 依赖规则集,免费规则延迟 30 天 |
Web 防护 | 原生支持 Nginx,防护 SQL 注入、XSS 等 | 需手动配置正则规则 | 依赖流量分析,需额外配置 |
检测方式 | 日志分析,适合 Nginx | 日志正则匹配 | 网络流量分析 |
防护方式 | Nginx 集成、防火墙等多层次 | 仅防火墙规则 | 依赖防火墙或专用设备 |
易用性 | CLI 和 Web 仪表盘,易于配置 | 配置简单,无 Web 界面 | 配置复杂,需专业知识 |
性能影响 | 轻量,适合 Ubuntu | 轻量 | 流量分析,资源占用高 |
以下是在 Ubuntu(测试于 20.04/22.04)上安装 CrowdSec 的步骤
运行以下命令添加官方软件源:
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash更新软件包并安装:
sudo apt update
sudo apt install -y crowdsec安装后,CrowdSec 会自动启动并配置默认场景
为保护 Cilikube 的 Nginx 服务器,安装 Nginx 防护组件:
sudo apt install -y crowdsec-nginx-bouncer注意:你也可以安装
crowdsec-firewall-bouncer-iptables安装后,Bouncer 会自动与 CrowdSec 协同工作,封禁检测到的恶意 IP
检查 CrowdSec 和防护组件是否运行:
sudo systemctl status crowdsec
sudo systemctl status crowdsec-nginx-bouncerCrowdSec 通过解析 Nginx 日志检测 Web 攻击。编辑 /etc/crowdsec/acquis.yaml,添加 Nginx 日志路径(默认已经配置好的):
filenames:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
- /var/log/auth.log # 同时监控 SSH 相关攻击
labels:
type: nginx确保 Nginx 日志格式正确(CrowdSec 默认支持 Nginx 的 combined 格式)。若使用自定义日志格式,参考官方文档调整解析器。
为 Cilikube 添加 Web 攻击防护(如 SQL 注入、XSS、路径遍历):
sudo cscli collections install crowdsecurity/nginx
sudo cscli collections install crowdsecurity/http-cve将 Nginx 与 CrowdSec 防护组件集成,编辑 Nginx 配置文件(如 /etc/nginx/nginx.conf 或站点配置文件),添加:
http {
...
include /etc/nginx/crowdsec.conf;
}CrowdSec 安装 crowdsec-nginx-bouncer 时会自动生成 /etc/nginx/crowdsec.conf,用于检查请求是否来自恶意 IP。
重启 Nginx:
sudo systemctl restart nginx不过目前官网推荐注册在线的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/
sudo cscli dashboard setup --listen 0.0.0.0 --port 8080 --password <your_password>访问 http://<your_server_ip>:8080,查看攻击详情和封禁记录



安装完成后,CrowdSec 会自动监控 Nginx 和系统日志,检测针对 Cilikube 的攻击。以下是常用操作:
• 列出已安装的防护场景:
sudo cscli collections list
sudo cscli scenarios list• 查看当前封禁的恶意 IP:
sudo cscli decisions list
模拟 Web 攻击(如路径遍历):
curl http://<your_server_ip>/%2e%2e/%2e%2e/etc/passwd检查日志确认是否触发封禁:
sudo tail -f /var/log/crowdsec.log• 封禁特定 IP:
sudo cscli decisions add --ip 1.2.3.4 --duration 24h --reason "cilikube_attack"• 移除封禁:
sudo cscli decisions delete --ip 1.2.3.4通过这次部署和防护的经历,深刻体会到开源项目网站的安全不能忽视,Nginx 日志中的攻击行为让我警醒,而 CrowdSec 的引入让我对网站的防护更有信心。
根据实际使用体验来说,CrowdSec 是一个强大且易用的安全工具。其 Nginx 防护组件和社区威胁情报能够有效应对 Web 攻击和暴力破解,优于 Fail2Ban 和 Suricata 的灵活性和实时性。通过以上步骤,你可以快速部署 CrowdSec,保护你的项目网站免受恶意攻击。更多信息请访问 CrowdSec 官网 或查阅官方文档。
如果你也在云服务器上部署了自己的项目,不妨试试 CrowdSec!它不仅能保护你的网站,还能让你更深入地了解网络安全的世界
生活的意义,也许一时难以看清,但能和一群志同道合的人,全情投入的做一些喜欢和热爱的事,这本身就是最有意义的活法!
参考资料: