我已经为我的公司建立了门户,由于某些要求,我们需要查询 ldap 服务器以获取一些详细信息。但是,我不允许使用/存储查询 ldap 的任何凭据。此外,ldap 服务器不允许匿名绑定。有没有办法执行绑定操作和查询 ldap 服务器。我的 Web 服务器在 Linux 系统上运行,并且已加入域。在后端,我使用的是 python。
我在 ARM 上的 Windows 11 上安装了新的 ApacheDS(版本:2.0.0.v20210717-M17)。我有 Java SDK 17 (LTS)。我创建了一个具有所有默认值的第一台服务器,它似乎第一次正确启动。
然后我尝试导入一些 LDIF,但它没有说服务器已关闭。是的,从那一刻起,我再也无法启动服务器了。我什至尝试删除服务器,创建一个新的,等等......仍然,它不会启动。
如果我检查日志,这就是我所看到的:
[12:27:25] INFO [org.apache.directory.server.UberjarMain] - Starting the service.
[12:27:30] WARN [org.apache.directory.api.ldap.model.entry.DefaultAttribute] - ERR_13207_VALUE_ALREADY_EXISTS The value '1.3.6.1.4.1.42.2.27.8.5.1' already exists in the attribute (supportedControl)
[12:27:30] WARN [org.apache.directory.api.ldap.model.entry.DefaultAttribute] - ERR_13207_VALUE_ALREADY_EXISTS The value '1.2.840.113556.1.4.841' already exists in the attribute (supportedControl)
[12:27:30] WARN [org.apache.directory.api.ldap.model.entry.DefaultAttribute] - ERR_13207_VALUE_ALREADY_EXISTS The value '1.3.6.1.4.1.4203.1.9.1.2' already exists in the attribute (supportedControl)
[12:27:30] WARN [org.apache.directory.api.ldap.model.entry.DefaultAttribute] - ERR_13207_VALUE_ALREADY_EXISTS The value '1.2.840.113556.1.4.319' already exists in the attribute (supportedControl)
[12:27:30] WARN [org.apache.directory.api.ldap.model.entry.DefaultAttribute] - ERR_13207_VALUE_ALREADY_EXISTS The value '1.2.840.113556.1.4.528' already exists in the attribute (supportedControl)
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.api.ldap.model.entry.Value] - MSG_13202_AT_IS_NULL ()
[12:27:31] WARN [org.apache.directory.server.core.DefaultDirectoryService] - You didn't change the admin password of directory service instance 'default'. Please update the admin password as soon as possible to prevent a possible security breach.
知道可能出了什么问题吗?
提前致谢,
我有一个带有以下 CRL 的证书:
URL=ldap:///CN=GOLF Root-CA,CN=VSCERT02,CN=CDP,CN=Public Key Services,CN=Services,CN=Configuration,DC=toplevel-domain,DC=de?certificateRevocationList?base?objectClass=cRLDistributionPoint (ldap:///CN=GOLF%20Root-CA,CN=VSCERT02,CN=CDP,CN=Public%20Key%20Services,CN=Services,CN=Configuration,DC=toplevel-domain,DC=de?certificateRevocationList?base?objectClass=cRLDistributionPoint
因为在从 VPN 迁移到 ZTNA 网络解决方案后,我们遇到了该 CRL 的问题。不幸的是,我找不到要求访问它的 DNS/网络级别的 FQDN。
如何从该 CRL 获取 FQDN?
最好的问候莱纳斯
这可能有点类似于使用 LDAP 代理来调试 LDAP 请求,但那里的答案并没有真正的帮助。
我需要将在 Docker 群中运行的多个服务连接到外部 LDAP 服务器,该服务器对访问有很多限制。“注册” LDAP 客户端的过程需要密码验证并生成绑定到客户端 IP 的令牌(并通过对每个 LDAP 请求的反向查找进行检查)。
这使得为 Docker swarm 或 Kubernetes 网络中的数十个服务自动设置它非常困难。
一个明显的解决方案是手动设置单个服务器并将其用作“代理 LDAP”,方法是将所有 LDAP 请求从服务转发到外部 LDAP 提供程序。
有推荐的方法吗?我找到了一些 LDAP 代理解决方案(基于 OpenLDAP),但这些解决方案旨在代理 Active Directory 服务器。我所需要的只是到另一个 LDAP 服务器的桥接。
我在 Debian 上使用 OpenLDAP (slapd) v2.4.47。/var/log/debug
它在日志文件( )中以以下方式抱怨
slapd[1142]: conn=1508 op=4 SRCH base="cn=persons,cn=internal" scope=2 deref=0 filter="(&(objectClass=mozillaAbPersonAlpha)(|(cn=john*)(mail=john*)(sn=john*)))"
slapd[1142]: <= mdb_substring_candidates: (cn) not indexed
slapd[1142]: <= mdb_substring_candidates: (mail) not indexed
slapd[1142]: <= mdb_substring_candidates: (sn) not indexed
对应的数据库(/etc/ldap/slapd.d/cn=config/olcDatabase={1}mdb.ldif
)配置为:
dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq
olcDbIndex: cn,sn,mail,uid,sambaSID eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbIndex: sambaDomainName eq
...
当我尝试在“有问题的”属性(例如cn
)上添加索引时,它也会失败:
# ldapmodify -H ldapi:// -Y EXTERNAL <<EOM
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: cn eq
EOM
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)
additional info: duplicate index definition for attr "cn"
通过这种方式,我尝试了所有cn
, mail
,sn
相同的错误,因此索引似乎在这些属性上处于活动状态。
那么为什么 OpenLDAP 会抱怨缺少索引呢?
PS 我只运行了一个 OpenLDAP,所以我不能搞砸。
我正在尝试启用在 openldap (slapd) 服务器中的登录。所以我尝试执行:
$ ldapmodify -D cn=admin,dc=domain,dc=tld -W -H ldap:/// <<EOF
> dn: cn=config
> changetype:modify
> replace: olcLogLevel
> olcLogLevel: any
> EOF
modifying entry "cn=config"
ldap_modify: Insufficient access (50)
这是我的 slapcat -n0 输出:
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcLogLevel: none
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
structuralObjectClass: olcGlobal
entryUUID: f2abd5ee-adb8-103b-8c18-6da3f145a1c2
creatorsName: cn=config
createTimestamp: 20210919171535Z
entryCSN: 20210919171535.786316Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210919171535Z
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_mdb
structuralObjectClass: olcModuleList
entryUUID: f2aca6cc-adb8-103b-8c20-6da3f145a1c2
creatorsName: cn=config
createTimestamp: 20210919171535Z
entryCSN: 20210919171535.791752Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210919171535Z
dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema
structuralObjectClass: olcSchemaConfig
entryUUID: f2abf484-adb8-103b-8c1b-6da3f145a1c2
creatorsName: cn=config
createTimestamp: 20210919171535Z
entryCSN: 20210919171535.787189Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210919171535Z
dn: olcDatabase={-1}frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: {-1}frontend
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth manage by * break
olcAccess: {1}to dn.exact="" by * read
olcAccess: {2}to dn.base="cn=Subschema" by * read
olcSizeLimit: 500
structuralObjectClass: olcDatabaseConfig
entryUUID: f2abdfee-adb8-103b-8c19-6da3f145a1c2
creatorsName: cn=config
createTimestamp: 20210919171535Z
entryCSN: 20210919171535.786661Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210919171535Z
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth manage by * break
structuralObjectClass: olcDatabaseConfig
entryUUID: f2abede0-adb8-103b-8c1a-6da3f145a1c2
creatorsName: cn=config
createTimestamp: 20210919171535Z
entryCSN: 20210919171535.787019Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210919171535Z
dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=domain,dc=tld
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * non
e
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=domain,dc=tld
olcRootPW:: SOME_HASH_VALUE
olcDbCheckpoint: 512 30
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbMaxSize: 1073741824
structuralObjectClass: olcMdbConfig
entryUUID: f2accdf0-adb8-103b-8c21-6da3f145a1c2
creatorsName: cn=config
createTimestamp: 20210919171535Z
entryCSN: 20210919171535.792748Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210919171535Z
我不知道是什么问题。帐户“admin”定义为 olcRootDN cn=admin,dc=domain,dc=tld。为什么我不能更改配置?
LDAP 过滤器很强大,但我不知道如何根据 DN 搜索对象。我已经有很多过滤器可以搜索对象,但似乎不支持搜索 DN。
所以例如我有
&(objectclass=top)(uid=myspecialuser)(aci=*)
这将返回一个具有一个或多个aci
属性的 uid 等于 myspecialuser 的对象。
出于我无法完全理解的原因,LDAP 确实允许使用 DN 搜索对象,例如
&(objectclass=top)(dn=cn=myspecialuser,o=special,c=NL)
事实上,如果没有唯一的属性来搜索它,似乎根本不可能使用过滤器来选择对象。Youi根本无法搜索DN。
这个对吗?没有基于 DN 选择的过滤器?
我想ldap.subnet.example.com
使用Apache Directory Studio连接到在服务器上运行的 LDAP 服务器。
我java-14-openjdk
在 Manjaro Linux 上运行 Apache Directory Studio 2.0.0.v20200411-M15。
不幸的是,LDAP 服务器只能从同一个子网中访问,而我在这个子网之外(我的主机是mypc.example.org
)。但是,我可以通过 SSH 访问主机portal.subnet.example.com
,它与 LDAP 服务器位于同一子网中,因此可以绑定到它。
我解决这个问题的首选方法是使用以下命令创建一个 SOCKS 代理mypc.example.org
:
ssh -D 8080 [email protected]
然后我将软件配置为使用这个 SOCKS 代理。这适用于例如 Firefox。
但是,它似乎不适用于 Apache Directory Studio。我在“窗口”>“首选项”>“常规”>“网络连接”中进行了以下设置:
- 主动提供者:手动
- 代理条目:
- HTTP (这里没有指定,但我也不能删除它)
- HTTPS (同上)
- SOCKS:主机
localhost
、端口8080
、提供者Manual
、身份验证No
- 代理绕过:
localhost
, ProviderManual
(默认设置,我没有修改这个)127.0.0.1
, ProviderManual
(默认设置,我没有修改这个)
尽管如此,当我尝试连接到服务器时,“打开连接:(14%)”会在左下角出现一段时间,然后出现“打开连接时出错 - MSG_04177_CONNECTION_TIMEOUT (5000)”。
我也尝试在 中设置代理ApacheDirectoryStudio.ini
,但没有成功。
-vmargs
-DsocksProxyHost=localhost
-DsocksProxyPort=8080
这个问题可能是相关的——最后一条评论给我的印象是 Apache LDAP API 只是忽略了这些设置,因为它基于 Apache MINA,但配置不同;然而,我还没有发现如何。这个 Stack Overflow 问题与问题中描述的问题相匹配,但遗憾的是,解决方案是代码 - 我需要一个配置解决方案。
我想使用 ldap 身份验证设置我的后缀。我遵循本教程https://blog.tnyc.me/postfix-with-ldap
我需要设置一个PostfixBookMailAccount
,但因此我需要加载该架构。我尝试了这个模式并调整了attributetype
to attributetype:
, same for objectclass
(较新的 ldap 版本中的语法更改)
加载此模式看起来不错,没有错误。
root@openldap:~/postfix# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/postfix-book.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
但我不能选择一个名为PostfixBookMailAccount
!
有任何想法吗?
编辑
好的,我发现我必须先将模式转换为 ldif ...但是这样做会导致错误
root@openldap:/etc/ldap/schema# cat schema_conv.conf
include /etc/ldap/schema/postfix-book.schema
root@openldap:/etc/ldap/schema# slaptest -f ./schema_conv.conf -F /tmp/ldif/
5d3d5e5c /etc/ldap/schema/postfix-book.schema: line 72 objectclass: AttributeType not found: "mail"