Lから始まるLinux

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