
在日益严峻的网络安全环境下,恶意登录尝试、暴力破解和爬虫攻击频繁发生。对于部署在香港的服务器来说,面对全球 IP 的访问特性,既要保障可用性,又要控制恶意流量,成为一项迫切的挑战。A5IDC将结合 Fail2Ban 与 IPSet,构建一套高效、灵活且自动化的阻断策略,适用于香港服务器防护实战。
一、项目背景与目标
一家金融资讯平台的香港节点,因业务覆盖亚太地区,需对全球开放 SSH、HTTP/HTTPS 服务。近期遭遇频繁扫描、爆破攻击,服务器负载波动明显。
目标:
- 自动识别恶意行为(如 SSH 爆破、异常频率的 Web 请求);
- 实时阻断恶意 IP,减少系统资源消耗;
- 支持快速恢复封禁策略,避免误伤;
- 提升安全策略的可视化与灵活性。
二、核心组件介绍
1. Fail2Ban
Fail2Ban 是基于日志分析的入侵防护系统,主要功能是通过扫描日志文件,发现可疑行为后执行自定义操作(如封禁 IP)。
- 核心机制:正则匹配日志事件 + 动作触发;
- 常见应用场景:SSH 爆破、Nginx 请求过频、Postfix 邮件服务滥用等;
- 优点:轻量级、插件机制丰富、兼容主流服务。
2. IPSet
IPSet 是 Linux 内核中的一个扩展模块,允许批量管理 IP 地址集,并结合 iptables 实现高效封禁。
- 优势对比 iptables:
- 支持数十万 IP 的高效匹配;
- 封禁与解封操作性能优异;
- 便于分类(如按国家、服务划分黑名单)。
三、架构设计与逻辑流程
整体架构如下:
[Fail2Ban] --(触发动作)--> [IPSet] --(结合 iptables)--> [自动封禁]
工作流程:
- Fail2Ban 根据配置规则监控指定日志;
- 发现恶意行为后,执行 add to ipset 的操作;
- iptables 配置规则读取 IPSet 列表,实现流量拦截。
四、环境准备与硬件配置建议
- 服务器位置:香港(HK Data Center)
- 操作系统:Debian 11 / Ubuntu 22.04 LTS
- CPU:至少 2 vCPU
- 内存:建议 4GB 以上
- 网络:支持 IPv4 / IPv6,具备公网访问能力
安装依赖:
apt update
apt install fail2ban ipset iptables-persistent -y
五、Fail2Ban + IPSet 实战配置
1. 创建 IPSet 集合
ipset create blacklist hash:ip timeout 3600
说明:创建名为 blacklist 的 IPSet 集合,默认封禁 1 小时。
2. 配置 iptables 使用 IPSet
iptables -I INPUT -m set --match-set blacklist src -j DROP
持久化设置:
netfilter-persistent save
3. 自定义 Fail2Ban 动作:使用 IPSet 封禁
创建动作脚本 /etc/fail2ban/action.d/ipset-ban.conf:
[Definition]
actionstart = ipset create blacklist hash:ip timeout 3600 -exist
actionstop = ipset flush blacklist
actioncheck =
actionban = ipset add blacklist <ip> timeout 3600 -exist
actionunban = ipset del blacklist <ip>
[Init]
name = ipset-ban
4. Fail2Ban 配置规则示例(以 SSH 为例)
在 /etc/fail2ban/jail.d/ssh-ipset.conf 添加:
[sshd]
enabled = true
port = ssh
filter = sshd
action = ipset-ban[name=sshd]
logpath = /var/log/auth.log
maxretry = 5
findtime = 600
bantime = 3600
重启 Fail2Ban:
systemctl restart fail2ban
六、香港服务器特性优化建议
1. 地域性策略调整
由于香港节点面对亚太地区,建议针对部分高攻击源国家预封锁,例如:
# 使用 ipdeny.com 提供的 IP 段生成 IPSet 列表
wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone
for ip in $(cat cn.zone); do ipset add blacklist $ip timeout 86400; done
2. 调整 Fail2Ban 精度策略
适配香港高访问量特点,建议合理调整:
- maxretry=8(提高容错性);
- findtime=300(短时间判断);
- bantime=7200(夜间封禁更长);
3. 配合 Cloudflare 使用
如果业务通过 Cloudflare 反代,需在 Fail2Ban 中使用真实客户端 IP,调整日志解析规则(如 remote_addr 替换为 http_x_forwarded_for)。
七、数据效果与监控验证
部署后,经过 48 小时观察:
- 封禁记录:日均封禁 IP 超过 2000 个;
- 服务器负载下降:平均负载从 1.8 降至 0.6;
- 误封率控制:极低,通过 IPSet 的动态过期机制自动恢复;
- 可维护性提升:无需手动维护大量 iptables 规则。
可结合以下命令监控:
ipset list blacklist | grep "Number of entries"
fail2ban-client status sshd
八、A5IDC的延伸建议
本方案通过 Fail2Ban 和 IPSet 构建了一个高效、模块化的智能封禁系统,尤其适配面向全球访问的香港服务器。其优势在于自动化、性能高、灵活性强。
后续可扩展方向:
- 集成 Prometheus + Grafana,实现封禁数据可视化;
- 使用 GeoIP2 精准识别高风险地区;
- 与 WAF、防火墙联动,构建更完善的纵深防御体系。
企业通过这个方案,可在提升安全防护水平的同时,保持服务对外开放的灵活性与稳定性。











