CentOS7 SELinuxはMCSカテゴリに準拠していないようです

CentOS7 SELinuxはMCSカテゴリに準拠していないようです

問題

特定のSELinux MCS(マルチカテゴリセキュリティ)カテゴリに割り当てられたファイルは、そのカテゴリに割り当てられていないユーザーによって読み取られる可能性があります。これは、MCSが何らかの理由で私のシステム(CentOS7、最小限のインストール、SELinuxの強制)で動作しないことを示しています。ターゲットを絞ったポリシー )。

背景

最近、自分用に小さな vServer を入手し、それがきっかけでセキュアなシステム設定に取り組み、初めて SELinux を扱うようになりました。サーバー上で実行するアプリケーションを Docker コンテナーで実行して分離するつもりです (ホスト自体は CentOS7 で動作しています)。各 Docker コンテナーには (デフォルトで) 起動時にランダムな SELinux MCS カテゴリが割り当てられ、分離のための追加のセキュリティ レイヤーが提供されることを知ってうれしく思いました。SELinux 全般と MCS の具体的な動作に慣れるために、自宅のマシンの 1 つに VM をセットアップして少し試してみました。そうすると、MCS が期待どおりに動作しないことに気付きました。つまり、重要なことを見逃しているか、どこかに構成の問題があるかのどちらかです。

私がしたこと

MCSをテストするために、[0]と[1]の指示に従いました。まず、SELinuxが実際に実行されていることを確認しました。強制するモードとターゲットを絞ったポリシーを使用するsestatus。[0]に従って、私はユーザSELinux ユーザーと CentOS ユーザージョンジェーンジョンジェーンこれを次のようにマッピングしました。ユーザを使用しますsemanage login。また、[0]に記載されているようにユーザーにカテゴリを割り当て、次のようになりました。

Login Name | SELinux User | MLS/MCS Range

john | mcsuser_u | s0-s0:c122
jane | mcsuser_u | s0-s0:c123
johnjane | mcsuser_u | s0-s0:c122,123

からとsemanage login -l

mcsuser_u | MLS/MCS Level: s0 | MLS/MCS Range: s0-s0:c0.c1023 | SELinux Roles: user_r

からsemanage user -l

ユーザーのホームディレクトリを作成しましたジョン世界中で読める(chmod 707)、ログイン中ジョンテキストファイルを作成したジョンテキスト. 次にカテゴリーを割り当てましたc122そのファイル(まだログインしているジョン)。カテゴリーを割り当てることもできました120年頃ファイルに、ジョン分類されていない120年頃彼自身は[0]によれば不可能であるはずである(その後私は120年頃もう一度)。ls -lZ johntext出力を表示します

-rw-rw-r-- john john mcsuser_u:object_r:user_home_t:s0:c122 johntext

上記の手順に従い、ユーザーとしてログインしましたジェーン、ファイルを読み込もうとしたジョンテキストコマンドを使用してcat、それが実行できました。

これは、私にとって、MCS が期待どおりに動作していないことを明確に示しています (アクセスを要求するユーザーが同じカテゴリに属している場合にのみ、特定のカテゴリのオブジェクトへのアクセスを許可します)。

解決策は?

私は今少し混乱していて、どこに間違いがあるのか​​分からないので、皆さんにアドバイスを求めています。おそらく私の側の単なる誤解か誤解なのでしょうが、今のところは理解できず、意味が分かりません。私の見るところ、次のような可能性があります。

1. MCSチェックを手動で有効にするか、別のポリシーを使用する必要があります

MCSサポートを手動で有効化する必要があるかどうかについての情報は見つからなかったため、ラベルを割り当てるだけで動作すると想定しています([1]に基づく)。他の情報源[2]では、MCSはターゲットを絞った少なくとも Fedora と RHEL に関するポリシーであり、CentOS でも同じであると予想されます。

2. 私の側で設定ミスがある

ユーザー カテゴリの設定やsemanage loginファイルへのカテゴリの割り当てで間違いを犯した可能性があります。

3. 壊れているだけ

それは良くない

参照リンク

0:https://selinux-mac.blogspot.de/2009/06/multi-category-security.html

1:https://www.centos.org/docs/5/html/Deployment_Guide-en-US/sec-mcs-getstarted.html

2:参考文献

フルsestatus出力

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

[編集]:

CentOS 6.9 を実行している VM で同じ手順をテストしたところ、すべてが期待どおりに動作しました。現時点では、CentOS の SELinux の MCS に関するバグがあるか、ポリシー/構成に文書化されていない変更があり、微調整が必​​要であると想定しています。期待どおりに動作させるために、次にどのような手順を踏めばよいのか、まだわかりません。

答え1

どうやらCentOS6からCentOS7にかけてSELinuxポリシーが変更され、MCS制約がすべてのタイプに適用されなくなったようです。特定のタイプがMCSに準拠するには、mcs_constrained_typeカスタムポリシーを介してそのタイプに属性を追加する必要があります。その方法(およびデフォルトでMCS制約されるタイプ(およびその理由))の詳細については、ダン・ウォルシュのブログ投稿

関連情報