LDAP落地實戰(一):OpenLDAP部署及管理維護


公司內部會有許多第三方系統或服務,例如Svn,Git,VPN,Jira,Jenkins等等,每個系統都需要維護一份賬號密碼以支持用戶認證,當然公司也會有許多的主機或服務器,需要開放登錄權限給用戶登錄使用,每台主機需要添加登錄的賬號密碼,這些操作不僅繁瑣且不方便管理,密碼記錯或遺忘的情況時有發生。

引入一套支持各系統、服務、主機單點認證的服務就顯得尤其迫切和重要。LDAP服務正是為此而生,且經過長時間市場檢驗,安全穩定,文檔也比較豐富,方便上手。

LDAP

可以通過以下三句話快速的認識一下LDAP:

  1. LDAP:Lightweight Directory Access Protocol,輕量目錄訪問協議。
  2. LDAP服務是一個為只讀(查詢、瀏覽、搜索)訪問而優化的非關系型數據庫,呈樹狀結構組織數據。
  3. LDAP主要用做用戶信息查詢(如郵箱、電話等)或對各種服務訪問做后台認證以及用戶數據權限管控。

名詞解釋

  • DC:domain component一般為公司名,例如:dc=163,dc=com
  • OU:organization unit為組織單元,最多可以有四級,每級最長32個字符,可以為中文
  • CN:common name為用戶名或者服務器名,最長可以到80個字符,可以為中文
  • DN:distinguished name為一條LDAP記錄項的名字,有唯一性,例如:dc:"cn=admin,ou=developer,dc=163,dc=com"

圖形示例

上邊來了一堆的名詞解釋,看的雲里霧里,還不是很明白,怎么跟自己的組織架構對應起來呢?看看下邊的圖是不是清晰明了

OpenLDAP

上邊介紹了LDAP只是一個協議,基於這個協議實現服務器端程序有OpenLDAP、Active Directory(微軟的域控制器)等等。

部署OpenLDAP

部署環境:Debian 8.4

1.安裝OpenLDAP,OpenLDAP服務端程序叫slapd

# apt-get install -y slapd

2.安裝完成之后,會自動生成一個OpenLDAP的系統賬號

# cat /etc/passwd
openldap:x:110:115:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false

3.生成OpenLDAP管理員賬號的密碼(后邊修改配置文件需要使用)

# slappasswd
New password: 
Re-enter new password: 
{SSHA}TpWoSebaT5gKy2Y3EHmZh+Wc0hJaFp7y

4.新建OpenLDAP配置文件

# cp /usr/share/slapd/slapd.conf /etc/ldap/
# 配置文件中有很多@xxx@的配置替換為真實配置

# slaptest -f /etc/ldap/slapd.conf 
5ad9b19d /etc/ldap/slapd.conf: line 105: rootdn is always granted unlimited privileges.
5ad9b19d /etc/ldap/slapd.conf: line 122: rootdn is always granted unlimited privileges.
config file testing succeeded

配置文件重要參數說明(需要自己修改的,其他未提到的可以不修改):

  • database bdb:定義使用的后端數據存儲格式,數據庫默認采用了berkeley db,其后可以跟的值有bdb、ldbm、passwd、shell。bdb指使用Berkley DB 4數據庫
  • suffix "dc=163,dc=com":suffix是"LDAP基准名",它是LDAP名字空間在這里的根。設置想要創建的子樹的根DN
  • rootdn "cn=admin,dc=163,dc=com":設置管理LDAP目錄的超級用戶的DN。這個用戶名不要出現在/etc/passwd文件里
  • rootpw {SSHA}TpWoSebaT5gKy2Y3EHmZh+Wc0hJaFp7y:設置這個數據庫的超級用戶的口令驗證方式。也就是上邊rootdn設置的用戶的密碼。一定要用加密的口令存儲,可以使用的加密方式有:CRYPT、MD5、SMD5、SHA和SSHA,就是我們第三部生成的密碼
  • directory /var/lib/ldap:設置LDAP數據庫和索引文件所在的目錄
  • access to:權限配置下邊詳細說明

5.刪除原配置,生成新配置

# rm -rf /etc/ldap/slapd.d/*
# slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/

# 給新生成的配置文件賦予openldap的權限
# chown -R openldap.openldap /etc/ldap/slapd.d/

6.重啟openldap

# /etc/init.d/slapd restart

ACL權限控制

ACL訪問指令的格式:

access to [what]
    by [who] [control]

簡單解釋:通過access to約束我們訪問的范圍(what),通過by設定哪個用戶(who)有什么權限(control)

ACL的詳細配置還是比較復雜的,可以看下下邊參考文檔的第三篇,寫的比較詳細,這里都不再贅述。

線上ACL控制配置解析

為了用戶能夠自主修改密碼,部署了lam給用戶使用(見下文lam介紹)。希望能達到的效果是:

  1. 管理員能夠有全部權限,包含新建用戶,修改用戶屬性,充值用戶密碼等
  2. 普通用戶只能修改自己的密碼,別的權限都沒有

配置如下:

# access to attrs=userPassword通過屬性找到訪問范圍密碼,
# 超級管理員也就是我們ldap配置文件里寫的rootdn:"cn=admin,dc=163,dc=com"有寫(write)權限;
# 由於管理員可能不止一個,我創建了個管理員組"ou=Admin,dc=163,dc=com"把管理員統一都放到這個組下,管理員組下的所有用戶(dn.children)有寫權限;
# 匿名用戶(anonymous)要通過驗證(auth);
# 自己(self)有對自己密碼的寫(write)權限,其他人(*)都沒有權限(none).
access to attrs=userPassword,shadowLastChange
        by dn="cn=admin,dc=163,dc=com" write
        by dn.children="ou=Admin,dc=163,dc=com" write
        by anonymous auth
        by self write
        by * none

# access to * 所有其他屬性,
# 超級管理員rootdn:"cn=admin,dc=163,dc=com"有寫(write)權限;
# 管理員"ou=Admin,dc=163,dc=com"成員有寫(write)權限;
# 其他人(*)只有讀(read)權限
access to *
        by dn="cn=admin,dc=163,dc=com" write
        by dn.children="ou=Admin,dc=163,dc=com" write
        by * read

備份和還原

備份

# ldapsearch -x -b "dc=163,dc=com" -D "uid=authz,ou=Public,dc=163,dc=com" -w "AzdfD863M4" > ldap.20180626.ldif

參數說明:

  • -x:進行簡單的驗證
  • -D:用來綁定服務器的DN
  • -w:綁定DN的密碼
  • -b:要查詢的根節點
    authz賬號要有"dc=163,dc=com"的查詢權限

還原

# ldapadd -x -c -D "cn=admin,dc=163,dc=com" -w "smile" -f ldap.20180626.ldif

參數說明:

  • -c:出錯后繼續執行程序不終止,默認出錯即停止
  • -f:從文件內讀取信息還原,而不是標准輸入
    還原的DN最好為管理員賬號,至少也要有要LDAP的寫入權限

web管理工具

用了phpldapadmin和ldap-account-management(簡稱lam)兩款web管理工具,強烈推薦lam,所以這里就不介紹其他的了

ldap-account-manager

安裝

1.安裝ldap-account-management

# apt-get install ldap-account-manager

2.瀏覽器訪問

http://ip/lam

配置

lam的所有配置都可以在web端配置,不需要去服務器上修改一行代碼,這個太好用了。

  1. 瀏覽器訪問后進入登錄頁面,我們點擊右上角"LAM configuratrion"來在線編輯配置文件
    image

文章未完,全部內容請關注公眾號【運維咖啡吧】或個人網站https://ops-coffee.cn查看,運維咖啡吧專注於原創精品內容分享,感謝您的支持


掃碼關注公眾號查看更多實用文章

相關文章推薦閱讀:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM