何がsystemd-nspawnを「安全なコンテナ設定に適さない」のでしょうか?


21

これは、systemd-nspawnの manページに記載されています

これらのセキュリティ予防措置が講じられているにもかかわらず、systemd-nspawnは安全なコンテナのセットアップには適していないことに注意してください。セキュリティ機能の多くは回避される可能性があるため、コンテナからホストシステムへの偶発的な変更を避けるために主に役立ちます。このプログラムの使用目的は、ブートとシステム管理に関連するパッケージ、ディストリビューション、およびソフトウェアの構築だけでなく、デバッグとテストです。

この質問は2011年メーリングリストで続けて尋ねられましたが、答えは時代遅れのようです。

systemd-nspawnにはCLONE_NEWNET--private-network現在このオプションを使用して実行するコードが含まれています。これは、プライベートカバーすると思われるAF_UNIX名前空間の問題を、と私は推測CAP_NET_RAWしてCAP_NET_BIND問題が言及しました。

この時点でどのような問題が残っており、systemd-nspawn現在できることに加えて、たとえばLXCは何をしていますか?


AF_UNIXは、ハーフCLONE_NEWNETソケットで分離されます:抽象ソケット-個別のファイルシステムベース-結合(ホストとコンテナ間に共有ファイルシステムがない場合を除く)。これにより、特定のアプリケーションのネットワークを禁止してXアプリケーションを開始するのが便利になります(Xorgは抽象とファイルシステムの両方のUNIXソケットを開くため)。
Vi。

回答:


12

LXCは、コンテナを非特権ユーザーとして実行できるため、少し優れています。これはsystemd-nspawnで可能ですが、(複数ではなく)1人のユーザーのみが必要なシナリオの場合のみです。これは、コンテナシナリオのマルチプロセスでは困難または安全性が低い場合があります。docker、lxc、およびsystemd-nspawnが本質的に強固なセキュリティメカニズムではない理由を知りたい場合は、https://opensource.com/business/14/7/docker-security-selinuxを読んでください。基本的に、コンテナは引き続きカーネルにアクセスでき、カーネルエクスプロイトはマシン全体を制御します。Linuxのようなモノリシックカーネルでは、カーネルの悪用は珍しくありません。


3
この答えは間違っています。systemd-nspawnは、別のユーザーへの特権のドロップをサポートしています:freedesktop.org/software/systemd/man/systemd-nspawn.html
David Timothy Strauss 14年

コンソール/シェルを非特権ユーザーとして実行するだけで、それ以外はすべてルートとして実行することは確かです。調べていただけますか?
キャメロンネモ14年

1
わかりました、最後の声明を取り戻します。ただし、適切なsubuid / subgidの処理はありません。コンテナごとに1人の非特権ユーザーのみです。
キャメロンネモ14年

2
完全なsubuid / subgid処理をサポートするのではなく、コンテナごとに1人の非特権ユーザーにしかドロップできないことは、セキュリティの問題ではありません。これは機能の制限です。
デビッドティモシーシュトラウス14年

ええ、知っています。違いを指摘しただけです。
キャメロンネモ14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.