chcon
SELinuxを使用して、許可モードでCentOS 7サーバーをSELinuxより安全にすることが可能かどうか疑問に思います。私はデフォルトでrbenv
sudoer(ユーザーのホームディレクトリにRubyライブラリ、バイナリ、libsなどをデフォルトでインストールするRubyバージョンマネージャ)ではなく、ユーザーと一緒にインストールされたRubyバージョンを使用するためにNginxを使用してPhusion Passengerを設定しようとしています。私はSELinuxブールなどのさまざまな問題を根本的に解決するために同様のツールを使用しましたが、setroubleshoot-server
特定のユーザーのホームディレクトリにインストールされているRubyバージョンの問題を診断するのには役に立ちませんでした。次の条件では、Phusion PassengerとNginxですべてがうまく機能します。
- システム全体のRuby(v2.0)インストールの使用(適用モードのSELinux)
- インストールされたRuby(v2.2.3)の使用
rbenv
(許可モードのSELinux) rbenv
次のコマンドを実行した後、インストールされたRuby(v2.2.3)(SELinuxは適用モードにあります)を使用してください。chcon -R --reference /bin /home/myuser/.rbenv/
観察された動作を確認するために、構成変更の間にサーバーを再起動しました。
Rubyのバージョンを含むフォルダのセキュリティコンテキストをchcon
変更してそのフォルダと同じセキュリティコンテキストを持たせることで、基本的にSELinuxをバイパスするように感じます。このように使用すると、意図しないセキュリティ結果が発生しますか?rbenv
/bin
chcon
これは質問の範囲外ですが、NginxとPhusion Passengerで使用するためにユーザーのホームディレクトリにインストールされているRubyインタプリタのセキュリティコンテキストを設定する正しい方法はありますか?
答え1
SELinuxは基本的に明示的に許可されていないすべてを拒否します。 SELinuxが許可モードで実行されている場合、SELinuxは許可拒否を記録しますが、これを強制しません(つまり、SELinuxはジョブの完了を妨げません)。施行モードでは、SELinuxは権限の拒否を記録して強制します(つまり、SELinuxはジョブの完了を防ぎます)。
基本的にSELinuxをバイパスする方法を使用しても、chcon
許可モードでSELinuxを使用するよりもシステムが安全になるわけではありません。強制モードのSELinuxは、ユーザーがまだ触れていないシステムの他のすべての部分に対する操作を拒否しているためですchcon
。