web-dev-qa-db-ja.com

Dockerコンテナー内のウイルス対策-ホストとコンテナー間で機能しますか?

オープンソースソフトウェアを使用して、Dockerコンテナー内のファイルにウイルス対策のオンアクセススキャンソリューションを実装する必要があります。 Clamav On-Access は正常に機能しますが、いくつかの要件と制限があります。

  • コンテナー内で作業するにはCAP_SYS_ADMIN機能が必要
  • ホストごとではなく、コンテナごとに実行する必要があります
  • 小さなコンテナでも、実行中の各コンテナの署名に850Mbの常駐メモリが必要

この制限はありますか-「ホストから監視するときにコンテナイベントで機能しないことを通知する」、本当に存在するのですか、それともClamAVの設定を間違えただけですか? fanotifyがネームスペースでどのように機能するかについては深い知識はありませんが、カーネルの制限のように見えます。

更新:この制限の回避策はありますか?動的コンテナの性質上、/var/lib/docker/overlay2/container_id/mergedの追加は1つのオプションです。clamd.confは、すべてのコンテナイベントで更新する必要があります。ただし、パスを追加しても、ClamAVはコンテナー内の悪意のあるファイルを検出しません。

コンテナーごとにClamAVを実行すると、特に小さなコンテナーの場合、巨大なメモリオーバーヘッドが発生します。

リンク集:

4
mva

パッチを当てたClamAVを使用したソリューションがあります。

  1. スキャンと検出の分割のため、ClamAV <0.102.0を使用する必要があります:コンテナーの観点からパスが観察されるため、検出されたファイルはスキャンできません
  2. OnAccessMountが機能しないのは、ClamAV構成に各マウントをリストしてから再起動し、Dockerがその場でマウントを作成するためです。
  3. ClamAVがマウントにアクセスできるように、LVMではなくoverlayfsを使用する必要があります
  4. OnAccessIncludePathが機能しないのは、ファイルとフォルダーの列挙メソッドがファイルシステムを走査しないためです(指定されたパスのマウントを超えてスキャンしません)。

OnAccessIncludePathをclamav-develメーリングリストに投稿したパッチで動作させることができました: https://lists.gt.net/clamav/devel/77347#77347

静的マウントにfanotifyを使用するプロセスと、/ var/lib/docker ephemeralマウントを監視するためにinotifyを使用するプロセスで終わりました。 2つのインスタンスがあることは、コンテナあたり1つよりもはるかに優れています。かなりの負荷テストを行い、メーリングリストにメールを送信した頃からパッチを運用しています。

ソフォスはうまくいきませんでしたが、すぐに諦めました。

1
user44127