歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 使用OpenLDAP集中管理用戶帳號

使用OpenLDAP集中管理用戶帳號

日期:2017/2/25 10:39:08   编辑:Linux教程
  使用輕量級目錄訪問協議呈現在您的面前。
  LDAP 信息被組織成屬性和值的組合,稱為 條目(entry)。條目可能會具有必須的屬性或可選屬性。一個條目的屬性必須要遵循 /etc/openldap/schema/ 模式文件中定義的規則。規則包含在條目的 objectclass 屬性中。看一下下面的關系,我們可以看出 posixAccount objectclass 中包含了密碼文件條目的信息(posixAccount userPassword 是文件條目的 base64 編碼)。
  圖 1. LDAP 目錄條目和 Linux 密碼文件之間的關系
  文件 /etc/openldap/schema/nis.schema 為 posixAccount 對象類中的條目定義了所有的屬性和 objectclass。例如,下面是對 uidNumber 屬性的描述:
  attributetype ( 1.3.6.1.1.1.1.0 NAME ‘uidNumber‘ DESC ‘An integer uniquely identifying a user in an administrative domain‘ EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )所有的屬性類型都已經定義了,它們被收集到 posixAccount objectclass 中。例如:
  objectclass ( 1.3.6.1.1.1.2.0 NAME ‘posixAccount‘ SUP top AUXILIARY DESC ‘Abstraction of an account with POSIX attributes‘ MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ gecos $ description ) )ldapuser 條目具有一個識別名屬性 dn,它用作用戶名,並與 userPassword 一起用來在 LDAP 目錄中記錄信息,或與 LDAP 目錄綁定在一起使用。
  LDAP 為作為容器使用的特殊條目提供了將這些條目組織成樹結構的功能。在這個例子中,我們將使用一個容器 People 保存用戶帳號信息,使用另外一個容器 Groups 保存組帳號信息。所生成的目錄信息樹如圖 2 所示。
  圖 2. 用戶帳號信息使用的目錄信息樹
  讓我們來看一下如何配置 OpenLDAP 服務器,如何將信息從系統文件遷移到 LDAP 目錄中,如何配置 OpenLDAP 客戶機通過 LDAP 對用戶進行身份驗證。在使用一個集中的身份驗證數據庫時,應該通過使用復制技術采用第二個 LDAP 服務器提供高可用性,這樣在主服務器出現問題時,就可以使用第二個 LDAP 服務器響應客戶機的請求。由於諸如密碼之類的身份驗證數據會通過網絡進行傳輸,因此希望使用 TSL 協議建立加密通信連接。
  我們的 OpenLDAP 服務器和客戶機都是虛擬機,上面運行的是 Red Hat Enterprise Linux AS release 4(Nahant Update 1)。在我們的例子中使用了 表 1 所列出的系統。如果想模仿這些例子,請使用適合您自己的設置。
  表 1. 系統網絡信息
  角色主機名IP 地址OpenLDAP 主服務器dhcp64-233.ibm.com9.47.64.233OpenLDAP 從服務器dhcp64-253.ibm.com9.47.64.253OpenLDAP 客戶機dhcp64-251.ibm.com9.47.64.251
  配置 LDAP 服務器
  我們使用 Red Hat Enterprise Linux release 4 Update 1 上的包來構建服務器:
  openldap-2.2.13-2:包含 OpenLDAP 配置文件、庫和文檔 openldap-servers-2.2.13-2:包含 slapd 和 slurpd 服務器、遷移腳本和相關文件 openldap-clients-2.2.13-2:包含客戶機程序,用來訪問和修改 OpenLDAP 目錄
  OpenLDAP 包在服務器上安裝了很多程序:
  守護進程: slapd:主 LDAP 服務器 slurpd:負責與復制 LDAP 服務器保持同步的服務器 對網絡上的目錄進行操作的客戶機程序。下面這兩個程序是一對兒: ldapadd:打開一個到 LDAP 服務器的連接,綁定、修改或增加條目 ldapsearch:打開一個到 LDAP 服務器的連接,綁定並使用指定的參數進行搜索 對本地系統上的數據庫進行操作的幾個程序: slapadd:將以 LDAP 目錄交換格式(LDIF)指定的條目添加到 LDAP 數據庫中 slapcat:打開 LDAP 數據庫,並將對應的條目輸出為 LDIF 格式
  OpenLDAP 的主要服務器配置文件是 /etc/openldap/slapd.conf。本例所使用的完整 slapd.conf 文件如 清單 18 所示。slapd.conf 文件中包括一系列全局配置選項,它們作為一個整體應用到 slapd 上面,後面是包含數據庫特有信息的數據庫後端定義。如果一行內容是以空格開始的,就認為它是上一行的延續。空行和以 “#” 字符開頭的注釋行都會被忽略。
  如果您正把本文當作練習來做,那就可以按照下面指定的方式進行修改,從而啟動 LDAP 服務器。一旦確認服務器正常工作之後,就可以添加復制功能,然後再添加安全性支持。首先是全局配置信息段的設置。其中每個選項的值都是我們想要的。
  正如上面介紹的一樣,信息被組織成屬性和值的組合,稱為條目。條目屬性必須遵循的規則是使用 objectclass 專用屬性進行組織的,這可以在 /etc/openldap/schema/ 模式文件中找到。對於身份驗證來說,需要使用在 nis.schema 中定義的 posixAccount 和 shadowAccount objectclasses:
  include /etc/openldap/schema/nis.schema
  loglevel 行設置的是日志選項。可以將其設置為這樣的級別:調試語句和操作統計信息都會被記錄到 /var/log/slapd.log 中。日志級別是累加的:296 = 256 日志連接/操作/結果 + 32 搜索過濾器處理 + 8 連接管理:


  loglevel 296
  日志信息會被記錄到 syslogd LOG_LOCAL4 機制中。還需要將下面的內容添加到 /etc/syslog.conf 中,並讓 syslogd 重新讀取自己的配置文件:
  local4.debug /var/log/slapd.log
  access 行定義了誰可以訪問目錄中的內容。我們希望用戶可以修改自己的密碼,並更新自己的 shadow 信息來反映密碼的變化。希望身份驗證程序能夠檢索用戶的密碼。還希望用戶能夠讀取所有其他條目。注意密碼條目是不可讀的,shadow 屬性的惟一用處就是管理密碼的過期問題。
  access to attrs=shadowLastChange,userPasswordby self writeby * authaccess to *by * read接下來,在 database 部分,要定義下面的內容。
  使用新的 bdb 後端數據庫:
  database bdb
  指定後端數據庫需要響應的查詢的 DN 前綴。為了確保惟一性,根前綴應該從自己的網絡域名構建出來。在本例的情況中,它是 .dc=svc,dc=beaverton,dc=ibm,dc=com.,但是在下面的例子中我們對其進行了簡化:
  suffix "dc=ibm,dc=com"
  指定管理 DN,它不用於訪問控制或限制數據庫的操作。也不需要在目錄中為這個 DN 指定一個條目。為具有 rootpw 密碼的管理員使用 DN 可以跳過 ACL 規則中的所有訪問控制:
  rootdn "cn=Manager,dc=ibm,dc=com"rootpw {MD5}ijFYNcSNctBYg
  這就是我們現在想要設置的選項。稍後將返回 slapd.conf 文件來配置復制,然後在配置安全性。
  現在,我們希望將數據添加到目錄中,並確認可以訪問這些信息。要實現這種功能,需要配置服務器來使用 ldap 客戶機工具,例如 ldapadd 和 ldapsearch。ldap 客戶機工具的配置文件是 /etc/openldap/ldap.conf。我們使用的這個文件的完整列表如本文末尾的 清單 19 所示。要在 ldap 服務器上運行這些工具,只需要將該行修改成下面的內容:
  BASE dc=ibm,dc=com
  設置啟動腳本在級別 2、3 和 5 時啟動 LDAP:
  清單 1. 設置啟動運行級別
  # chkconfig --levels 235 ldap on
  從命令行中啟動服務:
  清單 2. 啟動服務
  # service ldap startStarting slapd: [OK]
  OpenLDAP 守護進程 slapd 應該已經運行了:
  清單 3. 檢查服務正在運行
  # ps -ef
Copyright © Linux教程網 All Rights Reserved