この記事では、Linux環境におけるSELinux(Security-Enhanced Linux)のポリシーを確認・変更する方法について詳しく解説します。SELinuxは、システムやアプリケーションが持つリソースに対するアクセス制御を強化するための一連のセキュリティ機能です。具体的なコード例、その詳細な解説、さらには応用例も含めて、いかにSELinuxポリシーを効率よく管理するかについて解説します。
SELinuxとは
SELinux(Security-Enhanced Linux)は、オープンソースのオペレーティングシステムLinuxに追加されるセキュリティモジュールです。アクセス制御、監査、及びログの記録に関する詳細な設定が可能です。
SELinuxの主な機能
– ファイルやディレクトリのアクセス制御
– プロセスのアクセス制御
– ネットワーク通信のアクセス制御
SELinuxポリシーの確認方法
SELinuxの状態やポリシー設定を確認する方法はいくつかありますが、ここでは基本的なコマンドを使用して説明します。
コマンドでの確認
getenforce # SELinuxの現在のモード(Enforcing, Permissive, Disabled)を表示
getenforceコマンドの解説
`getenforce` コマンドは、SELinuxが現在どのモードで動作しているかを確認するためのコマンドです。返り値として `Enforcing`、`Permissive`、`Disabled` のいずれかが表示されます。
SELinuxポリシーの変更方法
一時的な変更
sudo setenforce 0 # SELinuxをPermissiveモードに変更
setenforceコマンドの解説
`setenforce` コマンドは、SELinuxの動作モードを一時的に変更するためのコマンドです。引数に `0` を指定すると `Permissive` モード、`1` を指定すると `Enforcing` モードになります。
恒久的な変更
sudo nano /etc/selinux/config # SELinuxの設定ファイルを開く
設定ファイルの編集
`/etc/selinux/config` ファイルを開き、`SELINUX=` の値を変更することで、システム再起動後も変更が維持されます。
応用例
応用例1: Apacheの設定
sudo chcon -t httpd_sys_content_t /var/www/html -R # Apache用のSELinuxポリシーを適用
応用例2: SSHのポート変更
sudo semanage port -a -t ssh_port_t -p tcp 2222 # SSHのポートを2222に変更
応用例3: ユーザーごとの制限
sudo semanage login -a -s user_u new_user # 新規ユーザーnew_userにSELinuxポリシーを適用
応用例4: データベースサーバの設定
sudo chcon -t mysqld_db_t /var/lib/mysql -R # MySQL用のSELinuxポリシーを適用
応用例5: ファイルのコピーとラベル維持
cp --preserve=context source_file target_file # ファイルをコピーしつつSELinuxラベルを維持
まとめ
SELinuxはLinuxのセキュリティを強化する強力なツールですが、設定が複雑であるためしっかりと理解する必要があります。この記事で解説した基本的なコマンドや応用例を参考に、SELinuxのポリシー管理に慣れていきましょう。
コメント