ホームページ  >  記事  >  運用・保守  >  SELinux の 3 つのポリシー分類の詳細な調査

SELinux の 3 つのポリシー分類の詳細な調査

王林
王林オリジナル
2024-02-26 16:03:18952ブラウズ

SELinux の 3 つのポリシー分類の詳細な調査

SELinux は、Linux オペレーティング システムのセキュリティを強化するために使用される必須のアクセス制御セキュリティ テクノロジです。 SELinux では、ポリシーは、ターゲット ポリシー、MLS/MCS ポリシー、およびカスタム ポリシーの 3 つの主要なカテゴリに分類されます。これら 3 つのポリシー分類は、SELinux のセキュリティ機構において重要な役割を果たしますが、この記事では、これら 3 つのポリシー分類について、具体的なコード例を示しながら詳しく紹介します。

  1. ターゲット ポリシー
    ターゲット ポリシーは、SELinux で最も一般的に使用されるポリシー分類であり、ユーザー、プログラム、プロセス間の関係に基づいてアクセス許可を制限します。対象ポリシーでは、少数のユーザーまたはプロセスのみがセキュリティ ポリシーとして定義され、他のユーザーまたはプロセスはデフォルトのポリシーを継承します。これらのユーザーまたはプロセスにロールと権限を割り当てることで、それらのアクセス権を効果的に制御できます。

以下は、ターゲット ポリシーを使用してユーザーのファイルへのアクセスを制限する方法を示すサンプル コードです:

# 创建一个测试文件
touch testfile.txt

# 为该文件设置安全上下文
chcon system_u:object_r:admin_home_t:s0 testfile.txt

# 创建一个用户
useradd testuser

# 给该用户分配角色和权限
semanage user -a -R "staff_r system_r" testuser

# 切换用户至 testuser
su testuser

# 尝试读取文件
cat testfile.txt
  1. 複数のポリシー (MLS/MCS ポリシー)
    マルチポリシーは、よりきめ細かいセキュリティ制御を実現できる、より厳格なポリシー分類です。 MLS (Multi-Level Security) および MCS (Multi-Category Security) ポリシーでは、ファイルとプロセスをセキュリティ レベルまたはカテゴリに基づいて異なるアクセス制御ドメインに分割し、各ドメイン間のアクセス制御を実現します。

次は、MLS ポリシーでファイルのセキュリティ レベルを設定する方法を示すサンプル コードです:

# 创建一个测试文件
touch testfile.txt

# 为该文件设置安全等级
setfattr -n security.selinux -v "s0:c0,c1" testfile.txt

# 查看文件的安全等级
getfattr -n security.selinux testfile.txt
  1. カスタム ポリシー (カスタム ポリシー)
    カスタム ポリシーとは、個別のセキュリティ制御を実現するために、特定のニーズに応じてカスタマイズされたポリシーを指します。カスタム ポリシー モジュールと関連ルールを作成することにより、SELinux のデフォルトの動作をカスタマイズして、特定のセキュリティ要件を満たすことができます。

以下は、単純な SELinux カスタム ポリシー モジュールの作成方法を示すサンプル コードです:

#include <selinux/selinux.h>
#include <selinux/label.h>

int main() {
    security_context_t scontext, tcontext;
    char *class = "file";
    char *perms = "read";
    security_id_t sid, tid;

    int rc = getfilecon("/etc/passwd", &scontext);
    if (rc < 0) {
        perror("getfilecon");
        return 1;
    }

    rc = security_compute_user(scontext, &sid, &tcontext);
    if (rc < 0) {
        perror("security_compute_user");
        return 1;
    }

    rc = security_compute_av(sid, class, perms, &tid);
    if (rc < 0) {
        perror("security_compute_av");
        return 1;
    }

    printf("Source context: %s
", tcontext);
    printf("Target context: %s
", tcontext);

    return 0;
}

上記の例を通じて、ターゲット ポリシー、マルチ ポリシー、およびカスタム ポリシーについて理解しました。 SELinux のポリシーが詳しく紹介されており、具体的なコード例も提供されています。これらのポリシー分類を理解して習得することで、ユーザーは SELinux のセキュリティ メカニズムをより深く理解し、実際のシステム セキュリティ制御に適切に適用できるようになります。

以上がSELinux の 3 つのポリシー分類の詳細な調査の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。