LDAP(Lightweight Directory Access Protocol) 即轻量级目录访问协议,是一种基于 X.500 标准的应用层协议,用于访问和维护分布式目录信息服务。LDAP 目录以树形结构存储数据,常用于存储用户账号、组织结构、权限信息等,具有高效查询、集中管理的特点。LDAP 认证模块是实现用户身份验证的核心组件,主要负责:
- 凭证验证:校验用户输入的用户名和密码是否与 LDAP 目录中存储的信息匹配
- 身份映射:将用户凭证映射到目录中的唯一标识(如 DN:Distinguished Name)
- 权限关联:根据认证结果获取用户对应的角色或权限信息
- 会话管理:生成并管理认证会话,支持单点登录(SSO)
- 用户认证请求用户通过应用程序提交用户名和密码,请求认证。
- 凭证预处理模块对密码进行加密(如 SHA-256、加盐哈希),防止明文传输。
- 根据用户名查找对应的 DN(如cn=user,ou=people,dc=example,dc=com)
- 使用 DN 和密码进行绑定(Bind)操作,验证凭证合法性
- 会话生成生成认证令牌(如 JWT)或会话 ID,用于后续请求的身份校验。
- 传输加密:通过 SSL/TLS(LDAPS 协议)确保凭证传输加密,避免中间人攻击
- 绑定策略:限制匿名绑定权限,配置强密码策略(长度、复杂度、过期周期)
- 访问控制:通过 LDAP 的 ACL(访问控制列表)限制敏感属性的查询权限
- 审计日志:记录认证失败、异常登录等事件,支持安全审计和溯源
- 企业统一身份认证集成 Active Directory(AD)或 OpenLDAP,实现多系统单点登录(如 OA、邮件系统)。
- 云计算平台权限管理在 IaaS/PaaS 平台中,通过 LDAP 认证模块对接用户目录,控制资源访问权限。
- 开源 CMS(如 WordPress)通过 LDAP 插件对接企业用户目录
- 容器编排工具(如 Kubernetes)通过 LDAP 认证管理集群访问
1.SSH通过 PAM (Pluggable Authentication Modules) 调用LDAP认证模块完成身份验证,要使用以下组件协同工作:
?yum install -y openldap-clients nss-pam-ldapd authconfigapt-get install -y ldap-utils libnss-ldapd libpam-ldapd3.基础配置文件生成(RHEL/CentOS特供)? --ldapserver="ldaps://ldap.example.com" \ --ldapbasedn="dc=example,dc=com" \执行后自动生成/etc/openldap/ldap.conf 和PAM配置文件。4.手动配置 /etc/nslcd.conf (关键)?uri ldaps://ldap.example.combinddn cn=sshd-auth,ou=users,dc=example,dc=comtls_cacert /etc/openldap/certs/cacert.pem filter passwd (&(objectClass=posixAccount)(uidNumber=*)(gidNumber=*))map passwd homeDirectory "/home/$uid"5.配置NSS (Name Service Switch)?auth sufficient pam_ldap.so account sufficient pam_ldap.so session optional pam_ldap.so ?️PasswordAuthentication yes # 初次测试可启用密码登录ChallengeResponseAuthentication no
?️mkdir -p /etc/openldap/certsscp ldap.example.com:/etc/ssl/certs/cacert.pem /etc/openldap/certs/chmod 644 /etc/openldap/certs/cacert.pem ?getent passwd ldap_username # 应返回LDAP用户记录id ldap_username # 检查UID/GID映射?ssh ldap_username@your_server?️用户LDAP条目中添加sshPublicKey属性sshPublicKey: ssh-rsa AAAAB3NzaC... user@host?AuthorizedKeysCommand /usr/bin/ldapsearch -x -h ldap.example.com -b 'dc=example,dc=com' '(&(uid=%u)(objectClass=posixAccount))' sshPublicKey | grep 'sshPublicKey::' | sed 's/sshPublicKey:: //' | base64 -dAuthorizedKeysCommandUser nobody?tail -f /var/log/secure # RHEL/CentOStail -f /var/log/auth.log # Ubuntu⚽ldapwhoami -x -H ldaps://ldap.example.com -D "uid=testuser,ou=people,dc=example,dc=com" -w passwordpamtester sshd ldap_username authenticate
- 禁用明文通信:强制使用ldaps://且tls_reqcert demand
- 防火墙规则:仅允许LDAP服务器IP连接tcp/636
打赏

支付宝微信扫一扫,打赏作者吧~
本文链接:https://www.kinber.cn/post/5186.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:
您阅读本篇文章共花了: