openLDAP(LDAP/ Lightweight Directory access protocol,輕量級目錄存取協定),同微軟赫赫有名的Active Directory都可以用來作為目錄存取管理的服務,只是微軟的AD要錢,而Linux的openLDAP不用錢,本文將以辦公室Windows網路共用槽為例,說明資訊人員如何建置openLDAP來串接Synology NAS的帳戶群組、以GUI介面
來管理openLDAP資料並讓用戶透過單一Web頁面對自身帳戶進行密碼修改。
lDAP Server端設定
CentOS 7.6x64 minimal環境下安裝 openLDAP套件
[root@server ~]# yum install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel
啟動slapd服務、設置為開機時啟動並檢查tcp 389埠號是否確實被slapd監聽
[root@server ~]# systemctl start slapd.service
[root@server ~]# systemctl enable slapd.service
[root@server ~]# netstat -tulnp | grep -i 389
將域名寫入hosts,本例為tomy168.com(請變更為您所使用的網域)
[root@server ~]# echo "192.168.88.14 tomy168.com" >> /etc/hosts
設置slapd管理密碼,本例為mypassword,隨後系統會返還一組加密後的雜湊字串,我們需要記住這組字串,下一步的設定會用到
[root@server ~]# slappasswd -h {SSHA} -s mypassword
{SSHA}6s2Q24/0ZMq5FK0cFUiqaf4rOeY8P2q7
編輯slapd設定檔
[root@server ~]# nano /etc/openldap/slapd.d/db.ldif
dc部分改為你欲使用的網域(本例為tomy168.com),最後一行貼上上述的加密雜湊字串
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=tomy168,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=tomy168,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}6s2Q24/0ZMq5FK0cFUiqaf4rOeY8P2q7
將db.ldif資料匯入openLDAP伺服器
[root@server ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/slapd.d/db.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
編輯monitor.ldif
[root@server ~]# nano /etc/openldap/slapd.d/monitor.ldif
紅字的部分為ldap的管理者名稱,需設定對齊db.ldif
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=ldapadm,dc=tomy168,dc=com" read by * none
將monitor.ldif資料匯入openLDAP伺服器
[root@server ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f/etc/openldap/slapd.d/monitor.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"
將範本的資料庫設置檔複製到 /var/lib/ldap 並更新此目錄權限
[root@server ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@OpenLDAP ~]# chown ldap:ldap /var/lib/ldap/*
為了讓LDAP支援Samba的schema我們需要先安裝相關套件,此處我的Samba版本為4.8.3,請以你當下安裝的版本來替換拷貝的路徑
[root@server ~]# yum install samba samba-common
[root@server ~]# cp /usr/share/doc/samba-4.8.3/LDAP/samba.ldif /etc/openldap/schema/
[root@server ~]# cp /usr/share/doc/samba-4.8.3/LDAP/samba.schema /etc/openldap/schema/
匯入各種schema到openLDAP伺服器
[root@server ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
[root@server ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
[root@server ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
[root@server ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/samba.ldif
[root@server ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
現在萬事俱備只欠資料,為我們的openLDAP建立一個基本的人員群組的OU與LDAP資料
[root@server ~]# nano /etc/openldap/slapd.d/base.ldif
以下可依照你的需求設置,或是先建立一組最基本的人員群組OU資料,日後可以用GUI管理工具再來增建其內容,以下的設置分別是網域名稱、管理者名稱、People OU未來將存放user帳戶,以及Group OU未來將存放group群組
dn: dc=tomy168,dc=com
dc: tomy168
objectClass: top
objectClass: domain
dn: cn=ldapadm ,dc=tomy168,dc=com
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager
dn: ou=People,dc=tomy168,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=tomy168,dc=com
objectClass: organizationalUnit
ou: Group
匯入相關基本資料到openLDAP伺服器
[root@server ~]# ldapadd -x -W -D "cn=ldapadm,dc=tomy168,dc=com" -f /etc/openldap/slapd.d/base.ldif
Enter LDAP Password:
adding new entry "dc=tomy168,dc=com"
adding new entry "cn=ldapadm ,dc=tomy168,dc=com"
adding new entry "ou=People,dc=tomy168,dc=com"
adding new entry "ou=Group,dc=tomy168,dc=com"
將openLDAP的日誌加入到syslog中
[root@server ~]# nano /etc/rsyslog.conf
找到boot.log後貼上紅字部分即可
# Save boot messages also to boot.log
local7.* /var/log/boot.log
# OpenLDAP log
local4.* /var/log/ldap.log
重啟syslog服務
[root@server ~]# systemctl restart rsyslog
最後確認一下slapd的各項設置是否正確可行
[root@server ~]# slaptest -u
config file testing succeeded
LDAP Admin 管理者GUI軟體
LDAP Admin是一款Windows平台下的LDAP GUI管理工具,對於企業中的IT人員來說自然是方便許多,首先前往 LDAP Admin 官網下載 LDAP GUI 管理軟體
解壓後直接執行LdapAdmin.exe
建立欲管理的LDAP伺服器
填入相關資料後連接它
可以看到當時我們在base.ldif中所建立的基本資料,此時先對People容器中按右鍵 New 建立第一位 User,下方記得打勾該帳號才能支援Samba或類Unix系統的串接
Samba頁籤處需指定網域
Bussiness頁籤處須填入該用戶附屬於此網域的mail,未來openLDAP在串接如GMAIL時帳戶才能對應上,也建議資訊人員應盡可能填寫此頁面的人員相關資料以便日後的行政或人事管理
Membership部分若已經建立群組的話便可以在此處進行分配,我們先按下方OK結束人員帳戶的創建,並對人員設置初始密碼,Encryption method建議選擇SHA1並將Posix password與samba password都打勾
接著到Group容器中按右鍵替組織中的人員建立群組(如資訊部、人事部等)
然後將先前所建立的人員加入這個新群組之中,如此一來帳戶管理最基本的人員與群組便設置完成了
openLDAP串接Synology NAS
辦公室最常使用的 Windows連線網路磁碟機功能也沒問題
使用者自助密碼服務
從openLDAP伺服器架設、IT管理人員的LDAP GUI工具使用到終端用戶能以一組帳密使用各種服務,雖然IT管理者可以透過LDAP GUI工具協助用戶變更密碼,但始終不如給予用戶自行變更密碼來得方便有效率,因此我們還需要一個平易近人的工具讓用戶能輕易的操作自身LDAP帳號密碼的變更,這裡我們選擇的是「Self Service Password」這個網頁版工具
LDAP Server端添加ltb-project的yum源
[root@server ~]# nano /etc/yum.repos.d/ltb-project.repo
安裝Self Service Password
[root@server ~]# yum install self-service-password
設置 Self Service Password的設定檔,最後一行可以輸入你的網域或是任意字串
[root@server ~]# nano /usr/share/self-service-password/conf/config.inc.php
[root@server ~]# firewall-cmd --permanent --add-service=http [root@server ~]# firewall-cmd --reload [root@server ~]# setenforce 0 [root@server ~]# systemctl start httpd [root@server ~]# systemctl enable httpd
記得編輯 /etc/sysconfig/selinux、註解SELINUX=enforceing並新增加SELINUX=disabled日後用戶想要更改密碼時便可以自助完成囉!
Self-Service-Password預設為簡體中文顯示,可至 /usr/share/self-service-password/lang/zh-CN.inc.php 語系檔將變數內容修改為繁體中文。
頁面的 header logo可藉由覆蓋 /usr/share/self-service-password/images/ltb-logo.png 來替換為公司所屬 logo(建議為去背的透明背景圖),以提升公司內部資訊系統的整體性。
這篇含金量滿高的, 給推
回覆刪除謝謝支持唷!
刪除請問我在創建使用者的步驟,Samba設定選取不到Domain會是什麼問題?
回覆刪除請問可以新增TLS的教學嗎?謝謝
回覆刪除目前重心放在雲端運維的技術學習,短期內不會再做MIS相關的技術分享囉
刪除