Selinuxを有効にしてCentOS6.4でOpenLDAPサーバーを実行しようとしていますが、/etc/init.d/slapd start
を介して起動するとすぐにslapd
が停止します。 (initスクリプトはOKを報告します。setenforce 0
以降はすべて正常に機能します。
これらのメッセージが/var/log/audit/audit.log
で見つかりました:
type = AVC msg = audit(1372888328.397:3262):avc:denied {write} for pid = 1492 comm = "slapd" name = "slapd.log" dev = dm-0 ino = 4348 scontext = unconfined_u :system_r:slapd_t:s0 tcontext = unconfined_u:object_r:var_log_t:s0 tclass = file type = SYSCALL msg = audit(1372888328.397:3262):Arch = 40000003 syscall = 5 success = no exit = -13 a0 = 1bd1018 a1 = 241 a2 = 1b6 a3 = 7ea191 items = 0 ppid = 1491 pid = 1492 auid = 0 uid = 0 gid = 0 euid = 0 suid = 0 fsuid = 0 egid = 0 sgid = 0 fsgid = 0 tty = pts1 ses = 337 comm = "slapd" exe = "/ usr/sbin/slapd" subj = unconfined_u:system_r:slapd_t:s0 key =(null) type = AVC msg = audit(1372888328.408:3263):avc:拒否された{sys_Nice} for pid = 1492 comm = "slapd" capability = 23 scontext = unconfined_u:system_r:slapd_t:s0 tcontext = unconfined_u:system_r:slapd_t:s0 tclass = capability type = SYSCALL msg = audit(1372888328。 :3263):Arch = 40000003 syscall = 156 success = yes exit = 0 a0 = 5d4 a1 = 0 a2 = bfe64968 a3 = b787a6c0 items = 0 ppid = 1491 pid = 1492 auid = 0 uid = 0 gid = 0 euid = 0 suid = 0 fsuid = 0 egid = 0 sgid = 0 fsgid = 0 tty = pts1 ses = 337 comm = "slapd" exe = "/ usr/sbin/slapd" subj = unconfined_u:system_r:slapd_t:s0 key =(null) type = AVC msg = audit(1372888328.424:3264) :avc:denied {read} for pid = 1493 comm = "slapd" name = "log.0000000001" dev = dm-0 ino = 263969 scontext = unconfined_u:system_r:slapd_t:s0 tcontext = unconfined_u:object_r:var_log_t:s0 tclass = file type = SYSCALL msg = audit(1372888328.424:3264):Arch = 40000003 syscall = 5 success = no exit = -13 a0 = 1c78270 a1 = 8000 a2 = 0 a3 = 0 items = 0 ppid = 1 pid = 1493 auid = 0 uid = 0 gid = 0 euid = 0 suid = 0 fsuid = 0 egid = 0 sgid = 0 fsgid = 0 tty =(none)ses = 337 comm = "slapd" exe = "/ usr/sbin/slapd "subj = unconfined_u:system_r:slapd_t:s0 key =(null)
しかし、これは私にそれを修正する方法がわからないままにします。 LDAPデーモンの実行を許可するようにselinuxに指示するにはどうすればよいですか?
私は試した
restorecon -v -F -R /etc/openldap
restorecon -v -F -R /var/lib/ldap
しかし、これは機能しませんでした(実際、slapdを開始する能力が壊れているようですselinuxが無効になっている場合でも)。次のようなメッセージをたくさん受け取りました
restorecon reset/etc/openldap/cacerts context unconfined_u:object_r:etc_t:s0-> system_u:object_r:etc_t:s0
監査ログをaudit2allow(1)
とaudit2why
でフィルタリングすると、何が起こっているかのおおよその情報が得られます。
#============= slapd_t ==============
allow slapd_t self:capability sys_Nice;
allow slapd_t var_log_t:file { write read };
------------------------------------
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
type=AVC msg=audit(1372888328.408:3263): avc: denied { sys_Nice } for pid=1492 comm=slapd capability=23 scontext=unconfined_u:system_r:slapd_t:s0 tcontext=unconfined_u:system_r:slapd_t:s0 tclass=capability
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
type=AVC msg=audit(1372888328.424:3264): avc: denied { read } for pid=1493 comm=slapd name=log.0000000001 dev=dm-0 ino=263969 scontext=unconfined_u:system_r:slapd_t:s0 tcontext=unconfined_u:object_r:var_log_t:s0 tclass=file
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
ラベルの復元によってサービスの開始が妨げられる可能性はほとんどありませんSELinuxが許可モードの場合。また、なぜ-F
スイッチなのですか?
ディレクトリまたはファイルのラベル付けを復元する必要があるかどうかを知るには、まず、ファイルまたはディレクトリが持つべきコンテキストを調べます。
# matchpathcon /etc/openldap/
/etc/openldap system_u:object_r:etc_t:s0
次に、そのセキュリティコンテキストを一覧表示します。
# ls -ldZ /etc/openldap/
drwxr-xr-x. root root system_u:object_r:etc_t:s0 /etc/openldap//
この例では、これ以上のアクションは必要ありません。
あなたの問題に関して、問題はラベル付け自体ではなく、欠落しているtype enforcement
ルール、つまりラベル付けを許可するルールですたとえば、ある限定されたドメインから別のドメインへのtransitionへの処理、または特定のラベルが付いたファイルの読み取り。
slapd_t
がaudit.log
に表示された操作を実行できるようにするモジュールの構築を試みることができます。コードをさらに調整する必要がある可能性があります。このタスクには、audit2allow
とmake
を使用します。すべてのコマンドは、それぞれのマンページに非常によく文書化されています。プロセスはおおよそ次のようになります(関連するメッセージをaudit.txt
にコピーした後):
audit2allow -i audit.txt -m slapd -o slapd.te
make -f /usr/share/selinux/devel/Makefile load
また、この問題に関するSELinuxポリシーのバグレポートがすでに存在するかどうかを確認してください。