SELinux上下文为apache ldap ssl

什么SELinux上下文我需要什么文件来获得apache ldap(通过SSL)auth工作? 或者它是一个networking协议或系统调用或其他什么东西?

环境

Centos 7上的Apache 2.4使用基于ssl的基本ldap身份validation。

有了SELinux许可( setenforce 0 ),一切运行良好。 我可以用ldap完美地login到受保护的目录。

当启用SELinux( setenforce 1 )时,apache不能执行ldapsearch并允许用户通过。 这与ssl或证书有关,我无法弄清楚。

在/ var /日志/的httpd / ssl_error_log

 [Thu Mar 17 15:33:32.529755 2016] [authnz_ldap:debug] [pid 6412] mod_authnz_ldap.c(501): [client 158.158.193.232:17386] AH01691: auth_ldap authenticate: using URL ldaps://ldap-ad.example.org:636/ou=Auto-Accounts,dc=example,dc=org?sAMAccountname?sub [Thu Mar 17 15:33:32.530792 2016] [ldap:debug] [pid 6412] util_ldap.c(372): AH01278: LDAP: Setting referrals to On. [Thu Mar 17 15:33:32.531845 2016] [ldap:debug] [pid 6412] util_ldap.c(372): AH01278: LDAP: Setting referrals to On. [Thu Mar 17 15:33:32.532936 2016] [ldap:debug] [pid 6412] util_ldap.c(372): AH01278: LDAP: Setting referrals to On. [Thu Mar 17 15:33:32.533568 2016] [authnz_ldap:info] [pid 6412] [client 158.158.193.232:17386] AH01695: auth_ldap authenticate: user bgstack15 authentication failed; URI /auth1/ [LDAP: ldap_simple_bind() failed][Can't contact LDAP server] [Thu Mar 17 15:33:32.533784 2016] [ssl:debug] [pid 6412] ssl_engine_io.c(992): [client 158.158.193.232:17386] AH02001: Connection closed to child 1 with standard shutdown (server sample.example.org:443) 

/var/log/audit/audit.log

 type=AVC msg=audit(1458243341.951:1234): avc: denied { name_connect } for pid=6428 comm="httpd" dest=636 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:ldap_port_t:s0 tclass=tcp_socket type=SYSCALL msg=audit(1458243341.951:1234): arch=c000003e syscall=42 success=no exit=-13 a0=12 a1=7f2c0498eab0 a2=10 a3=0 items=0 ppid=6409 pid=6428 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null) type=AVC msg=audit(1458243341.952:1235): avc: denied { name_connect } for pid=6428 comm="httpd" dest=636 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:ldap_port_t:s0 tclass=tcp_socket type=SYSCALL msg=audit(1458243341.952:1235): arch=c000003e syscall=42 success=no exit=-13 a0=12 a1=7f2c0498eab0 a2=10 a3=0 items=0 ppid=6409 pid=6428 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null) type=AVC msg=audit(1458243341.952:1236): avc: denied { name_connect } for pid=6428 comm="httpd" dest=636 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:ldap_port_t:s0 tclass=tcp_socket type=SYSCALL msg=audit(1458243341.952:1236): arch=c000003e syscall=42 success=no exit=-13 a0=12 a1=7f2c0498d580 a2=10 a3=0 items=0 ppid=6409 pid=6428 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null) type=AVC msg=audit(1458243341.953:1237): avc: denied { name_connect } for pid=6428 comm="httpd" dest=636 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:ldap_port_t:s0 tclass=tcp_socket type=SYSCALL msg=audit(1458243341.953:1237): arch=c000003e syscall=42 success=no exit=-13 a0=12 a1=7f2c0498d580 a2=10 a3=0 items=0 ppid=6409 pid=6428 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null) 

我已经试过了

我已经开始阅读SELinux,并试图从其他证书复制上下文。 我试过在/ etc / openldap / certs和/ etc / pki / tls / certs中的证书上。 也许我需要尝试一些TCP端口636?

更新

SElinux:允许httpd连接到一个特定的端口提供了一个工作的解决scheme,但它并没有为最大的安全性而优化。 命令

 setsebool httpd_can_network_connect on 

允许httpd执行ldaps绑定。 然而,这太开了httpd,所以我仍然在寻找一种方法来允许端口636。

总是有一个布尔型的httpd_can_connect_ldap

这允许:

 # sesearch -b httpd_can_connect_ldap -AC Found 1 semantic av rules: DT allow httpd_t ldap_port_t : tcp_socket name_connect ; [ httpd_can_connect_ldap ] 

ldap_port_t提供对相关端口的访问:

 # semanage port -l ldap_port_t tcp 389, 636, 3268, 7389 ldap_port_t udp 389, 636