とても良い質問です!🙌
SELinux(Security-Enhanced Linux)は「強力だけど難しい」仕組みの代表格ですね。実際、使いこなせずに無効化してしまう人も多いです。ただし、金融や官公庁、クラウド基盤(RHEL/CentOS/Oracle Linux ベースのシステム)など セキュリティ要求が高い現場では実際に本番で使われています。
✅ SELinuxのベストプラクティス
1. いきなり無効化しない
# 一時的にpermissiveへsetenforce 0
2. ログをちゃんと見る
# 直近の拒否を確認ausearch -m avc -ts recent# 解釈付きで表示sealert -a /var/log/audit/audit.log
3. ポリシーを自作せず、まず Booleans を使う
# 設定を確認getsebool -a | grep httpd# 許可するsetsebool -P httpd_can_network_connect on
👉 独自ポリシーを作るのは最後の手段。まずは Boolean で済むか探す。
4. audit2allow の乱用は避ける
# ポリシー候補を表示grep denied /var/log/audit/audit.log | audit2allow -m mypol
5. サービスごとの標準ラベルを守る
# ファイルのラベルを確認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、コンテナ隔離に頼るケースも多いです。
✅ まとめ
この記事へのコメント