間に重要な違いはありますか?LXC(Linuxコンテナ)そしてFreeBSD刑務所セキュリティ、信頼性、パフォーマンスの面で?
一見すると、2つの方法が非常に似ているようです。
答え1
ここで使用されている素晴らしい名前が何であれ、どちらも特定の問題に対する解決策です。つまり、既存のUnixよりも優れた分離ソリューションです。chroot。オペレーティングシステムレベルの仮想化、コンテナ、ゾーン、さらには「ステロイドを使用するchroot」はすべて、ユーザー空間の分離を定義する同じ概念の名前または商標名ですが、機能は異なります。
Chrootはリリースされるわずか数ヶ月前の1982年3月18日にリリースされました。4.2BSD、インストールおよびビルドシステムをテストするためのツールですが、今日でも依然として欠陥があります。 chrootの主な目的は、単に提供することです。新しい根その過程で隔離または制御される必要があるシステムの他の側面(ネットワーク、プロセスビュー、I / Oスループット)は見つかりません。これが最初のコンテナ(ユーザーレベルの仮想化)が登場する場所です。
両方のテクノロジ(FreeBSD JailsとLXC)は、ユーザースペースの分離を活用して別のセキュリティ層を提供します。この分割は、決定されたプロセスが同じホスト上の同じコンテナ内の他のプロセスとのみ通信することを保証し、ネットワークリソースが「外部」通信に使用される場合、すべての通信はそのコンテナによって割り当てられたインターフェイス/チャネルに転送されます。
特徴
FreeBSD刑務所:
- FreeBSD 4.0以降の機能になったため、安定した技術と考えられます。
- ZFSファイルシステムを最大限に活用し、刑務所を複製して作成できます。刑務所のテンプレートより多くの刑務所を簡単に配布します。もっとZFSクレイジー;
- よく記録されたと絶えず進化する;
- 階層化された刑務所を使用すると、刑務所内に刑務所を作成できます(より深く入る必要があります!)。より多くの権限を得るために、子どもの刑務所の定義など
allow.mount.zfs
の他の変数を組み合わせます。children.max
- コントロールセンター(8)刑務所のリソース制限(メモリ、CPU、ディスク...)を処理します。
- FreeBSD刑務所処理Linuxユーザースペース;
- ネットワーク分離
vnet
- 各刑務所が独自のネットワークスタック、インターフェイス、アドレス指定、およびルーティングテーブルを持つことを許可します。 nullfs
フォルダを物理サーバー上のフォルダに接続するのに役立ちます。- エザール大規模な刑務所の配置と管理に役立つユーティリティ
- 多くのカーネル調整可能パラメータ(
sysctl
)。security.jail.allow.*
パラメーターは、この刑務所の root ユーザーの操作を制限します。 - おそらくFreeBSD JailはVPSプロジェクトのいくつかの機能を拡張します。リアルタイム移行近い将来に。
- ZFSとDockerは少し努力しました。完成ランニング。まだ実験段階です。
- フリーBSD 12刑務所の内部のbhyveと刑務所の内部のpfをサポートして、これらのツールの追加の隔離を作成します。
- ここ数年、多くの興味深いツールが開発されてきた。そのうちのいくつかは索引付けされています。このブログ投稿。
- 代替: FreeBSD VPSプロジェクト
Linuxコンテナ(LXC):
- 新しい「核心」技術ですが、大企業(特にカノニカル)で認めます。
- 権限のないコンテナLXC 1.0以降、コンテナ内部のセキュリティの観点から大きな進展がありました。
- コンテナ内のUIDとGIDのマッピング
- IPC、マウント、PID、ネットワーク、およびユーザーを区別するために使用されるカーネルネームスペース。これらの名前空間は、以下を使用して別々の方法で処理できます。さまざまなネットワークネームスペースストレージなどの他の点で必ずしも隔離されているわけではありません。
- 制御グループ(cgroup)は、リソースを管理およびグループ化するために使用されます。CGマネージャーそれを実現する人になってください。
- コンテナにアクセスできるカーネル機能をより効果的に実装するためのApparmor / SELinuxプロファイルとカーネル機能。 Seccompはlxcコンテナと一緒に使用してシステムコールをフィルタリングすることもできます。その他のセキュリティ面ここ。
リアルタイム移行機能は開発中です。 docker / lxcはユーザースペースプロセスの一時停止、スナップショット、移行、および統合を処理する必要があるため、いつ本番用に使用する準備ができているのかは本当に難しいです。参考文献1、参考文献2。リアルタイム移行職場でデフォルトコンテナを使用します(デバイスパスなし、複雑なネットワークサービス、または特別なストレージ構成なし)。- APIバインディングはpython3と2、lua、Go、Ruby、Haskellの開発をサポートしています。
- 集中化された「最新ニュース」分野。これは、いくつかのバグが修正されたか、または新機能が適用されたかどうかを確認する必要がある場合に便利です。ここ。
- 興味深い選択肢は次のとおりです。長いxd、内部的にはlxcで動作しますが、REST API、OpenStack統合などのいくつかの素晴らしい機能があります。
- もう一つの興味深い点は、Ubuntuがコンテナの基本ファイルシステムとしてzfsを使用しているようです。16.04。プロジェクトの一貫性を維持するために、lxdはバージョン2.0をリリースしました。zfs関連。
- 代替:オープンVZ、ルーストアバウト
- ルーストアバウト。 Dockerは、名前空間cgroupを使用して、「アプリケーション固有」/「ソフトウェア別」の分離を作成します。主な違いここ。 LXCは複数のプロセスでコンテナを作成しますが、Dockerはコンテナをできるだけ単一のプロセスに減らし、Dockerによって管理されます。
- DockerをSELinuxと統合し、コンテナ内の機能を減らし、より安全にするための努力 -DockerとSELinux、Dan Walsh
- Docker、LXD、LXCの違いは何ですか
Dockerはlxcを使用しなくなりました。今、彼らは次の特定のライブラリを持っています。ランク低レベルのカーネルネームスペースおよびcgroups機能との統合を直接処理します。
どちらの技術も安全な万能歯磨き粉ではありませんが、両方とも混在オペレーティングシステムのインフラストラクチャのために完全な仮想化を必要としない環境を分離する優れた方法です。セキュリティは、多くのドキュメントを読み、OSレベルのvirtが提供するこれらのカーネル調整可能なエントリ、MAC、および分離を実装した後に行われます。
また見なさい:
- 手作り容器
- BSD Now: 刑務所について知っておくべきこと
- ezjail - 刑務所管理フレームワーク
- コンテナの簡単な歴史:1970年代から2017年まで
- Dockerは有害と見なされます- コンテナ技術セキュリティサーカスに関する素晴らしい記事です。