LinuxファイルセキュリティでDAC(ファイルのアクセス許可)、ACL、およびMAC(SELinux)はどのような役割を果たしますか?


18

LinuxファイルのセキュリティにおけるDAC、ACL、およびMACのさまざまな役割について、明確化/確認/詳細化が必要です。

ドキュメントからのいくつかの調査の後、これはスタックの私の理解です:

  1. SELinuxは、ファイルオブジェクトへのアクセスを許可する必要があります。
  2. ファイルのACLが(例えば、場合setfaclgetfaclACL用のマウント)明示的に可能にする/オブジェクトへのアクセスを拒否し、それ以上の処理は必要ありません。
  3. それ以外の場合は、ファイルの権限(rwxrwxrwx DACモデル)に依存します。

何か不足していますか?これが当てはまらない状況はありますか?


2
あなたは正しいと思います。あなたが抱えている問題を投稿してもらえますか?
ケビンM

不正な質問についておforび申し上げます。これに関しては、「試行錯誤」モードに入るように感じます。私は自信を持ってそれを把握しようとしていますが、スタックの各部分が果たす役割のより明確な画像を誰かが共有できることを望んでいました。
ベルミンフェルナンデス

質問を編集して、回答で探しているものを明確にしました。
ベルミンフェルナンデス

回答:


18

プロセスがファイルに対して操作を実行すると、Linuxカーネルは次の順序でチェックを実行します。

  1. 任意アクセス制御(DAC)またはユーザーが指定したアクセス制御。これには、従来のUNIXスタイルのアクセス許可チェックとPOSIXアクセス制御リスト(ACL)の両方が含まれます。従来のUNIXチェックでは、現在のプロセスのUIDおよびGIDと、アクセスされているファイルのUIDおよびGIDが、設定されているモード(読み取り/書き込み/実行)に関して比較されます。アクセス制御リストは、従来のUNIXチェックを拡張して、アクセス許可制御に関するオプションをさらに許可します。

  2. 必須アクセス制御(MAC)またはポリシーベースのアクセス制御。これは、実際のモジュールではなくなったLinux Security Modules(LSM)を使用して実装されます(以前は使用されていましたが、削除されました)。これにより、従来のUNIXスタイルのセキュリティチェック以外のモデルに基づいた追加チェックが可能になります。これらのモデルはすべて、どのコンテキストでどのプロセスにどのような操作が許可されているかを説明するポリシーに基づいています。

オンラインLinuxクロスリファレンスへのリンクを使用して回答をバックアップするiノードアクセス(ファイルアクセスを含む)の例を次に示します。指定された「function_name(filename:line)」は、Linuxカーネルの3.14バージョン用です。

機能inode_permissionFS / namei.c:449)(ファイルシステム自体の読み取り許可の最初のチェックsb_permissionのFS / namei.c:425)、次いでコール__inode_permissionFS / namei.c:394)、リード/ライトをチェックする/実行しますdo_inode_permissionfs / namei.c:368)(DAC)のinodeに対する許可とPOSIX ACL 、次にsecurity_inode_permissionsecurity / security.c:550)のLSM関連の許可(MAC )。

この順序には1つだけ例外がありました(DAC、次にMAC):mmapチェック用でした。しかし、これはLinuxカーネルの3.15バージョンで修正されました(関連するコミット)。


標準的なソースを使用した非常に詳細な回答。ありがとう!
ベルミンフェルナンデス

15

DAC== Discretionary Access Controlhttp://en.wikipedia.org/wiki/Discretionary_access_control
MAC == Mandatory Access Controlhttp://en.wikipedia.org/wiki/Mandatory_access_control
ACL == Access Control Listhttp://en.wikipedia.org/wiki/Access_control_list

ACLコントロールは、コントロールの方法によって適用することを指定し、DAC又はMACMAC明示的で集中管理されており、明示的な許可がない限り、ユーザーはオブジェクトに権限を付与できませんが、ユーザーはDAC他のユーザーにアクセスできるオブジェクトへのアクセス権を付与できます。

MAC ACLsは常に最初に要求に適用され、アクセスが拒否された場合は処理が停止します。アクセスが許可されている場合はDAC ACLが適用され、アクセスが拒否されている場合は処理が停止します。アクセスは、両方によって付与された場合のみMACDAC ACLのユーザー・アクセスは、彼らが要求されたオブジェクトことができます。

SELinuxあるMACLinux用の実装では、(他の人がある)、伝統的ながらrwx所有するユーザおよびグループと結合したファイルのパーミッションは、完全に形成しますDAC ACLSELinux「ポリシー」は、本質的ですMAC ACL


1
ファイルACL(例:)はどこにありますsetfaclか?
ベルミンフェルナンデス

1
setacl基本ファイルシステムを拡張して、ACL複数のユーザーまたはグループをACLファイルおよびディレクトリに割り当てることができるようにします。これもDAC実装であるため、SELinux MAC ACLsの後に適用されます。
マイクインシュ

マイクありがとう。もう1つの質問:テストでわかる限り、明示的に設定されたsetfaclACLは従来のアクセス許可をオーバーライドします。これはすべての場合に当てはまりますか?
ベルミンフェルナンデス

私の知る限り、はい、setacl/ setfacl ACLsはACLファイルの従来の「シンプル」をオーバーライドします。
マイクInsch

1
マイク、あなたのメモsetfaclは答えに属します。
パベルシメルダ

5

して申し訳ありませんが、ここでの答えのいくつかは間違っているかもしれません。Fedoraのhttp://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.htmlから直接:

SELinuxポリシールールは、DACルールの後にチェックされます。DACルールが最初にアクセスを拒否する場合、SELinuxポリシールールは使用されません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.