私はcentos6.2を実行しています
最近、Apacheがselinuxを有効にして実行されていることに気づきました
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=Permissive
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
これらのエラーがdmesgで発生していることに気づきました
type=1400 audit(1354453732.704:9056368): avc: denied { name_connect } for pid=39006 comm="httpd" dest=11211 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:memcache_port_t:s0 tclass=tcp_socket
type=1400 audit(1354453735.777:9056369): avc: denied { name_connect } for pid=39046 comm="httpd" dest=6379 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket
その後、有効にしました
/usr/sbin/setsebool httpd_can_network_connect=1
これによりエラーが停止し、Webページも機能し始めました。
私の質問は、selinuxが許容モードにある場合、selinuxtype = targetedはポリシーを適用しますか?
そうでない場合、selinuxはすでに許容モードになっているので、Apacheの問題をどのように解決しましたか?
許容モードでは、SElinuxは、強制モードでアクセスを拒否する結果となったアイテムをログに記録しますが、実際にはそれらのアクションを拒否しません。したがって、許容モードでポリシーを適用することはありませんが、それらのポリシーを参照します。強制モードになっていると、setseboolコマンドを発行するまでhttpdを起動/使用できませんでした。これは、httpdとネットワーク接続の間のリンクがSELinuxによって阻止されていたためです。
Johnがすでに回答しているように、SELinuxはサービスをブロックするのではなく、エラーをログに記録するだけです。
SElinuxは、本番環境にデプロイする前にテストし、何がうまくいかなかったのかを理解したいシナリオで使用します。
本番環境でも同じことをテストできますが、すべてが整っていることを確認するまでポリシーを修正し続け、後でモードをターゲットに変更します。