返回首页

ipset 和 CrowdSec 服务器防护免受扫描器

本文描述了基于 ipset、自动封禁和 CrowdSec 的三层流量过滤系统。内核级封禁将垃圾流量减少至 0.3% 并降低负载。提供了更新集合的代码、指标和限制。

三层 WAF:ipset + CrowdSec 用于 Linux 服务器
Advertisement 728x90

多层流量过滤:ipset、自动封禁与 CrowdSec 提升服务器安全

基于 ipset 的过滤系统结合可疑 IP 自动封禁和 CrowdSec,将垃圾流量从 12% 降至 0.3% 以下。封禁在 Linux 内核层(L3/L4)执行,早于 nginx 和 PHP-FPM 处理请求。这大大减轻了生产环境 Bitrix 站点的服务器负载,此前针对 .env、wp-login.php 和 config.php 的扫描曾导致失败率飙升至 99%。

核心优势:封禁过程完全透明、IP 列表原子级更新,以及模块化设计,便于项目定制快速调整。

相较外部 WAF 和 CDN 的优势

外部 WAF 和 CDN 适合全球大规模应用,但对于低流量本地部署,自建过滤系统更实用。

Google AdInline article slot

自建的主要理由:

  • 完全掌控:精确查看哪些 IP 被封、依据何种规则、封禁时长。
  • 应用前封堵:垃圾流量不浪费 nginx/PHP 资源。
  • 高度灵活:轻松添加 Bitrix 专属规则,如 .env 或 .git。
  • 简洁高效:无额外层级膨胀技术栈。

分析基于 HTTP 日志(L7),但数据包丢弃通过 iptables + ipset 在内核层完成。

三层防御架构

系统分层逐步过滤。

Google AdInline article slot

第一层:地理封禁。 无关国家的数据包立即丢弃,无需 HTTP 解析。

第二层:可疑 IP 自动封禁。 地理过滤后,扫描 wp-login.php、shell.php、.env 等模式,违规者封禁 2 小时。

第三层:CrowdSec。 防护器将全球黑名单注入 ipset,并设置 TTL。

Google AdInline article slot

模块化设计允许独立开关各层,最大限度降低误杀。

ipset:可扩展性基石

传统 iptables 处理数千 IP 规则时,进行 O(n) 线性扫描,高负载下性能崩盘。

ipset 采用 hash:ip 或 hash:net 实现 O(1) 查找:

-m set --match-set blocked_ips src

列表更新通过临时集合和交换实现原子操作,无中断:

ipset create "${country}_temp" hash:net 2>/dev/null || ipset flush "${country}_temp"
if [[ -s "$temp_file" ]]; then
    while read network; do
        ipset add "${country}_temp" "$network"
    done < "$temp_file"
    ipset swap "${country}_temp" "$country"
fi
ipset destroy "${country}_temp"

即使批量刷新列表,防护也牢不可破。

基于模式的扫描检测

auto-block-suspicious.sh 脚本尾随日志,锁定可疑请求:

  • wp-login.php(即使在 Bitrix 上)。
  • shell.php、shoha.php。
  • .env、.git、.aws/credentials。

IP 自动封禁 2 小时。例如,200+ 次 /wp-login.php 攻击在 20–30 秒内化解,负载瞬间恢复正常。

封禁统计:

  • 中国:8,802 个 IP。
  • 可疑:10 个 IP(如 4.193.97.168、195.178.110.109)。

CrowdSec 集成

CrowdSec 防护器填充 crowdsec_blacklist ipset 并设置 TTL:

  • 自动同步全球签名。
  • 超时自动过期。

CrowdSec 增强自定义模块,处理已知威胁无需重构逻辑。

实施效果

指标对比(2025 无 WAF vs. 2026 有 WAF):

| 指标 | 无防护 | 有 WAF |

|------------------|--------------|-------------|

| 垃圾流量 | ~12% | <0.3% |

| 负载平均值 | 1.8–2.5 | 0.9–1.2 |

| 失败率 | 高达 40% | 12–15% |

扫描 RPS 峰值在内核层消亡,分析数据现无机器人干扰。

局限性:

  • 无应对高流量 L4 攻击能力。
  • 需 CMS 更新(Bitrix)。
  • 住宅 IP 防护较弱。
  • 不适配全球 CDN 规模项目。

核心要点

  • 可扩展性:ipset 实现数百万 IP 的 O(1) 检查。
  • 原子性:交换机制避免过滤空白。
  • 模块化:独立层(地理、可疑、CrowdSec)精准调优。
  • 高效性:垃圾流量降至 0.3%,负载减半。
  • 透明度:全程可见,无黑盒。

— Editorial Team

Advertisement 728x90

继续阅读