Security-Enhanced Linux

Security-Enhanced Linux について

Security-Enhanced Linux(SELinux)

Security-Enhanced Linux(SELinux)は、Linux カーネル セキュリティ モジュールとシステムユーティリティで構成されるソリューションで、強力で柔軟な Mandatory Access Control(MAC)アーキテクチャを Cisco IOS XE プラットフォームに組み込みます。

SELinux の目的

SELinux には機密性と整合性の要件に基づいて情報を分離するための拡張メカニズムが備わっています。これにより、アプリケーションのセキュリティメカニズムの改ざんやバイパスの脅威に対処し、悪意のあるアプリケーションや欠陥のあるアプリケーションによって引き起こされる可能性のある障害を封じ込めることができます。

SELinux のメカニズム

SELinux はユーザープログラムやシステムサービスを、割り当てられた機能を実行するために必要になる最小限の権限に制限する強制アクセス制御ポリシーを適用します。これにより、(バッファのオーバーフローや設定ミスなどによって)侵害された場合、害を生じさせるこれらのプログラムやデーモンの能力が削減または排除されます。これは、Cisco IOS XE プラットフォームで MAC を適用することによる最小権限の原則の実用的な実装です。この制限メカニズムは、従来の Linux アクセス制御メカニズムとは独立して機能します。SELinux では、アプリケーションプロセスからリソースオブジェクトへのアクセスを制御するポリシーを定義できます。これにより、プロセス動作の定義と制限を明確にできます。

Cisco IOS XE の SELinux モード

SELinux は、システムで有効になっている場合、Permissive モードまたは Enforcing モードのいずれかで動作します。

  • Permissive モード:Permissive モードでは、SELinux はポリシーを適用せず、リソースアクセスポリシーの違反によって発生した拒否のシステムログのみを生成します。操作は拒否されず、リソースアクセスポリシー違反についてのみログに記録されます。

  • Enforcing モード:Enforcing モードでは、SELinux ポリシーが有効になり、適用されます。Enforcing モードは、アクセスポリシールールに基づいてリソースアクセスを拒否し、システムログを生成します。

    サポートされている Cisco IOS XE プラットフォームでは、SELinux はデフォルトで Enforcing モードで有効になっています。Enforcing モードでは、必要な許可ポリシーを持たないシステムリソースアクセスは違反として扱われ、操作は拒否されます。拒否が発生すると、違反操作は失敗し、システムログが生成されます。Enforcing モードでは、ソリューションはアクセス違反防止モードで機能します。


(注)  


デフォルトでは、SELinux は Enforcing モードになっています。

EXEC モードでの SELinux の設定

手順

  コマンドまたはアクション 目的

ステップ 1

enable

例:

Device> enable

特権 EXEC モードを有効にします。プロンプトが表示されたら、パスワードを入力します。

ステップ 2

configure terminal

例:

Device# configure terminal

グローバル コンフィギュレーション モードを開始します。

ステップ 3

service internal

例:

Device(config)# service internal

ネットワークベースのサービスの内部コマンドを有効にします。

ステップ 4

exit

例:

Device(config)# exit

グローバル コンフィギュレーション モードを終了します。

ステップ 5

set platform software selinux {default | enforcing | permissive}

例:

Device# set platform software selinux enforcing

EXEC モードで SELinux を設定します。

グローバル コンフィギュレーション モードでの SELinux の設定

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

Device# configure terminal

グローバル コンフィギュレーション モードを開始します。

ステップ 2

service internal

例:

Device(config)# service internal

ネットワークベースのサービスの内部コマンドを有効にします。

ステップ 3

platform security selinux {enforcing | permissive}

例:

Device(config)# platform security selinux enforcing

SELinux ポリシーを設定します。

SELinux の例

次に、モードを Enforcing から Permissive に変更した場合の出力例を示します。
“*Oct 20 21:44:03.609: %IOSXE-1-PLATFORM: R0/0: SELINUX_MODE_PROG: Platform Selinux confinement mode downgraded to permissive!” 

次に、モードを Permissive から Enforcing に変更した場合の出力例を示します。

“*Oct 20 21:44:34.160: %IOSXE-1-PLATFORM: R0/0: SELINUX_MODE_PROG: Platform Selinux confinement mode upgraded to enforcing!”

(注)  


SELinux モードを変更すると、変更がシステム セキュリティ イベントと見なされ、システムログメッセージが生成されます。


SELinux Syslog メッセージリファレンス

機能重大度ニーモニック

%SELINUX-1-VIOLATION

重大度の意味

アラートレベルログ

メッセージ

該当なし

メッセージの説明

リソースのアクセスポリシーが存在しないプロセスによって、リソースアクセスが実行されました。操作にフラグが設定され、リソースアクセスが拒否されました。プロセスリソースアクセスが拒否されたという情報を含むシステムログが生成されました。

コンポーネント

SELINUX

推奨処置

次の関連情報を添付ファイルとして Cisco TAC にご連絡ください。

  • コンソールまたはシステムに出力されるとおりのメッセージ。

  • show tech-support コマンドの出力(テキストファイル)。

  • ボックスからの Btrace ファイルのアーカイブ(次のコマンドを使用):

    request platform software trace archive target URL

  • show platform software selinux コマンドの出力。

  • show platform software audit all | section exclude コマンドの出力。

  • show platform software audit summary コマンドの出力。

次に、syslog メッセージの例を示します。

例 1:

*Nov 14 00:09:04.943: %SELINUX-1-VIOLATION: R0/0: audispd: type=AVC 
msg=audit(1699927057.934:129): avc: denied { getattr } for pid=5899 comm="ls" 
path="/root/test" dev="rootfs" ino=25839 
scontext=system_u:system_r:polaris_iosd_t:s0 
tcontext=system_u:object_r:admin_home_t:s0 tclass=file permissive=0

例 2:

*Nov 14 00:09:04.947: %SELINUX-1-VIOLATION: R0/0: audispd: t type=AVC 
msg=audit(1699927198.486:130): avc: denied { write } for pid=6012 comm="echo" 
path="/root/test" dev="rootfs" ino=25839 
scontext=system_u:system_r:polaris_iosd_t:s0 
tcontext=system_u:object_r:admin_home_t:s0 tclass=file permissive= 0

拒否カウントの確認

拒否の数を確認するには、次のコマンドを使用します。

Device# show platform software audit summary
===================================
AUDIT LOG ON chassis 1 route-processor 0
-----------------------------------
AVC Denial count: 6

SELinux の有効化の確認

SELinux の有効化を確認するには、次のコマンドを使用します。
Device# show platform software selinux
=========================================
IOS-XE SELINUX STATUS 
=========================================
SElinux Status : Enabled 
Current Mode : Enforcing 
Config file Mode : Enforcing 

コマンド

set platform software selinux

EXEC モードで Security-Enhanced Linux(SELinux)を設定するには、set platform software selinux コマンドを使用します。


(注)  


service internal コマンドは、set platform software selinux コマンド を実行する前に設定する必要があります。


set platform software selinux { default | enforcing | permissive }

構文の説明

default

SELinux モードをデフォルトに設定します。

enforcing

SELinux モードを Enforcing に設定します。SELinux モードが有効になっており、強制されます。Enforcing モードは、アクセスポリシールールに基づいてリソースアクセスを拒否し、システムログを生成します。

permissive

SELinux モードを Permissive に設定します。SELinux はポリシーを適用せず、リソースアクセスポリシーの違反によって発生した拒否のシステムログのみを生成します。

コマンド デフォルト

なし

コマンド モード

特権 EXEC モード

コマンド履歴

リリース 変更内容

Cisco IOS XE 17.15.1

このコマンドが導入されました。

以下に、EXEC モードで SELinux を設定する例を示します。

Device# set platform software selinux permissive

プラットフォームのセキュリティの selinux

プラットフォームのセキュリティ設定で SELinux ポリシーを設定するには、platform security selinux コマンド を使用します。


(注)  


service internal コマンドは、platform security selinux コマンド を実行する前に設定する必要があります。


platform security selinux { enforcing | permissive }

構文の説明

enforcing

SELinux ポリシーを Enforcing モードに設定します。Enforcing モードは、アクセスポリシールールに基づいてリソースアクセスを拒否し、システムログを生成します。

permissive

SELinux ポリシーを Permissive モードに設定します。SELinux はポリシーを適用せず、リソースアクセスポリシーの違反によって発生した拒否のシステムログのみを生成します。

コマンド デフォルト

なし

コマンド モード

グローバル コンフィギュレーション モード

コマンド履歴

リリース 変更内容

Cisco IOS XE 17.15.1

このコマンドが導入されました。

次の例は、プラットフォームのセキュリティ設定で SELinux ポリシーを設定する方法を示しています。

Device# configure terminal
Device(config)# platform security selinux