前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Traefik 中间件处理 Log4J 漏洞

使用 Traefik 中间件处理 Log4J 漏洞

作者头像
我是阳明
发布2021-12-27 14:17:04
6490
发布2021-12-27 14:17:04
举报
文章被收录于专栏:k8s技术圈

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 启动参数配置:

代码语言:javascript
复制
--pilot.token=xxx  # 去 pilot 注册实例获取的 token
--experimental.plugins.log4shell.modulename=github.com/traefik/plugin-log4shell
--experimental.plugins.log4shell.version=v0.1.2

或者配置文件:

代码语言:javascript
复制
pilot:
  token: xxx

experimental:
  plugins:
    log4shell:
      modulename: github.com/traefik/plugin-log4shell
      version: v0.1.2

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

代码语言:javascript
复制
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: log4shell-foo
spec:
  plugin:
    log4shell:
      errorCode: 200

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

代码语言:javascript
复制
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: whoami
spec:
  entryPoints:
    - web
  routes:
    - kind: Rule
      match: Host(`whoami.localhost`)
      middlewares:
        - name: log4shell-foo
      services:
        - kind: Service
          name: whoami-svc
          port: 80

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

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myingress
  annotations:
    traefik.ingress.kubernetes.io/router.middlewares: default-log4shell-foo@kubernetescrd
spec:
  ingressClassName: traefik
  rules:
    - host: whoami.localhost
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name:  whoami
                port:
                  number: 80

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

代码语言:javascript
复制
version: '3.7'

services:
  whoami:
    image: traefik/whoami:v1.7.1
    labels:
      traefik.enable: 'true'
      traefik.http.routers.app.rule: Host(`whoami.localhost`)
      traefik.http.routers.app.entrypoints: websecure
      traefik.http.routers.app.middlewares: log4shell-foo
      traefik.http.middlewares.log4shell-foo.plugin.log4shell.errorcode: 200
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 k8s技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档