網頁

2017年5月12日 星期五

CentOS7 架設 LDAP Server 流程

弄了好幾天了,總算把LDAP Server架起來了。
網路上的講義與資料都有不同的陷阱,白忙好久。
又找不到人問~心好冷。
原來我都是在本機VMCentOS測試,沒有DNS網域指定,一直到登入那關就卡住了。
今天一橫,把LDAP Server 改架在有DNS的主機,終於一次OK
這種障礙突破,總是會讓人特別開心!^_^

整理一下指令方便自己以後參考:

資料來源:臺中市105年度中小學學務系統升級暨資安建置研習手冊(沈俊達)



說明 LDAP 架構
嘗試規劃完整LDAP組織圖,這裡會說明一些LDAP的設計方式及表示法

LDAP架構圖





這裡說明一下 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類似,由小排大

這個部分依照需求設定的,哆啦胖虎大的設定為一個通用的設定哦!
註:其實整個目錄樹並不一定需要這麼長,其中OU的部分只是在做組織分類,如果是一家大公司分為這麼多部門,這麼做可以清楚分類,如果只是小公司(10人以下)或是測試用,大可不設OU直接就設CN,也就是這麼設定 cn=username, dc=mp,dc=nttu,dc=edu,dc=tw,其實整個DN只要能有效區別唯一性,就可以了。


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
(從剛剛記事本那邊貼過來)
五、                 轉換組態檔並測試
1.           轉換設定
  /usr/libexec/openldap/convert-config.sh
2.           把設定轉入資料庫
  head -20 /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{[12]*
==> /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif <==
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 1cdd9d60
dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" read by dn.base="cn=Manager,dc=mp,dc=nttu,dc=edu,dc=tw" read by
  * none
structuralObjectClass: olcDatabaseConfig
entryUUID: 7a1a178e-ce3e-1036-8d22-af0534dc4135
creatorsName: cn=config
createTimestamp: 20170516044714Z
entryCSN: 20170516044714.919990Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20170516044714Z

==> /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif <==
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 411b432b
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=mp,dc=nttu,dc=edu,dc=tw
olcRootDN: cn=Manager,dc=mp,dc=nttu,dc=edu,dc=tw
olcRootPW:: e1NTSEF9U01UZDZHMzFiRXRWVEViN1FWTXY3NFlXUDFrVzFpY04=
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 7a1a1fa4-ce3e-1036-8d23-af0534dc4135
creatorsName: cn=config
createTimestamp: 20170516044714Z
entryCSN: 20170516044714.920198Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20170516044714Z
3.           測試 LDAP 設定檔是否正常
  slaptest -u
config file testing succeeded
顯示上面這行代表正常
六、                清除資料庫範例檔,複製資料庫預設設定檔
1.           清除資料庫範例檔
  rm -rvf /var/lib/ldap/*
2.           複製資料庫預設設定檔
  cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
3.           清除 certs 資料夾
  rm -rvf /etc/openldap/certs
4.           建立 certs 資料夾
  mkdir /etc/openldap/certs
5.           建立 certs DB 資料
  /usr/libexec/openldap/create-certdb.sh
Creating certificate database in '/etc/openldap/certs'.
  /usr/libexec/openldap/generate-server-cert.sh
Creating new server certificate in '/etc/openldap/certs'.
七、                變更權限並啟動LDAP
1.           變更目錄權限
  chown ldap:ldap -R /var/lib/ldap/
2.           啟動LDAP
  systemctl start slapd
八、                測試
1.           測試LDAP
  slaptest
config file testing succeeded
九、                 新增到開機啟動及開通防火牆
1.           新增到開機啟動
  systemctl enable slapd
2.           新增防火牆通道
  firewall-cmd --permanent --zone=public --add-port=389/tcp
  firewall-cmd --reload
十、                 設定管理者及密碼
  ldapwhoami -WD cn=Manager,dc=mp,dc=nttu,dc=edu,dc=tw
Enter LDAP Password:
dn:cn=Manager,dc=nttu,dc=edu,dc=tw
2.           新增 schema
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
  ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
3.           編輯 網域資料
  nano domain.ldif
dn: dc=mp,dc=nttu,dc=edu,dc=tw
objectClass: dcObject
objectclass: organization
dc: mp
o: mp

dn: ou=teacher,dc=mp,dc=nttu,dc=edu,dc=tw
objectClass: organizationalUnit
ou: teacher
description: teachers account

dn: ou=student,dc=mp,dc=nttu,dc=edu,dc=tw
objectClass: organizationalUnit
ou: student
description: students account
 (注意上面的句子一定要分成三段,從講義直接貼出來沒有分段會有錯誤)
十一、        新增一筆網域資料,兩筆帳號資料
  ldapadd -D cn=Manager,dc=mp,dc=nttu,dc=edu,dc=tw -W -f domain.ldif
Enter LDAP Password:
adding new entry "dc=tjes,dc=tc,dc=edu,dc=tw"
adding new entry "ou=teacher,dc=tjes,dc=tc,dc=edu,dc=tw"
adding new entry "ou=student,dc=tjes,dc=tc,dc=edu,dc=tw"
十二、         安裝phpldapadmin
  yum install phpldapadmin
2.           編輯 phpldapadmin 環境設定檔
  vi /etc/phpldapadmin/config.php
3.           設定 vi 顯示行號
:set number
(顯示行號)
4.           (找到397行改下面這樣)
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');
5.           編輯 phpldapadmin 程式設定檔
  vi /etc/httpd/conf.d/phpldapadmin.conf
<Directory /usr/share/phpldapadmin/htdocs>
<IfModule mod_authz_core.c>
# Apache 2.4
Require local
Require ip 163.17.233.0/24
(Require local之後加入上面這行,這是限制只有指定的ip可以存取phpldapadmin
(突然覺得phpmysqladmin也該這樣)
6.           重新啟動 apache
  systemctl start httpd
7.            設定 apache 開機啟動
  systemctl enable httpd
8.            設定 80防火牆通道
  firewall-cmd --permanent --zone=public --add-port=80/tcp
  firewall-cmd --reload
  firewall-cmd --list-all
9.            
  vi /etc/httpd/conf.d/phpldapadmin.conf
10.        
11.       登入 http://ldap-server-ip/phpldapadmin
12.        
13.       帳號: cn=Manager,dc=nttu,dc=edu,dc=tw
14.        
15.       (登入如出現密碼錯誤,請確認是否密碼句尾有空白字元,是的話要可能得從前面步驟再來一次)
16.        
17.       到這邊ldap server部分就ok
十三、         CentOS 用到指令
1.           nano
2.           pwd 取得目前目錄名稱(有可能是連結)
3.           pwd –P 取得正確的目錄名稱
4.           cd
5.           yum
6.           rm
7.           mkdir
8.           cp
9.           tail
10.       vi
11.       vim
12.       systemctl (start/restart/stop)
13.       firewall-cmd
  firewall-cmd --permanent --zone=public --add-port=389/tcp
  firewall-cmd --reload
14.       wget
15.       unzip
16.       chown


17.       rpm -qa |grep 'openldap*'
18.          find / | grep slapd.conf


詳細教學:
子儀大的文章 http://www.l-penguin.idv.tw/article/ldap-1.htm
官方說明文件 http://www.openldap.org/doc/admin24/quickstart.html
哆啦胖虎的文章 http://iori.tw/ldap%E5%9F%BA%E6%9C%AC%E5%AE%89%E8%A3%9D%E5%8F%8A%E6%95%B4%E5%90%88%E7%99%BB%E5%85%A5%E8%AA%8D%E8%AD%89%E6%A9%9F%E5%88%B6%E7%9A%84%E6%9E%B6%E8%A8%AD-on-centos-6-2_x64/
文章中有詳細的說明
不自量力大的文章 http://www.weithenn.org/cgi-bin/wiki.pl?OpenLDAP-LDAP_Server_%E5%9F%BA%E7%A4%8E%E8%A8%AD%E5%AE%9A










沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。