LDAP
目录服务介绍
不同于文件系统的目录
目录的英文单词是directory,当查看关于目录服务的相关资料时,就会发现,凡是讲的是目录服务的时候,就会将directory首字母大写,无论directory是出现在文章开头还是中间位置;如果指的是文件系统的目录时,directory首字母小写。
目录服务是企业网络的核心基础软件架构
目录服务作为网络核心底层的基础架构,通常不会直接跟用户交互,它都是作为软件核心的底层架构,在这个底层的架构之上企业会安装部署各种应用系统。
- 如此重要的服务并不被大多数人熟悉
- 很少独立使用,与其他服务结合使用
- 对于一些小型企业,可能不会部署目录服务,完全可以部署一个一个独立的应用系统。但是对于大型企业来说,基于底层架设一个互通的、共享的、底层的目录服务,在它基础上部署各个应用的话,这些应用之间是可以进行信息互通、资源共享,可以达到企业信息资源融合的效果。设置基于一个完善的目录服务,你可以把企业中所有的系统纳入到目录服务中,使得所有系统的底层都是打通的,这样可以实现企业级别的完整信息的大融合。
- 微软的企业战略(给企业挖坑)
目录服务我们或多或少都使用过,最近的就是微软的活动目录。2000年时微软推出了windows2000操作系统,升级了以前的WindowsNT架构的操作系统,在Windows2000里面正式推出了活动目录这一概念。从那时开始之后,微软就开始打造自己的企业战略(给企业挖坑)。微软的认证教材升级了,加入了活动目录的考试。在之后的微软面向企业的各种应用系统上面,都开始不断的集成和结合到它的活动目录上去,如微软的Exchange邮件服务器,以前的Exchange邮件服务器都是独立部署的,但2000年之后的Exchange产品,都开始把Exchange的一部分和邮件不是太相关的功能拿出来放到活动目录里面,由活动目录进行统一的管理。之后微软的一些面向企业的产品,都基于底层的活动目录。这样的结果就是,一旦底层的基础架构目录服务用了微软的活动目录了,那将来在活动目录上部署应用服务时,邮件系统首选的肯定是Exchange,要选择的应用系统最完美的和活动目录进行集成结合使用的,肯定首选微软的产品。活动目录本身是免费的,以后用户选择使用活动目录,将来选择产品时只要微软有,那肯定首选微软的服务。
目录服务相当于一本书的目录,通过浏览目录,就大致知道哪些内容了。
目录服务把网络中所有的资源信息都要存放到目录服务里,那你只需要大概浏览一下目录服务里面的条目,就知道网络里有什么资源了。当然,目录服务只是存储的是应用服务相关的条目信息,具体的服务当然是在具体的应用系统上。
数据集中存储的应用需求
- 集中存储、集中管理、集中定位
- 身份认证、公钥分发、邮件路由、地址查询、应用配置、单点登录(SSO)
- 面向大量频繁的数据查询操作,少量写操作(基本不变的数据)
- 权限限制授权用户查询
目录服务的应用场景
- 用户认证
- 机器认证
- 用户和组
- 电话地址薄
- 组织呈现
- 资产跟踪
- 集中应用配置
- PBX / 网络设备配置
目录服务的软件架构
- 不同于SQL的后端层级化的数据库,目录服务主要是面向查询操作,传统的SQL数据库不适用于目录服务。
- 目录服务有自己特殊的数据库类型,叫做data类型的数据库,这种数据库是基于键值对的方式存储数据。
- 与DNS的分布式结构更接近,在命名上通常保持一致。DNS域名可以很好的识别和标识公司的名称。
- 标准统一的服务前端应用查询访问接口(OSI X.500)
- 统一的客户端查询组件和协议
- 支持通信会话加密
- 与自建的数据库开发相比
- 有专门针对查询服务的数据库结构类型
- 统一标准的查询接口及通信协议(DAP)
轻量目录服务
- LDAP(Lightweight Directory Access Protocol)
- X.500标准 太重量了,它是基于OSI七层模型来定义的标准,事实情况,我们都是使用TCP / IP协议来通信的。我们将X.500中目录服务的拿出来,一些不太重要的舍弃掉,把X.500部分特性集提取出来之后,形成一个轻量目录服务标准,然后基于TCP / IP 协议通信(TCP 389)定义了 LDAP。
- 可以构建面向互联网和本地网络的目录服务
- 最常见的LDAP服务
- 微软的活动目录 AD,企业网络资源全部加入域,统一存储、统一呈现、统一管理、安全边界
- Novell eDirectory
- 命名空间通常与DNS命名保持一致,在目录服务内所有存储对象都有唯一的路径名称
目录服务的命名空间
- 全局路径:Distinguished Name(DN)
- 相对路径:Relative Distinguished Name(RDN)
- 目录容器:Directory Container(DC)
- 组织单位:Organisation Unit(OU)
- 通用名:common name(CN)
- 数据项:entries(object、class)
- 一组预先定义的属性集合
- uid、姓、名、显示名、账号、邮箱、电话、地址……
- 基础架构:Schema
- objectClass 定义所有对象类型及其属性
- Schema 可按应用需求扩展,每个对象在ASN. 1结构中都有自己的位置——SNMP
传统的命名空间
- 无固定的命名规则
- 按照地理空间命名
- uid=babs,ou=People,dc=ex,dc=com
安装DNS的方式进行命名
LDAP协议
LDAP最初作为 TCP / IP 客户端与 X.500 目录服务网关之间的通信协议
LDAPv3
- 强身份认证和数据加密
- 基于证书的SSL加密
- 使用Unicode编码实现国际化
- Schema 可扩展
安装LDAP
修改主机名
1 | sudo vim /etc/cloud/cloud.cfg |
安装OpenLDAP
1 | # Ubuntu linux中默认的LDAP实现 |
slapd 是服务器后台进程(即 LDAP server)
ldap-utils (ldap工具包)
1 | ldapadd # 添加数据 |
修改配置文件
1 | sudo vim /etc/ldap/ldap.conf |
初始化配置
1 | sudo dpkg-reconfigure slapd |
验证
1 | sudo slapcat |
基本操作
添加记录
1 | vi add.ldif |
导入到目录数据库
1 | ldapadd -x -D cn=admin,dc=lab,dc=com -W -f add.ldif |
修改记录
1 | vi modify.ldif |
web管理
web应用程序 ldap-account-mana(lam)
依赖一些软件包
1 | sudo apt install apache2 |
通过浏览器访问:http://192.168.1.108/lam
点击右上角的 LAM configuration
在Account types选项里
保存
简单创建账号、组
只要知道ip地址,都可以来访问管理页面的
处于安全性考虑,不希望都能访问管理页面,只希望来自安全地址的访问请求来登录管理页面。要达到这种效果,可以编辑配置文件。
1 | sudo vi /etc/apache2/conf-enabled/ldap-account-manager.conf |
Windows客户端
图形化界面集中式认证
GINA 提供 windows 系统登陆界面
- 支持本机、域账号登录
pGina开源身份认证提供者
- 集成并替换Windows系统默认的GINA
- 通过插件支持大量身份验证数据存储(LDAP、MySQL、RADIUS)
下载安装稳定版:http://pgina.org
点击保存,确定
在simulation选项上可以测试,如果一切没有问题,就重启计算机
linux客户端
域名解析
1 | echo "192.168.1.108 ldap.lab.com" | sudo tee -a /etc/hosts |
安装客户端
1 | sudo apt install libnss-ldap libpam-ldap ldap-utils nscd |
修改配置文件
1 | sudo vi /etc/nsswitch.conf |
验证
1 | getent passwd zhangsan |