匿名访问openldap
openldap默认都是可以进行匿名访问的,这个我们可以通过ldapadmin或者phpldapadmin等工具来进行查看。在这我们使用ldapadmin工具进行查看,如下:
通过上图,我们可以很明显的看出,openldap在匿名情况下是可以被访问的。而且openldap的相关信息,除了用户的密码信息之外,其他openldap的信息完全被呈现出来。
禁止openldap匿名访问
从安全的角度考虑,这种情况是不被允许的,所以我们要取消openldap的匿名访问功能。
要取消openldap的匿名访问功能,操作方法也比较简单。我们只需要把以下openldap信息导入openldap中即可,而且是无需重启openldap服务
即时生效的。
编辑disable_anon.ldif文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
dn: cn=config
changetype: modify
add: olcDisallows
olcDisallows: bind_anon
dn: cn=config
changetype: modify
add: olcRequires
olcRequires: authc
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
add: olcRequires
olcRequires: authc
|
使用ldapadd命令导入到openldap
1
|
ldapadd -Y EXTERNAL -H ldapi:/// -f disable_anon.ldif
|
可以通过openldap服务器上的文件查看做了哪些发动:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
[admin@localhost openldap]$ sudo cat /etc/openldap/slapd.d/cn\=config.ldif
[sudo] password for admin:
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 2848f698
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/openldap/slapd.args
olcPidFile: /var/run/openldap/slapd.pid
olcTLSCACertificatePath: /etc/openldap/certs
olcTLSCertificateFile: "OpenLDAP Server"
olcTLSCertificateKeyFile: /etc/openldap/certs/password
structuralObjectClass: olcGlobal
entryUUID: b4bd6c2e-b215-103a-90af-1f89b5f560bc
creatorsName: cn=config
createTimestamp: 20201103114442Z
olcDisallows: bind_anon
olcRequires: authc
entryCSN: 20201103141650.871705Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20201103141650Z
[admin@localhost openldap]$ sudo cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{-1\}frontend.ldif
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 7eeb2ffa
dn: olcDatabase={-1}frontend
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: {-1}frontend
structuralObjectClass: olcDatabaseConfig
entryUUID: b4bdf64e-b215-103a-90b2-1f89b5f560bc
creatorsName: cn=config
createTimestamp: 20201103114442Z
olcRequires: authc
entryCSN: 20201103141650.873590Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20201103141650Z
|
验证openldap匿名访问
通过上面配置后,现在我们再来通过ldapadmin工具,验证openldap是否还可以被匿名访问。
问题
将 ldap 配置为禁止匿名访问后,ldap client (nslcd) 就无法连接到 ldap server了。
解决:
ldap 添加一个只读用户,配置 ldap client (nslcd) 服务的配置文件 /etc/nslcd.conf ,使用只读用户访问 ldap server
ldap 添加只读用户见:ldap添加只读用户
如:ldap 存在只读用户,用户名:readonly,用户密码 passwd,将用户名添加到 nslcd.conf 中 binddn 中,将用户密码添加到 bindpw 中,如下
1
2
3
4
5
6
7
8
9
10
|
# The distinguished name to bind to the server with.
# Optional: default is to bind anonymously.
#binddn cn=proxyuser,dc=example,dc=com
binddn cn=readonly,dc=example,dc=org
# The credentials to bind with.
# Optional: default is no credentials.
# Note that if you set a bindpw you should check the permissions of this file.
#bindpw secret
bindpw passwd
|
修改完 nslcd.conf 文件后,需要重启 nslcd 服务
1
|
systemctl restart nslcd
|
参考:
https://chenzhonzhou.github.io/2020/11/03/openldap-jin-zhi-ni-ming-fang-wen/
https://blog.csdn.net/baidu_38844729/article/details/107200232
https://docs.nvidia.com/networking-ethernet-software/cumulus-linux-43/System-Configuration/Authentication-Authorization-and-Accounting/LDAP-Authentication-and-Authorization/
https://linux.die.net/man/5/nslcd.conf