SELinuxのベストプラクティス

kirill-sh-eVWWr6nmDf8-unsplash.jpg

質問

SELinuxのベストプラクティスを教えてください。
設定が難しいのですが、本当に使われているのですか?


解答

とても良い質問です!🙌


SELinux(Security-Enhanced Linux)は「強力だけど難しい」仕組みの代表格ですね。実際、使いこなせずに無効化してしまう人も多いです。ただし、金融や官公庁、クラウド基盤(RHEL/CentOS/Oracle Linux ベースのシステム)など セキュリティ要求が高い現場では実際に本番で使われています


✅ SELinuxのベストプラクティス

1. いきなり無効化しない

  • トラブル時に「とりあえず無効化!」は便利ですが、セキュリティ層を失うことになる。

  • 少なくとも permissive モード にしてログを確認してから調整する。

# 一時的にpermissiveへsetenforce 0

2. ログをちゃんと見る

  • SELinux がブロックしたときは /var/log/audit/audit.log に記録される。

  • ausearchsealert コマンドを使うと「なぜブロックされたか」を人間向けに解釈できる。

# 直近の拒否を確認ausearch -m avc -ts recent# 解釈付きで表示sealert -a /var/log/audit/audit.log

3. ポリシーを自作せず、まず Booleans を使う

  • SELinuxには「よくあるケース用のON/OFFスイッチ(Boolean変数)」が用意されている。

  • 例:Apache がネットワーク接続する場合

# 設定を確認getsebool -a | grep httpd# 許可するsetsebool -P httpd_can_network_connect on

👉 独自ポリシーを作るのは最後の手段。まずは Boolean で済むか探す。


4. audit2allow の乱用は避ける

  • audit2allow はログから自動的に「許可ルール」を作ってくれるが、安易に使うと 必要以上に広い権限を与えてしまう

  • 本当に必要なものだけ取り込むようにする。

# ポリシー候補を表示grep denied /var/log/audit/audit.log | audit2allow -m mypol

5. サービスごとの標準ラベルを守る

  • SELinux は「ラベル」で制御しているので、ファイルを別の場所に置いた場合はラベルを修正する。

# ファイルのラベルを確認ls -Z /var/www/html/index.html# ラベルを修正semanage fcontext -a -t httpd_sys_content_t "/myapp(/.*)?"restorecon -Rv /myapp

✅ 実際に使われているのか?

  • RHEL系ディストリビューション(Red Hat Enterprise Linux, CentOS, AlmaLinux, Rocky Linux)は デフォルトで SELinux 有効化

  • **クラウド基盤(AWS, Azure, GCP の Linux イメージ)**でも有効のまま配布されている。

  • 金融機関や官公庁システムなどセキュリティ要件が厳しい環境では必須扱い。

ただしスタートアップや中小企業では「運用が難しい」ため **AppArmor(Ubuntu系)**や WAF、コンテナ隔離に頼るケースも多いです。


✅ まとめ

  • SELinux は「難しい」けど「実際に使われている」

  • ベストプラクティスは

    1. 無効化せずまず permissive で確認

    2. ログを見て原因調査

    3. Booleans を活用

    4. audit2allow は慎重に

    5. ラベル管理を徹底

  • どうしても難しいなら AppArmor やコンテナと組み合わせる選択肢もあり






RHCSA Red Hat Enterprise Linux 9 Training and Exam Preparation Guide (EX200), Third Edition【電子書籍】[ Asghar Ghori ]

価格:6166円
(2025/8/29 16:54時点)
感想(0件)


 



この記事へのコメント

広告です。クリックいただけると励みになります。