強制アクセス制御

目次

はじめに

Linux のセキュリティモデルには、「任意アクセス制御(DAC: Discretionary Access Control)」と「強制アクセス制御(MAC: Mandatory Access Control)」があります。本章では、特に強制アクセス制御に焦点を当て、以下を学びます:

  • SELinux(Security-Enhanced Linux)の基本構造と設定方法
  • AppArmor や Smack の概要
  • DACとの違い
  • SELinuxのトラブルシュートと運用管理

1. アクセス制御の概念

DAC(Discretionary Access Control)

Linux標準のアクセス制御で、所有者(ユーザー)がファイルやプロセスのアクセス権を制御します。chmod や chown による制御が該当します。

MAC(Mandatory Access Control)

管理者が定義したポリシーに従い、アクセスが強制的に制御されます。個々のユーザーがポリシーを変更できない点がDACと異なります。


2. SELinux の仕組みと構造

SELinux は MAC を実現する最も一般的な仕組みです。Red Hat 系ディストリビューションでは標準搭載されています。

2.1 SELinux のモード

getenforce
  • Enforcing: ポリシーを強制
  • Permissive: ポリシー違反をログに記録のみ
  • Disabled: 無効化

一時的な切り替え:

setenforce 0  # Permissiveに変更
setenforce 1 # Enforcingに戻す

永続的な設定は /etc/selinux/config を編集:

SELINUX=enforcing

2.2 SELinux の基本概念

概念説明
Type Enforcement (TE)最も基本的なポリシー形式。プロセスとファイルに type を付け、許可関係を定義。
RBAC (Role-Based Access Control)ユーザーに role を割り当ててアクセス制限。
MLS (Multi-Level Security)軍事用の階層化セキュリティモデル。一般用途ではあまり使われない。

2.3 ラベルの構造

SELinuxではすべてのファイル・プロセスに セキュリティコンテキスト というラベルが付与されます。

例:

ls -Z /var/www/html
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html

この中の httpd_sys_content_t が type(タイプ)です。


2.4 ラベル操作とポリシー管理

ポリシーとBooleans

getsebool -a
setsebool -P httpd_can_network_connect on

コンテキスト修正

restorecon -Rv /var/www/html
chcon -t httpd_sys_content_t index.html

永続的な変更には semanage を使用:

semanage fcontext -a -t httpd_sys_content_t '/myweb(/.*)?'
restorecon -Rv /myweb

2.5 トラブルシュート用コマンド

コマンド役割
audit2whyログを分析して拒否理由を表示
audit2allow必要な許可ポリシーを自動生成
sealertGUIベースの通知ツール(setroubleshoot-server)

ログ解析例:

ausearch -m avc -ts recent

3. AppArmor の概要

Ubuntu や SUSE で使われている強制アクセス制御。SELinux と異なり、パスベースでアクセス制御を行います。

主な特徴:

  • SELinuxより設定が簡単
  • プロファイルが /etc/apparmor.d/ に配置される
  • aa-complain, aa-enforce でモード切替

4. Smack の概要

Smack(Simplified Mandatory Access Control Kernel)は IoT 向けに軽量設計されたMAC。

  • ファイルに Smack ラベルを付与
  • 一部の組み込みLinuxで使用
  • 運用例は少ない

5. コマンド一覧

コマンド説明
getenforce / setenforceSELinuxモードの確認・変更
sestatusSELinuxの全体状態を確認
restorecon / setfilesラベルを元に戻す / 一括設定
semanageラベル、ポリシーの設定
getsebool / setseboolSELinux boolean の確認・設定
audit2allow, audit2whyログ解析とポリシー補完
runcon, newroleコンテキスト変更してコマンド実行
/etc/selinux/configSELinux永続設定ファイル

章末問題(四択)

Q1. SELinux において、ファイルやプロセスに割り当てられるアクセス制御情報はどれか?
A. RBAC
B. ストリームラベル
C. セキュリティコンテキスト
D. ユーザー権限リスト

解説

正解:C
セキュリティコンテキストは「ユーザー:ロール:タイプ:レベル」の構成で、MAC制御に用いられます。

Q2. SELinux において、ポリシーを一時的に無効にするモードはどれか?
A. Enforcing
B. Disabled
C. Permissive
D. Passive

解説

正解:C
Permissive モードはログのみ記録し、強制制御をしないため、検証時に使います。

Q3. SELinux の Booleans を永続的に変更するコマンドはどれか?
A. semanage
B. setsebool -P
C. restorecon
D. audit2allow

解説

正解:B
-P オプションを付けることで、setsebool の設定が永続化されます。

Q4. SELinux のログ解析に使用されるツールはどれか?
A. aa-status
B. getenforce
C. audit2why
D. top

解説

正解:C
audit2why はログに基づき、SELinux がアクセスを拒否した理由を説明してくれるツールです。


まとめ

  • SELinux は MAC の主要実装であり、Red Hat 系ディストリで標準採用
  • モードや Booleans の管理、コンテキストのラベル管理が重要
  • トラブルシュートには audit2allowaudit2why を使う
  • AppArmor や Smack の知識も問われるが、主に SELinux が出題範囲
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次