我试图设置一个Apache Web服务器,只允许访问LDAP存储中的用户。 我能够使用Apache 2.2.21针对LDAP服务器正确设置我的本地Windows 7计算机上的内容。 尝试通过提示login后,Linux版本显示500错误页面。
为了在CentOS上设置Apache,我运行了下面的命令:
yum install httpd mod_ssl mod_authz_ldap
我确信
LoadModule ldap_module modules / mod_ldap.so
LoadModule authnz_ldap_module modules / mod_authnz_ldap.so
在/etc/httpd/conf/httpd.conf中都没有注释。
我的<Directory />在我的Windows和Linux httpd.conf之间是相同的(当然除了DocumentRoot)
AuthName“使用电子邮件地址login”
AuthType基本
AuthBasicProvider ldap
AuthzLDAPAuthoritativeclosures
AuthLDAPURL ldap://ldap.sample.org:1389 / ou = Users,dc = sample,dc = org?uid?sub
AuthLDAPBindDN“cn =目录pipe理器”
AuthLDAPBindPassword ldappassword
要求有效的用户选项索引FollowSymLinks
AllowOverride全部
订单允许,否认
全部允许
(注意:我们的LDAP服务器在1389端口上)
Linux机器上Apache的/ var / log / httpd / error_log显示:
[2014年12月23日星期五08:17:20] [警告] [客户端192.168.1.113] [8181] auth_ldapauthentication:用户fooauthentication失败; URI / [LDAP:ldap_simple_bind_s()失败] [无法联系LDAP服务器]
我可以从Windows和Linux机器上telnet到LDAP端口。 正如我之前提到的,Windows版本正如预期的那样工作。
在Windows版本和Linux版本的Apache httpd.conf之间,我注意到的一件事是Linux版本几乎所有的模块都默认启用,而Windows版本中的大多数注释掉了,这导致我相信可能会有模块冲突。
有没有人有任何想法?
谢谢!
事实certificate,SELinux阻止了Apache与LDAP的连接。 运行命令:
grep -m 1 httpd /var/log/audit/audit.log | audit2why
我能够发现Apache试图连接到一个SELinux无法识别的端口。 在遵循本网站和CentOS / SELinux文档的build议后,我能够find解决scheme。 我的麻烦是由于使用非标准的LDAP端口(由OpenDS推荐)造成的。 通过将这些端口添加到SELinux的“ldap_port_t”下,我能够解决这个问题。 以root用户(或“sudo”)运行以下命令,用您自己的LDAP / LDAPS端口号replace端口号。
semanage port -a -t ldap_port_t -p tcp 1389
semanage port -a -t ldap_port_t -p tcp 8636
semanage port -a -t ldap_port_t -p udp 1389
semanage port -a -t ldap_port_t -p upd 8636
我希望这能帮助将来的人像我一样把头撞在墙上。