linux-system-roles.selinux

SELinux

ansible-lint.yml ansible-test.yml codeql.yml markdownlint.yml python-unit-test.yml tft.yml tft_citest_bad.yml woke.yml

期待する機能

基本的にローカルカスタマイズを管理するための仕組みを提供します:

  • 強制モード/許可モードを設定
  • ファイルシステムツリーの一部分を復元
  • ブール値の設定/取得
  • ファイルコンテキストの設定/取得
  • ログインの管理
  • ポートの管理

注意: disabledモードでSELinuxのカスタマイズを管理する場合は、SELinux targetedポリシーがインストールされている必要があります。

要件

以下を参照してください。

コレクション要件

このロールは外部コレクションを必要とします。以下のコマンドを使用してインストールします:

ansible-galaxy collection install -vv -r meta/collection-requirements.yml

このリポジトリが提供するモジュール

selinux_modules_facts

SELinuxモジュールの状態を取得します。

ロール変数

ローカル変更の削除

デフォルトでは、selinux_booleansselinux_fcontextsselinux_ports、およびselinux_loginsで指定された変更は、既存の変更の上に適用されます。新しい変更を設定する前にローカル変更を削除するには、次の変数をtrueに設定します:

  • selinux_booleans_purge - SELinuxブール値
  • selinux_fcontexts_purge - SELinuxファイルコンテキスト
  • selinux_ports_purge - SELinuxポート
  • selinux_logins_purge - SELinuxユーザーのマッピング

すべての変更を削除するには、selinux_all_purge: trueを使用できます:

selinux_all_purge: true

selinux_policy、selinux_state

SELinuxポリシータイプとモードを管理します。

selinux_policy: targeted
selinux_state: enforcing

selinux_stateの許可される値は、disabledenforcingpermissiveです。

selinux_stateが設定されていない場合、SELinuxの状態は変更されません。 selinux_policyが設定されておらず、SELinuxを有効にする場合、デフォルトはtargetedです。SELinuxがすでに有効な場合、ポリシーは変更されません。

これは、selinuxモジュールを使用して、SELinuxのモードとポリシーを管理します。

selinux_booleans

SELinuxブール値の状態を管理します。これは、各dictsebooleanモジュールで使用される形式のlistです。

selinux_booleans:
  - name: samba_enable_home_dirs
    state: true
  - name: ssh_sysadm_login
    state: true
    persistent: true

selinux_fcontexts

SELinuxファイルコンテキストマッピング定義の状態を管理します。これは、各dictsefcontextモジュールで使用される形式のlistです。

selinux_fcontexts:
  - target: '/tmp/test_dir(/.*)?'
    setype: 'user_home_dir_t'
    ftype: d
    state: present

ユーザーは、以下のオプションのパラメータも渡すことができます:

  • seuser: SELinuxユーザーを設定
  • selevel: MLS/MCSセキュリティ範囲を設定(MLS/MCSシステムのみ)。SELinuxログインマッピングのためのSELinux範囲は、SELinuxユーザー録の範囲がデフォルトです。

個別の変更は、stateabsentに設定することで削除できます。

selinux_ports

SELinuxポートポリシーの状態を管理します。これは、各dictseportモジュールで使用される形式のlistです。

selinux_ports:
  - ports: 22100
    proto: tcp
    setype: ssh_port_t
    state: present
    local: true

selinux_restore_dirs

これは文字列のlistで、各文字列はrestoreconを実行したいファイルシステムのツリーを指定します:

selinux_restore_dirs:
  - /tmp/test_dir

selinux_logins

LinuxユーザーとSELinuxユーザーのマッピングを管理します。これは、各dictseloginモジュールで使用される形式のlistです。

selinux_logins:
  - login: plautrba
    seuser: staff_u
    state: absent
  - login: default
    seuser: staff_u
    serange: s0-s0:c0.c1023
    state: present

selinux_modules

SELinuxモジュールは、selinux_modules変数を使用して管理できます。この変数は、listdictを含みます、例えば:

selinux_modules:
  - path: localmodule.pp
    state: enabled
  - path: localmodule.cil
    priority: 350
    state: enabled
  - name: unconfineduser
    state: disabled
  - name: localmodule
    priority: 350
    state: absent
  • path: ノードにインストールする_local_モジュールファイル(.cilまたは.pp)
  • name: モジュール名、無効なモジュールを有効にしたり、逆に有効なモジュールを無効にしたり、モジュールを削除するために使われます
  • priority: SELinuxモジュールの優先度、デフォルトは*"400"です。 "100"はselinux-policyパッケージからインストールされたモジュールに使用され、* "200"は*サードパーティのrpmsからインストールされた他のモジュールに使用されます
  • state: 次のいずれかの値の1つ
    • enabled: モジュールをインストールまたは有効にします
    • disabled: モジュールを無効にします
    • absent: モジュールを削除します

注意: ノード上でソースからモジュールをビルドすることはサポートされていません。 ただし、多くの場合、すべてのシステムがモジュールで使用されるタイプ、クラス、権限をサポートしている場合、バイナリppまたはcilモジュールを異なるシステムで使用できます。ppモジュールの場合、ターゲットシステム上でサポートされているポリシードットファイルの最も低いバージョンでビルドされる必要があります。

注意: モジュールの優先度は、Red Hat Enterprise Linux 6では無視されます。

注意: モジュールの管理は、FedoraおよびEL 8.6以降では冪等性があります。古いリリースでモジュールを管理することもできますが、冪等性はありません。

selinux_transactional_update_reboot_ok

この変数は、トランザクション更新によって必要な再起動を扱うために使用されます。トランザクションを更新するのに再起動が必要な場合、selinux_transactional_update_reboot_oktrueに設定されていれば、ロールは再起動を続行します。falseに設定されている場合、ロールは再起動が必要であることをユーザーに通知し、再起動要件をカスタムで処理できるようにします。この変数が設定されていない場合、ロールは再起動要件を見逃すことがないように失敗します。

selinux_transactional_update_reboot_ok: true

Ansibleファクト

selinux_reboot_required

このカスタムファクトは、SELinuxがdisabledからenabledに設定されたり、その逆の場合にシステム再起動が必要な場合にtrueに設定されます。そうでない場合はfalseに設定されます。システム再起動が必要な場合、ロールから失敗が返され、それをblock:...rescue:構文で処理する必要があります。再起動はプレイブックで実行する必要があり、ロール自体は管理されたホストを再起動することはありません。再起動後、ロールを再度適用して変更を完了する必要があります。

selinux_installed_modules

このカスタムファクトは、SELinuxモジュールストア構造を表します。

"selinux_installed_modules": {
  <module name>: {
    <module priority>: ("enabled"|"disabled"),
    ...
  },
  ...
}

例えば:

"ansible_facts": {
  "selinux_installed_modules": {
    "abrt": {
      "100": "enabled",
      "400": "disabled"
    },
    "accountsd": {
      "100": "enabled"
    },
    "acct": {
      "100": "enabled"
    }
  }
}

注意: モジュールの優先度は、優先度がサポートされていない場合(例:Red Hat Enterprise Linux 6)には"0"に設定されます。

一般的な使用法は、selinux-playbook.ymlプレイブックで示されています。

rpm-ostree

README-ostree.mdを参照してください。

インストール
ansible-galaxy install linux-system-roles.selinux
ライセンス
gpl-3.0
ダウンロード
153.5k