xdays

OpenLDAP构建统一认证之项目实战

背景

问题

登录服务器的账号分散在所有的机器上,这样就带来两个问题:

  1. 维护成本高,需要专门在playbook里定义用户权限
  2. 没有明确的权限划分
  3. 不便于和其他系统(如Google Apps)对接

需求

  1. 数据集中管理
  2. 根据用户组控制用户的登陆权限
  3. 控制用户的sudo权限,只有operation有sudo的权限
  4. 自动创建家目录
  5. Web管理界面

原则

  • 尽可能少的涉及组件,减少维护成本
  • 尽可能的不入侵系统配置,便于恢复

配置

服务端

OpenLDAP安装配置

关于OpenLDAP的安装可以参考OpenLDAP构建统一认证之安装配置

LAM安装配置

关于LAM安装配置可以参考OpenLDAP构建统一认证之管理工具

管理账号

dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2 ...

OpenLDAP构建统一认证之管理工具

自带工具

注意: 如果服务器的ssl证书是自签名的,那么在客户端的ldap.conf文件加入一行TLS_REQCERT never,否则认证会不通过。

安装

ubuntu执行:

apt-get install -y ldap-utils

centos执行:

yum install -y openldap-clients

使用

ldapsearch

ldapsearch,搜索目录树,示例如下:

ldapsearch -v -x -H ldaps://example.com -D "cn=admin,dc=example,dc=com" -W -W -b "dc=xdays,dc=info" -LL

简单解释下选项的作用:

  • -H 指定服务器url
  • -x ...

OpenLDAP构建统一认证之安装配置

安装OpenLDAP

ubuntu

确保本机有符合FQDN的主机名,因为安装程序会根据主机名提取域来作为baseDN

apt-get install slapd

安装过程中会提示设置管理员密码

centos

yum install slapd

配置OpenLDAP

slapd.conf和cn=config

配置slapd服务有两种方式:

  • slapd.conf是传统方式,修改配置文件然后重启服务,centos默认采用这种方式。
  • cn=config是新的配置方式,称之为on-line configuration,ubuntu默认采用这种方式。

配置TLS

自签名证书

mkdir /etc/ldap/certs
openssl genrsa -out ldap.key 1024
openssl req -new -key ldap.key -out ldap.csr
openssl x509 -req ...

OpenLDAP构建统一认证之基础概念

目录服务与关系数据库

目录数据库系统和关系数据库系统都是用来保存数据的,但是他们有两个主要的不同点:

  • 数据结构,目录服务只有树形结构,不像关系数据库有复杂的数据结构。
  • 查询速度与写入速度,目录服务适合查询,不适合写入。

基本概念

在浏览LDAP相关文档时经常会遇见一些概念,下面是常见概念的简单解释:

  • DIT,目录信息树,近似相当于一个表
  • Entry,条目,也叫记录项
  • DN,是无歧义标识一个条目的名字,如"cn=alair,dc=account,dc=xdays,dc=info",相当于主键
  • 属性,一个条目可以有多个属性,常见的属性有CN,O,OU,DC等
  • ObjectClass,对象类,决定了一个条目能具备哪些属性,以及属性对应值的类型
  • Schema,Schema是对象类的集合
  • baseDN,基本DN,baseDN执行绑定查询时的根目录
  • RootDN,根目录,也就是绑定了OpenLDAProotDSE这个类的条目。
  • O,组织 ...