如何在Kubernetes下使用Fail2ban? [英] How to use Fail2ban under Kubernetes?

查看:13
本文介绍了如何在Kubernetes下使用Fail2ban?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

到目前为止,我在单VPC上使用Docker作为手工托管解决方案,在主机上安装了ail2ban,并从Nginx容器查看Docker日志(每台服务器可以托管多个网站,通过Nginx代理提供服务)

我想知道如何使用Kubernetes实现相同的功能,特别是在X次尝试后阻止对/wp-admin访问的POST请求?

我想过为Nginx Proxy(K8中的Inress)构建一个定制的Docker镜像,包括Fail2ban;但也许还有一个更简单的解决方案:网络策略?

推荐答案

这是一个老问题,作者可能已经解决了,但对于其他社区成员,我决定提供一些澄清的答案。

我已尝试找到fail2ban解决方案来帮助处理此案例。不幸的是,我没有找到既合适又容易使用的东西。
fail2ban与Kubernetes集成创建GitHub issue可能是合理的。

下面是一些可能对您有帮助的其他解决方案:

ModSecurity

使用Kubernetes Ingress将来自群集中的HTTP和HTTPS路由公开给群集中的服务可能是一个很好的起点。

Kubernetes Ingress documentation中所示:

您必须有一个入口控制器才能满足入口要求。仅创建入口资源不起作用。您可能需要部署入口控制器,如inress-nginx。

在Nginx入口控制器中,您可以使用ModSecurity作为第三方插件:

ModSecurity是一种开放源代码Web应用程序防火墙。可以为一组特定的入口位置启用它。必须首先通过在ConfigMap中启用ModSecurity来启用ModSecurity模块。注意:这将为所有路径启用modSecurity,并且必须手动禁用每条路径。

您可以通过在入口级设置以下注释来启用OWASP Core Rule Set(有关详细信息,请参阅NGINX ModSecurity configuration文档):

nginx.ingress.kubernetes.io/enable-owasp-core-rules: "true"

似乎可以将ModSecurity用作暴力身份验证保护,如本文所述: Defending WordPress Logins from Brute Force Attacks

此外,值得一提的是,Nginx Inress控制器有许多annotations可用于缓解DDoS攻击,例如:

要从速率限制中排除的

nginx.ingress.kubernetes.io/limit-whitelist:客户端IP源范围。该值是逗号分隔的CIDR列表。

nginx.ingress.kubernetes.io/Limit-rps:指定IP每秒接受的请求数。猝发限制设置为此限制乘以猝发乘数,默认乘数为5。当客户端超过此限制时,将返回Limit-Req-Status-Code Default:503。

nginx.ingress.kubernetes.io/limit-connections:允许来自单个IP地址的并发连接数。超过此限制时返回503错误。

WordPress Plugins

当您使用WordPress时,您可以使用许多WordPress插件。 例如,Web Application Firewall插件提供Real Time IP Blocking功能。

Web Application Firewall (WAF)

无论您使用的是onprem环境还是云环境,都可以使用专门的防火墙(WAF)和Google Cloud Armor(参见Cloud Armor for on-prem and cloud workloads)等DDoS缓解服务。

这篇关于如何在Kubernetes下使用Fail2ban?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆