

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AL2023 の SELinux モードの設定
<a name="selinux-modes"></a>

AL2023 の デフォルトでは、Security Enhanced Linux (SELinux) は `enabled` であり、`permissive` モードに設定されています。許可モードでは、アクセス拒否は記録されますが、強制ではありません。SELinux は、カーネルの主要なサブシステムに強力で柔軟性のある強制アクセス制御 (MAC) アーキテクチャを提供するためのカーネル機能とユーティリティの集まりです。

SELinux は、機密性と完全性の要件に基づいて情報を分離するように強化されたメカニズムを備えています。このように情報を分離することで、アプリケーションのセキュリティメカニズムの改ざんやバイパスの脅威が軽減されます。また、悪意のあるアプリケーションや欠陥のあるアプリケーションによって引き起こされる可能性のあるダメージも回避できます。

SELinux には、日々のセキュリティの目標を満たすように設計されたサンプルセキュリティポリシー設定ファイルのセットが含まれています。

SELinux の特徴と機能の詳細については、「[SELinux ノートブック](https://github.com/SELinuxProject/selinux-notebook/blob/main/src/toc.md)」および「[ポリシー言語](https://github.com/SELinuxProject/selinux-notebook/blob/main/src/policy_languages.md)」を参照してください。

**Topics**
+ [AL2023 でのデフォルトの SELinux のステータスとモード](default-SELinux-modes-states.md)
+ [`enforcing` モードへの変更](enforcing-mode.md)
+ [AL2023 の SELinux を無効にするオプション](disable-option-selinux.md)

# AL2023 でのデフォルトの SELinux のステータスとモード
<a name="default-SELinux-modes-states"></a>

AL2023 では、SELinux はデフォルトで `enabled` となり、`permissive` モードに設定されています。`permissive` モードでは、アクセス拒否は記録されますが、強制ではありません。

**getenforce** または **sestatus** コマンドは、現在の SELinux のステータス、ポリシー、モードを知ることができます。

デフォルトステータスが `enabled` およびに `permissive` 設定されていると、**getenforce** コマンドは `permissive` を返します。

以下の例で示すように、**sestatus** コマンドは SELinux のステータスと現在の SELinux ポリシーを返します。

```
$ sestatus
SELinux status:                 enabled
  SELinuxfs mount:                /sys/fs/selinux
  SELinux root directory:         /etc/selinux
  Loaded policy name:             targeted
  Current mode:                   permissive
  Mode from config file:          permissive
  Policy MLS status:              enabled
  Policy deny_unknown status:     allowed
  Memory protection checking:     actual (secure)
  Max kernel policy version:      33
```

SELinux を `permissive` モードで実行すると、ユーザーがファイルに誤ったラベルを付ける可能性があります。SELinux を `disabled` ステータスで実行すると、ファイルにはラベルが付けられません。`enforcing` モードに変更すると、正しくないファイルやラベル付けされていないファイルの両方が問題を引き起こす可能性があります。

SELinux は、この問題を回避するために自動的にファイルにラベルを付け直します。SELinux は、ステータスを `enabled` に変更したときの自動再ラベル付けにより、ラベル付けの問題を防ぎます。

# `enforcing` モードへの変更
<a name="enforcing-mode"></a>

SELinux を `enforcing` モードで実行すると、SELinux ユーティリティによって設定済みのポリシーが`enforcing`されます。SELinux は、ポリシーのルールに基づいてアクセスを許可または拒否することで、特定のアプリケーションの機能を管理します。

SELinux の現在のモードを調べるには、`getenforce` コマンドを実行します。

```
getenforce
Permissive
```

## 設定ファイルを編集して `enforcing` モードを有効にする
<a name="config-file-enforcing"></a>

モードを `enforcing` に変更するには、次の手順を使用します。

1. `/etc/selinux/config` ファイルを編集して `enforcing` モードに変更します。`SELINUX` 設定は次の例のようになります。

   ```
   SELINUX=enforcing
   ```

1. システムを再起動して `enforcing` モードへの変更を完了します。

   ```
   $ sudo reboot
   ```

次回の起動時に、SELinux はシステム内のすべてのファイルとディレクトリにラベルを付け直します。SELinux は、SELinux が `disabled` であったときに作成されたファイルとディレクトリの SELinux コンテキストも追加します。

`enforcing` モードに変更すると、SELinux ポリシールールが不正確または欠落しているという理由で SELinux が一部のアクションを拒否することがあります。以下のコマンドを使用して SELinux が拒否するアクションを表示できます。

```
$ sudo ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts recent
```

## cloud-init を使用して `enforcing` モードを有効にする
<a name="cloud-init-enforcing"></a>

別の方法として、インスタンスを起動するときに、以下の `cloud-config` をユーザーデータとして渡して、`enforcing` モードを有効にします。

```
#cloud-config
selinux: 
  mode: enforcing
```

デフォルトでは、この設定によりインスタンスが再起動されます。安定性を高めるため、インスタンスを再起動することをお勧めします。ただし、必要に応じて、いかの `cloud-config` を指定して再起動をスキップすることができます。

```
#cloud-config
selinux:
  mode: enforcing
  selinux_no_reboot: 1
```

# AL2023 の SELinux を無効にするオプション
<a name="disable-option-selinux"></a>

SELinux を無効にすると、SELinux ポリシーが読み込まれたり適用されたりせず、Access Vector Cache (AVC) メッセージはログに記録されません。SELinux を実行することで得られる利点はすべて失われます。

SELinux を無効にする代わりに、`permissive` モードを使用することをお勧めします。SELinux を完全に無効にするよりも、`permissive` モードで実行するほうが少しだけコストが高くなります。`permissive` モードから `enforcing` モードへの移行するほうが、SELinux を無効にした後に `enforcing` モードに戻るよりも設定の調整がはるかに少なくて済みます。ファイルにラベルを付けることができ、アクティブなポリシーで拒否された可能性のあるアクションをシステムが追跡して記録できます。

## SELinux から `permissive` モードへの変更
<a name="change-to-permissive"></a>

SELinux を `permissive` モードで実行すると、SELinux ポリシーは適用されません。`permissive` モードでは、SELinux は AVC メッセージをログに記録しますが、操作は拒否されません。これらの AVC メッセージは、トラブルシューティング、デバッグ、SELinux ポリシーの改善に使用できます。

SELinux を許可モードに変更するには、次の手順を使用します。

1. `/etc/selinux/config` ファイルを編集して `permissive` モードに変更します。`SELINUX` 値は次の例のようになります。

   ```
   SELINUX=permissive
   ```

1. システムを再起動して `permissive` モードへの変更を完了します。

   ```
   sudo reboot
   ```

## SELinux の無効化
<a name="disable-selinux"></a>

SELinux を無効にすると、SELinux ポリシーが読み込まれたり適用されたりせず、AVC メッセージはログに記録されません。SELinux を実行することで得られる利点はすべて失われます。

SELinux を無効にするには次の手順を使用します。

1. `grubby` パッケージがインストールされていることを確認します。

   ```
   rpm -q grubby
   grubby-version
   ```

1. ブートローダーをカーネルコマンドラインに `selinux=0` を追加するように設定します。

   ```
   sudo grubby --update-kernel ALL --args selinux=0
   ```

1. システムを再起動します。

   ```
   sudo reboot
   ```

1. `getenforce ` コマンドを実行して SELinux が `Disabled` であることを確認します。

   ```
   $ getenforce
   Disabled
   ```

SELinux について詳しくは、[SELinux ノートブック](https://github.com/SELinuxProject/selinux-notebook/blob/main/src/toc.md)および [SELinux の設定](http://selinuxproject.org/page/Guide/Mode#SELinux_Config)を参照してください。