CetnOS9で、SELinuxに向き合うことにしたときのメモ。
SELinuxとは、Linuxカーネルが備えるセキュリティ機構である。パーミッションを用いたファイルアクセス制限機構(chmod755~とかやってるアレ)とはまた別で、セキュリティポリシーに基づきロールベースでのファイル/プロセスのアクセス制御を実現している。
このセキュリティポリシーのことを、SELinuxではセキュリティコンテキスト(あるいは単にコンテキスト)と呼び、その実態は下記1~4の総称であるようだ。
1. ユーザ識別子(ここでユーザとは特定個人ではなく、アプリケーション・サービス・ユーザグループ といった主体を言う)
2. ラベルと呼ばれる識別情報。プロセスに対するラベルは「ドメイン」、ファイルに対するラベルは「タイプ」
3. ロールと呼ばれる、権限や責務のひとまとまり
4. ほか、MLSレイヤ等(これが特にフワフワした理解のままでいる)
また、セキュリティコンテキストの実際の設定(編集)は、直接おこなうには複雑すぎるため、抽象化されたブーリアン値のオンオフにより代替される。
…で、結局やること何? って考えてみたが、たぶん大まかに2つのオペレーションが発生するんだと思う。
・対象のプロセスやファイルに、セキュリティコンテキストの設定。
ps -eZ | grep ~ とか ls-Z とかしつつ、 chcon -t ~とかで設定してやる。
例 (todo:見つけたら書く)
・ブーリアン値の設定
setsebool -P ~ とかで設定してやる。
例 (todo:見つけたら書く)
・他メモ:
- Apache httpd なんかは、SELinux環境においてもそんなにややこい設定無しにすんなり動いてくれる印象。こういった、SELinuxでも簡単系は、他にもあるのかもしらん。
- SELinux絡みで詰みそうなときはまず、disableにせずにpermissiveにしてみるところからやってみる。
- AWS EC2のAmazon Linux2だか3だか忘れたけど、デフォルトでSELinuxはdisableとのこと。
もちょっと調べて動かして、また更新したい。