web-dev-qa-db-ja.com

SELinuxはLinuxカーネルのネットワークスタックにどのように影響しますか?

SELinuxがネットワークスタックを介してパケットの処理にどのように影響するかに興味があります。次の質問と回答が見つかりました。

AppArmor/SELinuxでのネットワークポリシー
ユーザー/グループ/プロセスベースでのネットワークアクセスのフィルタリング

1つ目は、SELinuxがパケットにタグを付けることができることを意味しているようで(VLANにタグを付けるようなもの)、パケットに関連付けられているタグによって処理が異なる場合があります。これは私には理にかなっています。ただし、2番目の質問は、ユーザーグループとアクセス制御を介したネットワークアクセスについて尋ねることです。これが真実であるかどうか、またはそれがどのように可能であるかは、回答とコメントに基づいて不明確です。

Linuxカーネルソースコード(2.6.16、古いことは知っていますが、多くの組み込みデバイスがまだ2.6を使用していることを知っています)を読むと、ファイル/security/selinux/hooks.cに遭遇します。これにはselinux_parse_skb_ipv4, selinux_socket_create, selinux_socket_bind, etcのような関数があります。

私の質問は:

  1. 誰かが私のために2番目の質問を解決できますか?実際にその質問に答えるか、ここで答えます。
  2. SELinuxは他の方法でネットワークスタックに影響を与えますか?
  3. 上記のような機能で、SELinuxは「セキュアソケット」の抽象的な概念を作成するために使用されますか? 「安全なソケット」を作成する Windows APIは関数呼び出しを提供します によく似ています。
7
RoraΖ

ネットワークポートなどのローカルネットワーク資産にアクセスするローカルプロセスのアクセスを制御できます。ラベルをポートオブジェクトおよびユーザーID、プロセスに関連付けられたグループID(個々のプロセスを含む)に関連付けることにより、特定のラベルに関連付けられたエンティティが特定のラベルに関連付けられたエンティティに対して操作または相互作用できるかどうか、およびどのように操作できるかを指定できます。これは通常、非常に堅実です。例外は、ソケットを一時ポートにバインドするために適用されるアクセス制御がないことです。

または、secmarkを使用すると、netfilterセキュリティテーブルを使用してラベルを「非」ローカルアセットに関連付けることができます。したがって、ラベルはシステム内でのみ適用されます。 (たとえば、パケットはラベルなしで受信され、netfilterを使用してラベルに関連付けられます。次に、特定のラベルに関連付けられている他のローカルエンティティがラベル付きパケットを操作する方法を指定できます)。これは、netfilterを使用したローカルソリューションです。

ラベルをパケットがネットワークを通過するときにパケットに実際に関連付けるには、netlabelまたはipsecを使用します。これは、「信頼された」ネットワークに機密性を適用するために使用されます。これには、ネットラベル(マルチレベルセキュリティ)よりもIpsecが推奨されます。

SELinuxは一般に、ネットワークの制御を強化するための最適なツールではありません。一般的には、他のテクノロジーの方が優れたソリューションです。 trustedネットワークに機密性を適用する場合を除きます。

一般的には、SELinuxを使用すると、セキュリティラベルを多数のエンティティに関連付けることができます。これには、個々のユーザーのユーザーグループから、個々のプロセスから、ファイルやネットワークノードなどのローカルおよび非ローカルアセットまでさまざまです。

これは質問に答えるものではなく、私の情報は完全に正確ではなく、確かに包括的ではありませんが、それは何かです。

1
joe