SELinux と AppArmor の理解
SELinux (Security-Enhanced Linux) と AppArmorは両方ともLinuxのセキュリティモデルを強化するツールですが、それぞれ異なるアプローチを取ります。このチュートリアルでは、SELinuxとAppArmorについて詳しく解説し、その使用方法と利点を比較します。
SELinux とは
SELinuxは、Mls(Multi-Level Security)と呼ばれる複数レベルセキュリティモデルに基づいています。これは、ファイルやプロセスがそれぞれ特定の「セキュリティコンテキスト」を持っていることを強調します。これらのコンテキストは、プロセスがどの資源にアクセスできるかを定義しています。
SELinuxの主要な概念
- Security Context: ファイルやプロセスが持つセキュリティ設定。
- Policy: セキュリティコンテキストとその相互作用を制御するルール集。
- Type Enforcement (TE): SELinuxのデフォルトポリシー形式。
SELinuxの使用方法
SELinuxを有効にするには、以下の手順が必要です:
- SELinuxモジュールのインストール: 様々なパッケージマネージャーを使用してSELinuxモジュールをインストールします。たとえば、Debian/Ubuntuでは
selinux-policy-defaultをインストールします。 - SELinuxの有効化:
setenforce 1でSELinuxを有効にし、setenforce 0で無効にできます。
SELinuxのスクリプト例
以下はSELinuxポリシーを適用するための簡単なShellスクリプトです:
#!/bin/bash
# SELinuxがインストールされているか確認
if ! rpm -q selinux-policy-targeted &> /dev/null; then
echo "SELinux ポリシーはインストールされていません。"
exit 1
fi
# ファイルのセキュリティコンテキストを設定
chcon -t httpd_sys_content_t /var/www/html/index.html
# SELinuxポリシーを変更
semodule -i mypolicy.pp
AppArmor とは
AppArmorは、Linuxのカーネルのメモリアーセキュリティ機能(LSM: Linux Security Modules)を使用してアプリケーションのセキュリティを制御します。これは、ファイルやプロセスが特定の操作を行うことを許可または拒否することができます。
AppArmorの主要な概念
- Profile: アプリケーションのセキュリティポリシー。
- Mount Points: 特定のディレクトリを監視し、それにアクセスするアプリケーションを制御します。
AppArmorの使用方法
AppArmorを有効にするには、以下の手順が必要です:
- AppArmorモジュールのインストール: パッケージマネージャーを使用してAppArmorモジュールをインストールします。たとえば、Debian/Ubuntuでは
apparmorをインストールします。 - AppArmorの有効化:
aa-enforce /etc/apparmor.d/usr.sbin.apache2でApache2のAppArmorプロファイルを適用します。
AppArmorのスクリプト例
以下はAppArmorのプロファイルを変更するための簡単なShellスクリプトです:
#!/bin/bash
# AppArmorがインストールされているか確認
if ! dpkg -l | grep apparmor &> /dev/null; then
echo "AppArmor はインストールされていません。"
exit 1
fi
# プロファイルの変更
sed -i 's/\/var\/www\/html\/index.html/\/var\/www\/html\//g' /etc/apparmor.d/usr.sbin.apache2
# 変更を適用
aa-enforce /etc/apparmor.d/usr.sbin.apache2
SELinuxとAppArmorの比較
- 方法: SELinuxはMlsモデルに基づいており、ファイルやプロセスが持つセキュリティコンテキストによりアクセス権限を制御します。AppArmorはLinuxのLSM機能を使用してアプリケーションのセキュリティポリシーを定義します。
- 複雑さ: SELinuxはより複雑で、多くの概念と設定が必要です。AppArmorは比較的シンプルで、プロファイルの作成や変更が容易です。
- パフォーマンス: AppArmorの方がSELinuxよりもパフォーマンスが良く、一般的に使用されます。
結論
SELinuxとAppArmorはどちらもLinuxシステムのセキュリティを強化するための有用なツールですが、それぞれ異なるアプローチを取ります。選択する際には、システムの要件、管理の複雑さ、パフォーマンスなどを考慮してください。
SELinuxとAppArmorについて理解し、適切に使用することで、Linuxシステムのセキュリティを大幅に向上させることができます。