gpt4 book ai didi

docker - docker 容器中的防病毒 - fanotify 在主机和容器之间工作吗?

转载 作者:行者123 更新时间:2023-12-01 03:02:50 31 4
gpt4 key购买 nike

我需要使用开源软件对 docker 容器内的文件实现防病毒访问扫描解决方案。 Clamav On-Access工作正常,但有一些要求和限制:

  • 需要 CAP_SYS_ADMIN 功能才能在容器内工作
  • 需要按容器运行,而不是按主机运行
  • 需要 850Mb 驻留内存用于每个正在运行的容器中的签名,即使是很小的容器

  • 这个限制 - “从主机观看时,fanotify 不适用于容器事件”,真的存在还是我只是错误配置了 ClamAV?我对 fanotify 如何与命名空间一起工作没有深入的了解,但对我来说它看起来像是内核限制。

    更新:是否有针对此限制的解决方法?添加 /var/lib/docker/overlay2/container_id/merged是一种选择,因为动态容器的特性 clamd.conf需要在每个容器事件上更新。但即使添加了路径,ClamAV 也不会检测到容器中的恶意文件。

    每个容器运行 ClamAV 会产生巨大的内存开销,尤其是对于小容器。

    链接集合:
  • fanotify events do not work between containers
  • Using fanotify within Docker Containers
  • Fanotify kernel interface does not support scanning inside containers
  • Could not watch path /var/lib/docker/overlay2 error
  • Patch for OnAccessIncludePath traversal across file systems
  • 最佳答案

    我有一个带有补丁 ClamAV 的解决方案。

  • 必须使用ClamAV < 0.102.0,因为扫描和检测分离:无法扫描检测到的文件,因为从容器的角度观察路径
  • OnAccessMount 不起作用,因为您必须在 ClamAV 配置中列出每个挂载,然后重新启动,docker 会动态创建挂载
  • 必须使用overlayfs 而不是LVM 以便ClamAV 可以访问挂载
  • OnAccessIncludePath 不起作用,因为文件和文件夹枚举方法不遍历文件系统(不扫描指定路径的挂载)

  • 我能够让 OnAccessIncludePath 使用我发布到 clamav-devel 邮件列表的补丁: https://lists.gt.net/clamav/devel/77347#77347 .

    我最终得到了一个使用 fanotify 进行静态挂载的进程,以及一个使用 inotify 监视/var/lib/docker 临时挂载的进程。每个容器有 2 个实例仍然比 1 个要好得多。我做了一些负载测试,并且从我邮寄列表开始就已经在生产中安装了补丁。

    Sophos 对我不起作用,但我很快就放弃了。

    关于docker - docker 容器中的防病毒 - fanotify 在主机和容器之间工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60043439/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com