---
title: LDAP架設
tags: Open distro
description: View the slide with "Slide Mode".
---
# LDAP架設
<!-- Put the link to this slide here so people can follow -->
## 目標
1. 要裝哪些套件
# :moyai: 2. 如何儲存資料 -> 部門員工權限
# :moyai: 3. 記下那些結構
4. schema是什麼
5. 如何查詢
6. 讓用戶端使用 LDAP Server 作為帳號驗證來源之一
7.
[鳥哥 - LDAP]( http://dic.vbird.tw/linux_server/unit07.php
)
7.1: 身份識別與檔案系統間的關係
7.2: LDAP 簡介
7.3: LDAP 的實際設定流程
7.4: LDAP 資料庫簡易管理 (新增/刪除/修改用戶參數)
7.5: 分享檔案系統的 NFS 伺服器
## 7.1: 身份識別與檔案系統間的關係
- 總結說明身份識別與檔案系統間的關係就是:在一組或一間伺服器機房內,所有的伺服器均需要使用同一組帳號與密碼來登入, 並取得相同家目錄時,就需要這樣的設備需求。
#### 情境
- 在崑山資傳系操作電腦教室的電腦時,所有的電腦均可以使用你的學號登入,並且可以取得你的個人桌面與額外的三個檔案系統。 因此在資傳系上課時,你可以在五間電腦教室的任何一間,使用相同的帳密登入,並可取得前一次上課的桌面與工作家目錄。所以如果對當前的座位不滿意, 可以立刻換座位,也不會影響到你的正常操作。
#### 再次強調該功能就得要有兩個元件:
1. 使用身份識別功能:就是 ID 認證的服務。常見的服務有: NIS, LDAP, AD(windows), Kerboros...
2. 使用者家目錄的取得:就是個人檔案資料。常見的服務有: NFS, SMB(網芳), AD(windows)...
- linux來說,建議以<font color=blue> LDAP 搭配 NFS</font> 來進行整體系統架構的設定
## 7.2: LDAP 簡介
- LDAP 全名: Lightweight Directory Access Protocol
- 主要的功能在於『目錄服務 (directory service)』的提供!
- 在軟體工程中,一個目錄是指一組名字和值的對映
- 簡單的說,就是你可以<font color=blue>提供一個查詢的資料對應的內容</font>,舉例來說,你可以提供一個『帳號名稱』,而在這個帳號名稱底下給予對應了密碼、UID、GID、真實姓名等資訊, 若用戶端使用帳號名稱來查詢目錄服務,則可以得到該帳號的密碼、UID等等資訊就是了
- <font color=red>LDAP 目錄結構組成</font>
:::success
<font color=red>DN</font>,Distinguished Name:識別名稱,LDAP 中一筆記錄的位置
RDN,Relative Distinguished Name:相對識別名稱,CN 及 CN 的值。例如:cn=deyu 獨一無二的屬性。
<font color=red>CN</font>,Common Name/uid:顯示名稱,一筆 LDAP 記錄的名字/ID
OU,Organizational Unit:組織,一筆 LDAP 記錄所屬組織
<font color=red>DC</font>,Domain Componet:網域元件,一筆 LDAP 記錄所屬區域
:::
### LDAP 的組成
>- 基本上,你就將 LDAP 想成是一個目錄,而每個目錄都有個目錄名稱,然後根據不同需求,可以給予更多的目錄節點
>- 單純以節點的角度來看,以一個公司名稱為『 example.com 』的位置來說,該公司的相關部門位置節點有點像這樣
>- 如上所示,公司底下有兩個部門 (organization unit),一個是伺服器部門 (Servers) 一個是人資部門 (People) ,其中人資部門底下管理著員工證號 (Person, udid), 大概就是這樣一層一層的分配下來~而每一個節點底下可以搭配不同的資料給予特別的任務就是了。
>- 因此,只要找尋不同的 location 即可取得各自部門的人資訊息
![](https://i.imgur.com/as0Pc1m.png)
- 每一筆資料則透過<font color=blue>判別名稱 (distinguished name, DN)</font> 來提示定義
- 每一個組織均需要定義最頂層的判別名稱,就被稱為<font color=blue> baseDN</font>,這也是整個 LDAP 系統最先要設定的項目。 例如上圖的『 dc=exmpale,dc=com 』以及底下的『 dc=company,dc=com 』都是所謂的 baseDN !你可以猜測在組織 (Organization) 那一層的名稱, 就是 baseDN 的意思了
- 每一筆查詢資料稱為 DN (Distinguished Name),而 <font color=blue>DN 就是呼叫出目錄節點的位置所在</font>。例如上面提到的 baseDN 就是一例。 他的展現方式就是『 dc=exmaple,dc=com 』,從小範圍寫起直到最頂層 (dc=com) 為止。 事實上,DN 的展示方式其實有點像 DNS,不過需要使用 dc, ou, cn 等來進行名稱的指定。<font color=blue>dc (domain component) 一般用在公司或最頂層 DN 的設定, ou (organization unit) 一般用在大部門的設定上</font>, cn (common name) 一般用在非上述兩個用途的其他應用上
- 每個 baseDN 底下還有附屬組織單位,那就是 organization unit 的概念。例如人事部門可以使用類似: <font color=blue>『 dn: ou=People,dc=example,dc=com 』</font>之類的方式來命名。而該 DN 底下就會有多種屬性定義!這些屬性定義就牽涉到每一個 LDAP 的用途為何。
>[name=昱齊] 先用dc來表達公司的FQDN,再用ou來指公司底下的組織單位,dc+ou也就是一種dn
- 因為 LDAP 僅是一個『目錄服務』的提供者,但<font color=blue>這些目錄底下資料的定義使用的功能為何,就是透過預先定義的綱要檔 (Schema) 來定義</font>。 舉例來說, Linux 與 Windows 的帳號所需要的項目並不相同,因此使用 LDAP 作為 Linux 的帳號認證來源時,就得要使用 LDAP 提供的 Linux 帳號所需綱要檔 (schema)
### <font color=red>LDAP 的架設流程簡介</font>
如果確定要架設 LDAP 作為你的身份驗證來源,那麼你得要事先規劃好這部 LDAP 所提供的 baseDN、相關的管理者密碼、相關的帳號 UID 起始號碼、 相關的使用者家目錄 (最好不要跟系統預設的 /home 相同位置,否則容易造成本機帳號與網路帳號衝突的狀況)等等。至於一般的架設流程大概是這樣的:
:::success
1. 安裝好 LDAP 伺服器軟體,並且提供登入 LDAP 功能的 <font color="#C98E85">
RootDN 密碼</font>
1. 載入 LDAP 所需要的環境設定參數檔
1. 啟動 LDAP 服務,並觀察 LDAP 服務的埠口,以啟用防火牆放行的功能
1. 預先指定好自己公司即將使用的 baseDN 環境 (最好與 DNS 系統相同即可),同時規劃好即將要使用的用戶端作業系統有哪些
1. 開始載入基本的 <font color="#C98E85">baseDN</font> 功能
1. 開始載入用戶端作業系統所需要的綱要檔 (schema)
1. 嘗試取得用戶端所需要的帳號參數範例檔,變轉為 LDAP 所需要的格式 <font color="#C98E85">(LDAP Data Interchange Format, LDIF)</font>,然後載入到 LDAP 伺服器內
1. 若需要加密環境,請前往 /etc/pki/tls/certs 目錄下進行所需要的 key 建制
:::
### LDAP 的實際設定流程
為了避免 Server/client 之間名稱解析產生的連線延遲,因此 IP 對應主機名稱最好還是寫入 /etc/hosts 較佳
```htmlmixed=
[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.254.xxx pcxxx.dic.ksu pcxxx
192.168.254.254 pc254.dic.ksu pc254
10.255.xxx.254 server.lanxxx.dic.ksu server <==這個項目
10.255.xxx.1 client.lanxxx.dic.ksu client <==這個項目
```
#### 1. 安裝 LDAP 相關軟體、啟動 slapd 服務以及了解 LDIF 格式與匯入 LDIF 檔案
要能夠執行 LDAP server 至少也需要 openldap-servers, openldap-clients, openldap 等軟體才行~不過,後續我們會用到 Linux 帳號轉成 LDAP 帳號的機制, 那就得要額外安裝 unix 帳號轉 ldap 帳號的轉換腳本 migrationtools 這個軟體才行!
##### 任務
1. 安裝所需要的四個軟體
1. 啟動、開機啟動 slapd 服務,同時觀察一下該服務!
1. 觀察埠口,是否有 port 389 的產生?,透過`netstat`
1. 觀察防火牆,僅針對內部網路 (10.xxx) 來說,是否還需要額外放行防火牆規則?
:::spoiler
---
```
[root@localhost ~]# ldapadd -x -W -D "${RootDN}" -f LDIf_filename
[root@localhost ~]# ldapadd -x -W -D "cn=Manager,dc=dic,dc=ksu" -f /root/ldap/base.ldif
```
![](https://i.imgur.com/L1rUo5B.png)
這裡說明一下 LDAP 主要的簡稱含義:
DIT(Directory Information Tree;目錄資訊樹)
o - organization (組織)
ou - organization unit (組織單位-部門)
c - country Name (國家)
dc - domain Component (域名)
sn - suer name (真實姓名)
cn - common name (使用者名稱)
dn - Distinguish Name (識別名稱)
> 修改slapd.conf
suffix "dc=mp,dc=nttu,dc=edu,dc=tw"
rootdn "cn=username,dc=mp,dc=nttu,dc=edu,dc=tw"
表示法
表示出towns在LDAP的唯一識別名稱(DN)
cn=username, cn=cy, cn=unit, cn=company, dc=mp,dc=nttu,dc=edu,dc=tw
LDAP的識別方式與DNS類似,<font color=blue>由小排大</font>
## 安裝
在CentOS7上安裝OpenLDAP Server
一、 安裝套件
1. 安裝 openLDAP 套件
# yum -y install openldap*
2. 安裝 migrationtools 工具
# yum install migrationtools
二、 清除範例資料並新增目錄與設定檔
1. 清除範例資料
# rm -rvf /etc/openldap/slapd.d
2. 建立目錄
# mkdir /etc/openldap/slapd.d
3. 複製設定的範例檔
# cp /usr/share/openldap-servers/slapd.ldif /etc/openldap/slapd.conf
三、 設定管理密碼並查看
1. 切換到openldap
# cd /etc/openldap
2. 設定密碼並輸出到文字檔,方便以 tail 查看
# slappasswd > password.txt
3. 查看{SSHA}密碼並複製到記事本備用
# tail password.txt
四、 編輯設定檔
1. 編輯 slapd.conf 主要控制的設定檔
# nano /etc/openldap/slapd.conf
把所有的dc=my-domain,dc=com改成dc=mp,dc=nttu,dc=edu,dc=tw
然後結尾補上
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxx
(從剛剛記事本那邊貼過來)
[雜介紹](http://weng-weiling.blogspot.com/2017/05/ldap-server.html)
---
### [不廢話直上版](http://linux.onlinedoc.tw/2016/05/centos7rhel7-ldap-server.html)
:::