使用 Traefik 中间件处理 Log4J 漏洞

网络 通信技术
Traefik 的中间件是最让人喜欢的一个功能,为了能够扩展中间件,我们可以非常方便的使用平台上提供的各种中间件,在 Dashboard 上就可以无缝进行对接.

[[441829]]

Traefik 的中间件是最让人喜欢的一个功能,为了能够扩展中间件,Traefik 官方还推出了 Pilot(https://pilot.traefik.io/) 这样的中间件 SaaS 服务,和 Traefik 深度集成,我们可以非常方便的使用平台上提供的各种中间件,在 Dashboard 上就可以无缝进行对接:

Log4Shell(https://github.com/traefik/plugin-log4shell) 就是一个解决最近很火的 Log4J 漏洞的 Traefik 插件,相关介绍:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228。不过要使用该中间件需要 Traefik >= v.2.5.5 版本。

使用也是非常简单的,首先通过静态配置启用该插件,可以通过 Traefik 启动参数配置:

  1. --pilot.token=xxx  # 去 pilot 注册实例获取的 token 
  2. --experimental.plugins.log4shell.modulename=github.com/traefik/plugin-log4shell 
  3. --experimental.plugins.log4shell.version=v0.1.2 

或者配置文件:

  1. pilot: 
  2.   token: xxx 
  3.  
  4. experimental: 
  5.   plugins: 
  6.     log4shell: 
  7.       modulename: github.com/traefik/plugin-log4shell 
  8.       version: v0.1.2 

为了使用 Log4Shell 插件我们首先需要创建一个中间件,比如在 Kubernetes 系统中,只需要创建如下所示的资源对象即可:

  1. apiVersion: traefik.containo.us/v1alpha1 
  2. kind: Middleware 
  3. metadata: 
  4.   name: log4shell-foo 
  5. spec: 
  6.   plugin: 
  7.     log4shell: 
  8.       errorCode: 200 

然后在 IngressRoute 中关联上上面的中间件即可修复:

  1. apiVersion: traefik.containo.us/v1alpha1 
  2. kind: IngressRoute 
  3. metadata: 
  4.   name: whoami 
  5. spec: 
  6.   entryPoints: 
  7.     - web 
  8.   routes: 
  9.     - kind: Rule 
  10.       match: Host(`whoami.localhost`) 
  11.       middlewares: 
  12.         - name: log4shell-foo 
  13.       services: 
  14.         - kind: Service 
  15.           name: whoami-svc 
  16.           port: 80 

当然如果使用的是默认的 Ingress 资源对象,则需要通过 annotation 注解来配置:

  1. apiVersion: networking.k8s.io/v1 
  2. kind: Ingress 
  3. metadata: 
  4.   name: myingress 
  5.   annotations: 
  6.     traefik.ingress.kubernetes.io/router.middlewares: default-log4shell-foo@kubernetescrd 
  7. spec: 
  8.   ingressClassName: traefik 
  9.   rules: 
  10.     - host: whoami.localhost 
  11.       http: 
  12.         paths: 
  13.           - path: / 
  14.             pathType: Prefix 
  15.             backend: 
  16.               service: 
  17.                 name:  whoami 
  18.                 port: 
  19.                   number: 80 

同样如果是使用 Docker 环境则需要通过 labels 标签进行配置:

  1. version: '3.7' 
  2.  
  3. services: 
  4.   whoami: 
  5.     image: traefik/whoami:v1.7.1 
  6.     labels: 
  7.       traefik.enable: 'true' 
  8.       traefik.http.routers.app.rule: Host(`whoami.localhost`) 
  9.       traefik.http.routers.app.entrypoints: websecure 
  10.       traefik.http.routers.app.middlewares: log4shell-foo 
  11.       traefik.http.middlewares.log4shell-foo.plugin.log4shell.errorcode: 200 

 

责任编辑:姜华 来源: k8s技术圈
相关推荐

2022-03-25 13:42:15

Log4j漏洞网络安全

2021-12-23 09:47:36

Log4jRCE漏洞DoS漏洞

2022-03-30 11:29:53

漏洞补丁Spring

2021-12-14 23:44:26

漏洞Log4j项目

2022-01-24 10:02:53

漏洞微软网络攻击

2021-12-23 11:03:25

Log4j 漏洞漏洞

2021-12-13 01:49:34

漏洞Log4j代码

2022-01-02 07:07:55

CISAApache Log4漏洞

2021-12-11 19:04:38

漏洞

2022-01-06 09:52:39

Log4j漏洞攻击

2023-11-10 10:08:23

2019-03-20 15:21:28

Web漏洞Tomcat

2022-02-15 17:51:38

Log4j漏洞网络安全

2022-02-13 16:18:57

JetBrainsIntelliJLog4j

2021-12-21 14:25:01

Log4j2漏洞网络

2022-05-30 14:04:23

Log4j远程代码漏洞

2021-12-22 16:53:31

Log4jLog4j库零日漏洞

2021-12-16 12:27:15

Log4j漏洞网络安全

2021-12-29 14:47:43

Apache团队Log4j漏洞

2023-12-11 15:26:42

点赞
收藏

51CTO技术栈公众号