3

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

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

我想过为 Nginx 代理(K8s 中的 Ingress)构建一个自定义 Docker 镜像,包括 Fail2ban;但也许有一个更简单的解决方案:网络策略?

4

2 回答 2

2

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

我试图找到一个fail2ban可以帮助解决这种情况的解决方案。不幸的是,我没有找到任何合适且易于使用的东西。创建一个与 Kubernetes 集成的GitHub 问题
可能是合理的。fail2ban

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

国防部安全

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

正如我们在Kubernetes Ingress 文档中看到的:

您必须有一个 Ingress 控制器才能满足 Ingress。仅创建 Ingress 资源没有任何效果。您可能需要部署一个 Ingress 控制器,例如 ingress-nginx。

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

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

您可以通过在入口级别设置以下注释来启用OWASP 核心规则集(更多信息可以在NGINX ModSecurity 配置文档中找到):

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

如本文所述,似乎可以ModSecurity用作蛮力身份验证保护防御 WordPress 登录免受蛮力攻击

此外,值得一提的是,NGINX Ingress Controller 有许多可用于缓解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 插件

当您使用 WordPress 时,您可以使用许多 WordPress 插件。例如,Web 应用程序防火墙插件提供了Real Time IP Blocking功能。

Web 应用程序防火墙 (WAF)

无论您使用的是本地还是云环境,您都可以使用专门的防火墙 (WAF) 和 DDoS 缓解服务,例如Google Cloud Armor(请参阅Cloud Armor 了解本地和云工作负载)。

于 2021-03-19T12:50:10.867 回答
-1

我想你说的是监控请求,k8s不能监控流量。网络策略只能用于节点之间的负载平衡。您可以使用Istio监控流量,但与微服务连接。

您需要Istio 在集群上安装。然后,您必须使用 Grafana 可视化指标,并按照以下教程中的步骤 https://istio.io/docs/tasks/telemetry/metrics/using-istio-dashboard/ 和可视化工作负载仪表板提供有关每个工作负载的指标的详细信息。

Istio 还有许多其他优点,您还可以使用以下方式跟踪请求Zipkin

我希望这有帮助。

于 2019-05-16T11:44:51.650 回答