我试图用一些基本的安全参数来configurationLDAP服务器,包括TLS和所需的authentication绑定。
我已经启动了服务器,并可以使用以下命令从本地主机访问它:
ldapsearch -x -b 'dc=server,dc=com' 'objectclass=*' -W -D 'cn=manager,dc=server,dc=com' -H ldaps://server.com:389
当我从计算机远程尝试相同的命令时,出现以下错误消息:
ldap_sasl_bind(SIMPLE):无法联系LDAP服务器(-1)
我不知道为什么发生这种情况,我可以ping我的服务器,目前没有防火墙。
slapd使用-h ldaps://server.com:389/
DNS服务器在同一台服务器上以基本的方式configuration,只有一个Alogging。
你有什么主意吗 ?
编辑
我已经从另一台工作站上,在arch-linux上testing过,它工作正常! 在这两台计算机上我都有TLS_REQCERT allow在/etc/openldap/ldap.conf ,所以不应该是一个证书问题没有?
ldap查询不起作用的工作站在Mac OS X上,如果有任何重要的话。
一些输出:
远程login:
telnet server.com 389 Trying wxyz.. Connected to server.com. Escape character is '^]'.
iptables的:
sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
用netstat:
sudo netstat -lnt | grep 389 tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN tcp6 0 0 :::389 :::* LISTEN
我已经testing没有任何安全参数,我有相同的结果。
我会考虑使用标准端口。 从-h ldap:/// 。 LDAP支持startTLS,可以在传递敏感信息之前轻松configuration为需要TLS。
可以使用Telnet来确定是否可以访问服务器。 尝试使用命令telnet server.com ldap 。 这应该连接,如果服务器地址是正确的。
在服务器上,您可以使用命令netstat -lnt | grep 389检查以确保LDAP绑定到外部地址 netstat -lnt | grep 389 。 这将显示您正在监听的地址。
一旦你的LDAP没有启用TLS启动startTLS和/或添加ldaps:///到你的启动。
您可以使用选项security update_ssf=16 simple_bind=16来为这些操作要求TLS。 然后,客户端可以连接到LDAP端口,并使用startTLS操作将其交换到TLS 。
编辑:在客户端和/或服务器上使用debugging可以有助于确定连接失败的位置。 将-d -1添加到命令行来debugging所有内容。 debugging开关接受各种子系统的debugging标志的位图。 -d ? 将列出他们和他们的价值观。 一旦你知道一个子系统正在工作,你可以停止debugging,并专注于其他子系统。
开始与客户端debugging是最简单的,但可能需要在服务器上进行一些debugging。 如果您通过syslog进行日志logging,那么有一个debugging日志文件可以检查debugging输出,这很有帮助。
当您使用ldaps://server.com:389forms的LDAP URL时,服务器将希望在客户端连接端口389时发生SSL协商。 StartTLS不能在现有的SSL连接上使用:StartTLS'转换'(也许宣传是一个更好的词)与安全连接的不安全连接,因此,因为ldaps://server.com:389已经是一个安全连接,所以StartTLS不能使用。 您的服务器应接受来自ldap://server.com:389上的明文客户端的连接,并拒绝任何不立即使用StartTLS进行促销的客户端连接 – 如果您的服务器产品无法立即拒绝不安全的客户端连接,则应selectcat 。 如果还需要SSL端点,则服务器应在ldap://server.com:636上监听安全的客户端连接。