openldap+sssd实现ldap账号登陆linux服务器

参考文档:

LDAP and Transport Layer Security (TLS) | Ubuntu

https://www.cnblogs.com/yun-xx/p/17961221

踩坑:

最早用的是docker版本openLDAP,没有tls的,结果各种验证不过,看日志隐约感觉是要用tls才行。

于是开始安装openLDAP,中间看了几个编译的版本没成功,最后还是官网的安装一试成功了。

Ubuntu22安装openLDAP:

sudo apt install slapd ldap-utils

配置openLDAP:

sudo dpkg-reconfigure slapd

后续步骤按官网的来,dc=example,dc=com这些名字可以改成自己的,比如xxx。

安装好后开始继续配置TLS,安装按官网文档依葫芦画瓢一路下来

Create the /etc/ssl/ldap01.info info file containing:

organization = Example Company
cn = ldap01.example.com
tls_www_server
encryption_key
signing_key
expiration_days = 365

这里的cn=ldap01.example.com,记得改成你的(比如xxx.com),到时在改/etc/hosts的时候对应配上解析(我是走hosts,没用dns解析)

openLDAP的都配置好后,开始安装配置sssd:

apt install sssd ldap-utils

修改/etc/sssd/sssd.conf(记得权限要600)

[sssd]
config_file_version = 2
services = nss, pam
domains = alpha
[nss]
debug_level = 4
filter_groups = root
filter_users = root
[domain/alpha]
debug_level = 9
auth_provider = ldap
id_provider = ldap
chpass_provider = ldap


ldap_uri = ldaps://xxx.com
ldap_search_base = dc=xxx,dc=com
#ldap_default_bind_dn = cn=admin,dc=xxx,dc=com
ldap_default_authtok_type = password
ldap_default_authtok = 123456
override_homedir = /home/%u
override_shell = /bin/bash
access_provider = permit
sudo_provider = ldap
autofs_provider = ldap
resolver_provider = ldap

ldap_tls_reqcert = never
ldap_id_use_start_tls = true

配置好后测试成功:

<think>我们正在讨论如何实现多台Linux服务器LDAP统一认证。根据引用内容,LDAP(轻型目录访问协议)是一种标准的协议,用于集中管理用户认证信息。通过搭建LDAP服务器,可以在多台客户端机器上配置LDAP认证,从而实现用户的统一管理。 实现步骤概述: 1. 搭建LDAP服务器(可以是独立的服务器,也可以选择其中一台作为服务器) 2. 在LDAP服务器上创建用户和组信息 3. 在每台客户端机器上配置LDAP认证 4. 配置sudo权限(可选,使得某些LDAP用户可以在客户端机器上执行sudo命令) 详细步骤: 第一步:搭建LDAP服务器(以CentOS 7为例) 引用[2]中提到了一篇搭建LDAP统一认证服务的文章,我们可以参考其步骤。 1. 安装必要的软件包: ```bash yum install -y openldap openldap-servers openldap-clients ``` 2. 启动服务并设置开机启动: ```bash systemctl start slapd systemctl enable slapd ``` 3. 设置LDAP管理员密码: ```bash slappasswd ``` 将生成的密码记录下来,并配置到LDAP中。 4. 导入基本的LDAP模式(schema): ```bash cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown ldap:ldap /var/lib/ldap/DB_CONFIG ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif ``` 5. 修改LDAP的基本配置(包括域名、管理员密码等): 创建一个配置文件,比如`ldap_init.ldif`,然后使用`ldapmodify`命令应用配置。 第二步:创建用户和组信息 在LDAP服务器上,我们需要创建组织单元(OU)、组和用户。 例如,创建一个用户`testuser`,并设置密码。 第三步:配置客户端机器(每台需要统一认证的机器) 1. 安装客户端软件: ```bash yum install -y openldap-clients nss-pam-ldapd ``` 2. 运行`authconfig`或`authselect`来配置LDAP认证(CentOS7使用authconfig,CentOS8使用authselect): ```bash authconfig --enableldap --enableldapauth --ldapserver=ldap://<LDAP_SERVER_IP> --ldapbasedn="dc=example,dc=com" --enablemkhomedir --update ``` 注意:`--ldapserver`指定LDAP服务器的地址,`--ldapbasedn`指定基础域名,`--enablemkhomedir`表示在用户首次登录时自动创建家目录。 3. 启动并启用nslcd服务(用于名称服务): ```bash systemctl start nslcd systemctl enable nslcd ``` 4. 配置SSH允许公钥认证(可选,如果使用公钥登录,需要将公钥存储在LDAP中)。 第四步:配置sudo权限 1. 在LDAP服务器上创建sudo规则,并导入LDAP。 2. 在客户端机器上安装sudo-ldap包,并配置sudo使用LDAP作为源。 验证: 在任意一台客户端机器上,使用LDAP中的用户名和密码登录。 注意事项: - 确保LDAP服务器和客户端之间的网络通信畅通(端口389)。 - 如果LDAP服务器使用自签名证书,需要将证书分发到客户端(如果使用TLS)。 - 用户的家目录:如果客户端机器上没有该用户的家目录,可以使用`pam_mkhomedir`模块自动创建(在authconfig中已经通过`--enablemkhomedir`启用)。 引用[1][2][3]都提到了LDAP在统一认证中的重要性,以及具体的搭建步骤和配置方法。 这样,我们就实现了多台Linux服务器LDAP统一认证。 相关问题: 1. 如何备份和恢复LDAP数据库? 2. 如何配置LDAP over SSL/TLS以提高安全性? 3. 如何管理LDAP中的用户和组(添加、删除、修改)? 4. 如何配置LDAP客户端使用故障转移(多个LDAP服务器)? </think>### 实现多台Linux服务器LDAP统一认证的方法 基于引用内容,LDAP统一认证的核心是通过中央目录服务管理用户身份,实现服务器的登录一致性。以下是完整实施流程(以CentOS 7为例): --- ### 一、LDAP服务器搭建(主节点) #### 1. 安装核心组件 ```bash # 所有操作在LDAP服务器执行 yum install -y openldap openldap-servers openldap-clients migrationtools systemctl start slapd systemctl enable slapd ``` #### 2. 配置基础目录结构 ```bash # 生成管理员密码(保存生成的哈希) slappasswd -s {your_password} > /tmp/passwd_hash # 创建基础配置文件 ldap_init.ldif cat << EOF > ldap_init.ldif dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=example,dc=com replace: olcRootDN olcRootDN: cn=admin,dc=example,dc=com replace: olcRootPW olcRootPW: $(cat /tmp/passwd_hash) EOF # 应用配置 ldapmodify -Y EXTERNAL -H ldapi:/// -f ldap_init.ldif ``` #### 3. 初始化组织架构 ```bash # 创建基础组织结构 ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f base.ldif # base.ldif 内容示例: dn: dc=example,dc=com objectClass: top objectClass: domain dc: example dn: ou=People,dc=example,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=example,dc=com objectClass: organizationalUnit ou: Group ``` --- ### 二、客户端配置(所有10台服务器) #### 1. 安装认证组件 ```bash yum install -y openldap-clients nss-pam-ldapd authselect ``` #### 2. 配置LDAP连接 ```bash # 使用authconfig工具(CentOS 7) authconfig --enableldap --enableldapauth \ --ldapserver=ldap://ldap-server-ip \ --ldapbasedn="dc=example,dc=com" \ --enablemkhomedir --update # 或用authselect(CentOS 8+) authselect select sssd with-mkhomedir --force ``` #### 3. 配置SSSD服务(推荐) ```bash # /etc/sssd/sssd.conf 关键配置 [domain/example.com] cache_credentials = True ldap_search_base = dc=example,dc=com ldap_uri = ldap://ldap-server-ip # 重启服务 systemctl restart sssd ``` --- ### 三、用户与组管理 #### 1. 创建LDAP用户(在LDAP服务器执行) ```bash # 创建用户模板 user.ldif dn: uid=dev_user,ou=People,dc=example,dc=com objectClass: inetOrgPerson uid: dev_user cn: Developer User sn: User userPassword: {SSHA}hashed_password homeDirectory: /home/dev_user ``` #### 2. 批量导入用户 ```bash ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f users.ldif ``` #### 3. 配置Sudo权限 ```bash # /etc/sudoers.d/ldap_sudo 内容 %sudoers_group ALL=(ALL) ALL # 在LDAP中创建sudo规则 dn: cn=sudoers,dc=example,dc=com objectClass: sudoRole sudoHost: ALL sudoUser: %sudoers_group sudoCommand: ALL ``` --- ### 四、验证与故障排查 1. **登录测试**: ```bash ssh dev_user@client-server # 首次登录自动创建/home/dev_user ``` 2. **LDAP查询工具**: ```bash ldapsearch -x -b "dc=example,dc=com" "(uid=dev_user)" ``` 3. **日志检查**: ```bash tail -f /var/log/secure # 认证日志 journalctl -u sssd -f # SSSD服务日志 ``` --- ### 拓扑架构 ```mermaid graph TD A[LDAP服务器] -->|389/TCP| B(客户端1) A --> C(客户端2) A --> D[...客户端10] B -.->|SSSD缓存| E[本地登录] C -.->|自动同步账号| F[用户数据] ``` > **关键优势**: > - 用户信息集中管理,无需逐台创建账号[^1] > - 家目录自动创建(通过`pam_mkhomedir`) > - 支持sudo权限统一分配[^2] --- ### 常见问题解决 | 问题现象 | 解决方案 | |----------|----------| | 登录提示"Permission denied" | 检查`/etc/nsswitch.conf`中`passwd`和`group`是否包含`ldap` | | 家目录未自动创建 | 确认`authconfig`启用`--enablemkhomedir` | | LDAP查询超时 | 防火墙放行389端口:`firewall-cmd --add-service=ldap` | | 密码认证失败 | 使用`ldapwhoami -x -D 'uid=user,ou=People,dc=example,dc=com' -W`测试认证 |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值