Rootless Podman环境下Keycloak容器无法生效Fail2ban IP封禁的问题求助
Rootless Podman环境下Keycloak容器无法生效Fail2ban IP封禁的问题求助
各位大佬好,我最近在Rootless Podman环境里部署了Keycloak+PostgreSQL的Pod,搭配Fail2ban做登录防护时遇到了棘手的问题,折腾了半天没搞定,想请教下大家的解决思路!
我的环境详情
- 操作系统:Rocky Linux 9.2
- Podman版本:4.4.1
- Pod配置:以Rootless模式运行,网络使用
--network 'slirp4netns:port_handler=slirp4netns' - Keycloak容器:指定了日志驱动为json-file,日志直接输出到宿主机的
/var/log/keycloak.log,启动参数是--log-driver json-file --log-opt path=/var/log/keycloak.log - 反向代理:用Traefik做前端SSL终止,同时Keycloak自身也开启了SSL
- Fail2ban状态:已经能正确解析Keycloak日志里的失败登录记录,识别出恶意IP并生成iptables封禁规则(用
fail2ban-client status keycloak能看到IP已被封禁),但奇怪的是被封禁的IP仍然能继续提交登录请求,完全不受限制
我的Fail2ban Jail配置
/etc/fail2ban/jail.d/keycloak.local内容如下:
[keycloak] backend = auto enabled = true filter = keycloak maxretry = 3 bantime = 86400 findtime = 86400 logpath = /var/log/keycloak.log action = iptables-allports[name=keycloak]
iptables规则对比
- 封禁前的iptables规则:
iptables -n -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
- 封禁后的iptables规则:
iptables -n -L Chain INPUT (policy ACCEPT) target prot opt source destination f2b-keycloak tcp -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain f2b-keycloak (1 references) target prot opt source destination REJECT all -- xx.xx.xx.xx 0.0.0.0/0 reject-with icmp-port-unreachable RETURN all -- 0.0.0.0/0 0.0.0.0/0
已尝试的调整
我之前了解到Docker环境下需要把封禁规则加到FORWARD链,所以把Jail里的action改成了:
action = iptables-allports[name=keycloak, protocol=all, chain=FORWARD]
修改后iptables确实把规则加到了FORWARD链里,但问题依旧,被封禁的IP还是能正常访问Keycloak。
求助问题
有没有大佬知道怎么让Rootless Podman里的Keycloak容器遵守Fail2ban的iptables封禁规则?或者有没有其他的防护思路可以替代?
备注:内容来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

