当前位置: 首页 > news >正文

2g2h服务器部署modsecurity、CrowdSec+Nginx bouncer(由z.ai提供)

提问:
服务器系统是opencloudos9,配置是2g2h,安装了宝塔面板,安装了nginx和modsecurity,现在需要安装CrowdSec+Nginx bouncer 做恶意IP封禁,并做内存 限制,怎么部署?

回答:

OpenCloudOS 9(基于 RHEL/CentOS Stream 9)系统上,配置 2核2G 的低配服务器,同时运行 Nginx、ModSecurity 和 CrowdSec 是一个挑战,尤其是内存(RAM)非常紧张。
核心策略:

  1. 必须增加 Swap:2G 内存运行这么多服务极容易 OOM(内存溢出),增加虚拟内存是稳定运行的前提。
  2. Bouncer 选择:虽然你提到了 "Nginx bouncer"(通常指基于 Lua 的版本),但在 2G 内存且使用宝塔面板的情况下,推荐使用 crowdsec-firewall-bouncer
    • 原因:宝塔默认的 Nginx 通常没有内置 Lua 模块,重新编译 Nginx 容易出错且不易维护。Firewall Bouncer 直接操作 iptables/nftables,在系统内核层拦截 IP,性能更好,且不占用 Nginx 进程内存。
  3. 限制并发与采集器:关闭不需要的采集器,减少资源消耗。
    以下是详细的部署步骤:

第一步:系统优化(必须)

由于只有 2G 内存,必须先增加 Swap,防止系统崩溃。

  1. 创建 2GB 的 Swap 文件
    dd if=/dev/zero of=/swapfile bs=1M count=2048
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    
  2. 设置开机自动挂载
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
    
  3. 调整 Swappiness(尽量使用内存,但必要时使用 Swap)
    sysctl vm.swappiness=10
    echo "vm.swappiness=10" >> /etc/sysctl.conf
    

第二步:安装 CrowdSec

OpenCloudOS 9 兼容 RHEL 9 的包。

  1. 添加 CrowdSec 官方仓库
    yum install -y curl
    curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.rpm.sh | sudo bash
    
  2. 安装 CrowdSec 核心程序
    yum install -y crowdsec
    
  3. 安装 Nginx 和 ModSecurity 采集器
    这将告诉 CrowdSec 去读取 Nginx 和 ModSecurity 的日志。
    yum install -y crowdsec-nginx crowdsec-modsecurity
    

第三步:配置 CrowdSec 并节省内存

我们需要禁用一些不需要的功能来节省内存。

  1. 禁用默认过重的采集器(仅保留需要的)
    检查 /etc/crowdsec/acquis.yaml,使用 # 注释掉你不需要的日志采集。
    通常你只需要 Nginx 的日志,如果是宝塔,通常路径在 /www/wwwlogs/,但在 CrowdSec 安装 Nginx 采集器后通常会自动识别。
  2. 卸载不需要的场景集合
    为了节省内存和 CPU,只安装最基础的反暴力破解和反扫描库。
    # 查看已安装的集合
    cscli collections list
    # 如果有非常消耗资源的集合(如某些复杂的 CVE 检测),可以移除
    # cscli collections remove crowdsecurity/xxxx
    

第四步:安装并配置 Bouncer(IP 封禁组件)

强烈建议使用 Firewall Bouncer 替代 Nginx Bouncer。它在网络层直接丢弃数据包,比在 Nginx 层处理更高效,且完美兼容宝塔环境。

  1. 安装 Firewall Bouncer
    yum install -y crowdsec-firewall-bouncer
    
  2. 配置 Bouncer
    编辑配置文件 /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml
    vi /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml
    
    修改以下关键配置:
    mode: nftables   # OpenCloudOS 9 默认使用 nftables,如果报错改为 iptables
    update_frequency: 10s  # 每10秒同步一次封禁列表
    deny_action: DROP     # 直接丢弃包(不返回错误,更省资源)# 在 deny_log_prefix 前面加上注释,减少日志写入
    # deny_log_prefix: "crowdsec-drop: "
    
  3. 启动服务
    systemctl enable --now crowdsec
    systemctl enable --now crowdsec-firewall-bouncer
    

第五步:验证与测试

  1. 检查 CrowdSec 状态

    cscli metrics
    

    查看内存占用情况(mem),确保没有持续飙升。

  2. 模拟攻击(测试是否生效)
    尝试使用错误的密码登录 SSH 或故意访问一个不存在的页面触发 404 多次。

    或者手动封禁一个 IP(例如你自己的测试 IP,请谨慎操作):

    cscli decisions add --ip <测试IP> --duration 1m --reason "test"
    
  3. 检查防火墙列表

    # 如果是 nftables
    nft list table inet crowdsec# 或者查看 iptables 规则
    iptables -L -n | grep crowdsec
    

为什么不推荐安装 crowdsec-nginx-bouncer (Lua 版本)?

你问到了 Nginx Bouncer,这里特别说明一下。标准的 crowdsec-nginx-bouncer 需要 Nginx 编译了 http_lua_module 模块(通常是 OpenResty)。

  • 宝塔的问题:宝塔官方的 Nginx 包默认不包含 Lua 模块。
  • 解决方案的代价:要在宝塔里开启 Lua,你需要“编译安装” Nginx 并勾选 lua-nginx-module,这在 2G 内存的服务器上编译过程极易导致内存溢出卡死,且后续升级 Nginx 很麻烦。
  • 结论:使用 crowdsec-firewall-bouncer 完全可以达到保护 Nginx 的目的,且稳定性远高于 Lua 版本,占用资源更少。

日常维护命令

  • 查看当前被封禁的 IP
    cscli decisions list
    
  • 解封某个 IP
    cscli decisions delete --ip <IP地址>
    
  • 查看系统负载
    top
    
    请密切关注 crowdsec 进程的 RES(物理内存)占用,正常情况下应稳定在 100MB-300MB 之间。
    通过以上部署,你的 ModSecurity 负责检测 Web 攻击(如 SQL 注入),CrowdSec 负责分析日志并自动将恶意 IP 加入系统防火墙封禁,在 2G 内存下实现较好的安全防护。
http://www.jsqmd.com/news/366440/

相关文章:

  • 适配工业润滑油流量测量:2026年优选超声波流量传感器品牌推荐 - 品牌2025
  • AI如何让模糊图像重生?智能重构技术全解析
  • 解析 TCP 服务器中的“幽灵连接”挑战
  • 适配切削加工场景,多款优质切削液超声波流量计推荐 - 品牌2025
  • 虚幻4游戏ogg音频解包.py
  • DOS叙事环与意义行为原生论:一个智能时代意义哲学的理论重构(阐释与反思)
  • rust语言nom库常用接口使用示例5-字符串和比特流解析
  • 1.4 Agent的眼睛耳朵 语言与多模态怎么喂信息
  • Java毕设项目:基于springboot的零食售货机管理系统的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 上海智元机器人AgiBot Night 2026:全球首个机器人主导盛典,破解类人机器人泡沫争议
  • 1.3 Agent的大脑 大模型凭什么能推理和决策
  • 2g2h服务器部署modsecurity、CrowdSec+Nginx bouncer(文章顺序)
  • 冰点渗透压测定仪在跨学科研究与产业应用中的核心价值与技术解析
  • 2026医院标识/发光字/沙盘模型设计哪家好?金苹果广告成政企优选 - 深度智识库
  • MIMO控制策略优化CDU泵速与阀门
  • Java 知识点
  • Reflex Robotics墨西哥工厂:拉丁美洲首个类人机器人工厂,轮式路线能否颠覆行业?
  • 软文营销平台权威评测:三大主流平台深度解析,你的品牌谁更适合? - 资讯焦点
  • 全网优质 SEO 推广公司推荐,五大服务商各有专精适配不同行业 - 品牌推荐大师1
  • JAVA并发 - 线程池
  • Windows-Auto-Night-Mode主题切换修复指南:从根源解决8大典型故障
  • Java计算机毕设之基于springboot的智慧医疗平台管理系统基于SpringBoot的数字化医院信息管理(完整前后端代码+说明文档+LW,调试定制等)
  • 信创合规下的元数据平台选型:从自动化盘点、算子级血缘到 DataOps 的完整指南
  • 端侧AI如何重构语音交互范式?本地语音处理技术的突破与实践
  • 【0 元免费学】AgentScope Java 极客时间公开课上线!
  • Java计算机毕设之基于Java的零食售货机管理系统基于springboot的零食售货机管理系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • HumanX框架深度解析:让Unitree G1人形机器人变身篮球高手,颠覆机器人技能学习范式
  • From Correspondence to Actions Human-Like Multi-Image Spatial Reasoning in Multi-modal Large Languag
  • 2026年数据资产管理厂商推荐,数据资源管理系统平台优选 - 品牌2025
  • 2026国内最新珠宝3D建模培训机构top5推荐!广东广州等地优质培训学校权威榜单发布,专业赋能珠宝行业人才成长 - 品牌推荐2026