LDAP搭建,实现Linux账号统一管理

LDAP简介

ldap是开源的轻量级目录访问协议,英文全称是Lightweight Directory Access Protocol,它本身是一个小型文件数据库,能够通过server + client(服务端+客户端)的方式,进行统一的用户账号管理。随着公司研发人员越来越多,在各个研发服务器上添加重复账号就变得麻烦,如果使用ldap来管理,就只需要在ldap服务中创建一次就可以了,账号清理也是类似的道理。我们通过控制一台ldap server服务器,即可管理所有ldap client服务器上的账号,这样就方便很多了。

系统搭建环境

  1. Ubuntu 18.04 LTS,内网IP:192.168.0.1,ldap server
  2. Ubuntu 18.04 LTS,内网IP:192.168.0.2,ldap client

LDAP server 搭建

Step1: 设置服务器名称

在内网环境中,服务器名称最好是唯一的,比如改成saturn.com。

sudo hostnamectl set-hostname saturn.com 

修改完成后,可以用以下命令确认:

hostname -f

编辑/etc/hosts文件。

sudo vim /etc/host

在文件底部添加:

192.168.0.1 saturn.com

Step2: 安装OpenLADP server

sudo apt -y install slapd ldap-utils

在安装过程中,会提示设置ldap admin的密码。

安装完成后可以通过slap命令验证,正常会显示ldap database的内容,重要的是确认database的dn, 这里为dc=saturn,dc=com

sudo slapt

在这里插入图片描述

Step3: 添加users和groups的base dn

ldap database里的内容只能通过文件名后缀为.ldif的文件进行添加,或者通过Web工具(OpenLDAP没有自带的Web工具,下面会介绍LDAP account manager 工具)。

创建basedn.ldif文件并且编辑。

touch basedn.ldif
vim basedn.ldif

在basedn.ldif中添加以下内容,注意dn中要用dc=saturn, dc=com。

dn: ou=people,dc=saturn,dc=com
objectClass: organizationalUnit
ou
<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`测试认证 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李71~李先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值