web-dev-qa-db-ja.com

LinuxファイルセキュリティでDAC(ファイル権限)、ACL、MAC(SELinux)はどのような役割を果たしますか?

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

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

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

何か不足していますか?これがnotである状況はありますか?

18

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

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

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

オンラインへのリンクで私の回答をバックアップするためのiノードアクセス(ファイルアクセスを含む)の例を以下に示します Linux相互参照 。 「function_name(filename:line)」は、Linuxカーネルの3.14バージョン用です。

関数inode_permissionfs/namei.c:449 )は、最初にファイルシステム自体の読み取り許可をチェックします(sb_permission in fs/namei.c:425 )、次に__inode_permissionfs/namei.c:394 )を呼び出して、読み取り/書き込み/実行の権限とdo_inode_permissionfs/namei.c:368 )(DAC)、次にsecurity_inode_permissionのLSM関連の権限(MAC)( security/security.c:55 )。

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

20
Siosm

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またはMACによって適用されるコントロールを指定します。 MACは明示的で集中管理されており、明示的な権限がない限り、ユーザーはオブジェクトに権限を付与できません。DACを使用すると、アクセスできるオブジェクトへのアクセスを他のユーザーに付与できます。

MACACLsは常に最初にリクエストに適用され、アクセスが拒否された場合は処理が停止します。アクセスが許可されている場合はDACACLsが適用され、アクセスが拒否された場合は処理が停止します。 MACDACACLsの両方によってアクセスが許可されている場合にのみ、ユーザーはリクエストしたオブジェクトにアクセスできます。

SELinuxはLinux用のMACの実装です(他にもあります)。一方、従来のrwxファイルの権限は、所有するユーザーおよびグループと組み合わせて完全なDACACLを形成します。 SELinux 'ポリシー'は基本的にMACACLです。

15
Mike Insch

誤解して申し訳ありませんが、私はここでの答えのいくつか可能性がありますが間違っていると思います。 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ポリシールールは使用されません。

5
lmgtfy