今回は「強制アクセス制御
(mandatory access control, MAC)」
を知ろう!
なんだか
すごそうな
名前だね!
Linux の基本的なアクセス制御は
「パーミッション」なんだ
パーミッションのように
アクセス制御対象の所有者が
自分で制御を決められる方式を
「任意アクセス制御
(discretionary access control, DAC)」
とよぶよ
ファイル所有者が 「任意」の
アクセス制御だと思う!
chmod で
パーミッションを設定できるよね
確かに
パーミッションは
仕組みは簡単だけど
ちゃんとアクセス制御が
できているよね?
でも色々な使われ方を
しているうちに
パーミッションだけでは
不十分な場合も出てきたんだ
それはどんな場合かな?
たとえばみどりの
ゲームサーバプログラムが
悪意あるユーザに
乗っ取られたとしよう
たまに耳にする
「任意のコードを
実行できる脆弱性」
とかというものとかだよね!
その悪意あるユーザは
ゲームサーバプロセス実行者の権限で
そこからほとんどのコマンドを
実行できてしまうんだ
ほとんどのコマンドは
パーミッションで誰でも
実行を許しているからね
確かにそうなっちゃうね
そこでゲームサーバのプロセスや
ゲームサーバの実行者などに
以下のような制限を
設けられたらどうだろう?
- ゲームサーバに関係あるコマンドだけ実行できる
- ゲームサーバに関係あるディレクトリ配下のみアクセスできる
- ゲームサーバが扱う設定ファイルのみ読み込みできる
- ゲームサーバが扱うデータファイルのみ読み書きできる
- ゲームサーバが使うポートのみ使用できる
良さそうな仕組みだね!
仮にゲームサーバが乗っ取られても
ゲームサーバ本来の動作以外は
実質何もできなくなっちゃう!
このようにアクセス制御対象を
所有者ではなくシステムが管理して
できることできないことを
強制するアクセス制御を
「強制アクセス制御」とよぶよ
とても強力な
アクセス制御なんだね!
強制アクセス制御の実装には
以下のようなものがあるよ
| 実装 | 説明 | 採用しているディストリビューション |
|---|---|---|
| SELinux | 細く設定できるが難しい | Red Hat 系(CentOS, |
| AppArmor | 簡単に使えることを目指している | Debian 系(Debian, |
| TOMOYO Linux | 動作の学習から設定を作成する | (あまり採用例がない) |
強制アクセス制御の実装は
ディストリビューションに
含まれている場合がほとんどなんだ
なのでディストリビューションの
デフォルトを使うのが無難だよ
強制アクセス制御は
どうやって設定すれば
いいのかな?
強制アクセス制御の設定は複雑で難しく
強制アクセス制御の実装によっても変わるんだ
なのでここでは紹介だけに留めておくね
今回は強制アクセス制御を学んだよ!
パーミッションではできなかった
細かなアクセス制御を指定できるんだ!
強制アクセス制御は簡易な解説では
「最初にオフにしましょう」と
書かれてしまうぐらい
難しい話題なんだ
でもちゃんと設定すれば
強固なセキュリティを
確保できる仕組みだよ!