OenLDAP 配置记录
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
Create: 2012-12-24
Update: 2012-12-27
參考: http://blog.christophersmart.com/articles/openldap-how-to-fedora/
概述
測試環(huán)境
CentOS 6.3
domain: gdu.me
LDAP server: ldap.gdu.me
配置步驟
安裝軟件包
配置LDAP Server域信息
配置LDAP Server加密(TLS)認(rèn)證
啟動LDAP Server、測試
通過遷移工具導(dǎo)入本地用戶
增加用戶和組(ldif文件)
客戶端LDAP認(rèn)證配置
OpenLDAP Server
OpenLDAP 2.3以后版本有兩種配置方式:
配置文件:舊方式,通過/etc/openldap/slapd.conf配置。
非配置文件:配置存儲在LDAP server中,可動態(tài)更新。在/etc/openldap/sladp.d目錄中配置。
安裝所需軟件包
| 1 2 | yum ? ? install ? ? openldap-servers migrationtools #openssl |
生成管理員密碼串
#slappasswd?-s?123456 #{SSHA}IYj/KpP3SS4Ka3Qcn55hfvMb8Ionc/h8 ?配置文件
刪除配置目錄
如果使用配置文件,需刪除或改名配置目錄(啟動腳本優(yōu)先使用目錄下的配置)。
| 1 | rm ? ? -rf ? ? /etc/openldap/slapd ? ? .d/ |
創(chuàng)建配置文件
| 1 | cp ? ? -a ? ? /usr/share/openldap-servers/slapd ? ? .conf.obsolete ? ? /etc/openldap/slapd ? ? .conf |
修改配置
設(shè)置domain(dc=gdu,dc=me)、admin密碼、密鑰文件路徑信息(注意:有的站點說配置項與配置內(nèi)容間必須用TAB分隔,我沒測試過)。
domain修改修改
直接替換
1 sed ? ? ? -i.bak ? ? ? 's/dc=my-domain,dc=com/dc=gdu,dc=com/g' ? ? ? /etc/openldap/slapd ? ? ? .conf ? ? ? 手工修改
設(shè)置admin密碼、密鑰文件路徑(后續(xù)生成)
| 1 2 3 4 5 | cat?>>?/etc/openldap/slapd.conf?<<EOF rootpw??{SSHA}IYj/KpP3SS4Ka3Qcn55hfvMb8Ionc/h8 TLSCertificateFile??/etc/openldap/ssl/slapdcert.pem TLSCertificateKeyFile???/etc/openldap/ssl/slapdkey.pem EOF ? ? |
非配置文件
通過修改slapd.d目錄下的文件(.ldif),將配置存入LDAP server中(cn=config)。
首先配置的兩個是基礎(chǔ)數(shù)據(jù)庫文件。
bdb.ldif domain修改
| 1 | sed ? ? -i.bak ? ? 's/dc=my-domain,dc=com/dc=gdu,dc=me/g' ? ? /etc/openldap/slapd ? ? .d ? ? /cn ? ? \=config ? ? /olcDatabase ? ? \=\{2\}bdb.ldif |
手工修改
olcRootDN:?dc=gdu,dc=meadmin密碼及密鑰文件路徑
cat?>>?/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif?<<EOF olcRootPW:?{SSHA}IYj/KpP3SS4Ka3Qcn55hfvMb8Ionc/h8 olcTLSCertificateFile:?/etc/openldap/ssl/slapdcert.pem olcTLSCertificateKeyFile:?/etc/openldap/ssl/slapdkey.pem EOF ?monitor.ldif
sed?-i.bak?'s/cn=manager,dc=my-domain,dc=com/cn=Manager,dc=gdu,dc=me/g'?/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif數(shù)據(jù)庫緩存
現(xiàn)在已用配置、或非配置文件方式完成了LDAP配置。復(fù)制DB_CONFIG文件,并設(shè)置使用Berkley數(shù)據(jù)庫。
cp?/usr/share/openldap-servers/DB_CONFIG.example?/var/lib/ldap/DB_CONFIG chown?-Rf?ldap:ldap?/var/lib/ldap/測試配置
slaptest?-u? #config?file?testing?succeeded ?配置文件轉(zhuǎn)為目錄
service?slapd?stop mkdir?-p?/etc/openldap/slapd.d/ rm?-rf?/etc/openldap/slapd.d/* slaptest?-f?/etc/openldap/slapd.conf?-F?/etc/openldap/slapd.d/ chown?ldap.ldap?/etc/openldap/slapd.d/?-R ?配置加密(LDAPS)
為提高使用LDAP認(rèn)證的安全性,配置同時運行LDAP(TLS,tcp:389)和TLS或LDAPS(TLS,tcp:636)。
設(shè)置ldap啟動參數(shù)
1 sed ? ? ? -i.bak ? ? ? 's/\(SLAPD_LDAPS=\).*$/\1yes/g' ? ? ? /etc/sysconfig/ldap ? ? ? 生成SSL密鑰
注意替換按提示輸入的ldap server信息。
mkdir?/etc/openldap/ssl/ openssl?req?-new?-x509?-nodes?-out?/etc/openldap/ssl/slapdcert.pem?-keyout?/etc/openldap/ssl/slapdkey.pem?-days?365#?設(shè)置生成的兩個文件(公鑰、私鑰)ldap用戶可讀 chown?-Rf?root:ldap?/etc/openldap/ssl chmod?-Rf?750?/etc/openldap/ssl chmod?-Rf?640?/etc/openldap/ssl/* ? Generating?a?2048?bit?RSA?private?key....................................................+++writing?new?private?key?to?'/etc/openldap/ssl/slapdkey.pem'-----You?are?about?to?be?asked?to?enter?information?that?will?be?incorporatedinto?your?certificate?request.What?you?are?about?to?enter?is?what?is?called?a?Distinguished?Name?or?a?DN.There?are?quite?a?few?fields?but?you?can?leave?some?blankFor?some?fields?there?will?be?a?default?value,If?you?enter?'.',?the?field?will?be?left?blank.-----Country?Name?(2?letter?code)?[XX]:?CNState?or?Province?Name?(full?name)?[]:?SCLocality?Name?(eg,?city)?[Default?City]:?ChengduOrganization?Name?(eg,?company)?[Default?Company?Ltd]:?GDUOrganizational?Unit?Name?(eg,?section)?[]:?ITCommon?Name?(eg,?your?name?or?your?server's?hostname)?[]:?ldap.gdu.me?Email?Address?[]:?admin@gdu.me啟動LDAP服務(wù)
啟動LDAP服務(wù)
# 啟動服務(wù) service?slapd?start#?檢查服務(wù)偵聽 netstat?-lt?|grep?ldap #tcp??0??0?*:ldap???*:*??LISTEN #tcp??0??0?*:ldaps??*:*??LISTEN#?設(shè)置自啟動 chkconfig?slapd?on#?測試配置 ldapsearch?-x?-b?''?-s?base?'(objectclass=*)'?namingContexts ? #?extended?LDIF # #?LDAPv3 #?base?<>?with?scope?baseObject #?filter:?(objectclass=*) #?requesting:?namingContexts ## dn: namingContexts:?dc=gdu,dc=me#?search?result search:?2 result:?0?Success#?numResponses:?2 #?numEntries:?1配置base domain
LDAP已經(jīng)運行起來,但還沒有任何用戶(People)、組(Group),我們將在后續(xù)添加,現(xiàn)在我們需要設(shè)置base、證書和組文件。
這是使用遷移本地用戶的方式來完成:轉(zhuǎn)換成LDIF文件用于導(dǎo)入LDAP。
我們面要建立base.ldif模板,給我們的目錄(gdu.me)定義基本結(jié)構(gòu)。
建立base.ldif
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 cat ? ? ? > base.ldif <<EOF ? ? ? dn: ? ? ? dc ? ? ? =gdu, ? ? ? dc ? ? ? =me ? ? ? dc ? ? ? : gdu ? ? ? objectClass: ? ? ? top ? ? ? objectClass: domain ? ? ? dn: ou=People, ? ? ? dc ? ? ? =gdu, ? ? ? dc ? ? ? =me ? ? ? ou: People ? ? ? objectClass: ? ? ? top ? ? ? objectClass: organizationalUnit ? ? ? dn: ou=Group, ? ? ? dc ? ? ? =gdu, ? ? ? dc ? ? ? =me ? ? ? ou: Group ? ? ? objectClass: ? ? ? top ? ? ? objectClass: organizationalUnit ? ? ? EOF ? ? ?
注意:換行符差別可能造成導(dǎo)入失敗(從網(wǎng)頁復(fù)制,換行符會出錯)。與migrate_base.pl > base.ldif生成的比較,只有一些換行符差別。
ldapadd:?attributeDescription?"dn":?(possible?missing?newline?after?line?8,?entry?"dc=gdu,dc=m????????????????e"?)導(dǎo)入base.ldif
1 2 3 4 5 ldapadd -x -W -D ? ? ? "cn=Manager,dc=gdu,dc=me" ? ? ? -f . ? ? ? /base ? ? ? .ldif ? ? ? # Enter LDAP Password: ? ? ? # adding new entry "dc=gdu,dc=me" ? ? ? # adding new entry "ou=People,dc=gdu,dc=me" ? ? ? # adding new entry "ou=Group,dc=gdu,dc=me" ? ? ?
If you saw the above, then it worked! If you get an error about authentication issues connecting to my-domain.com then it’s not reading your configuration properly, and is using the default. Stop the service and start again.
遷移本地用戶和組
下面使用遷移工具根據(jù)本地已有用戶和組創(chuàng)建ldif文件,用于導(dǎo)入LDAP。
配置migrate工具
1 vim ? ? ? /usr/share/migrationtools/migrate_common ? ? ? .ph ? ? ?
修改以下內(nèi)容:
#?Default?DNS?domain $DEFAULT_MAIL_DOMAIN?=?"gdu.me";#?Default?base? $DEFAULT_BASE?=?"dc=gdu,dc=me";Users (People)
生成已有用戶ldif文件。
| 1 | /usr/share/migrationtools/migrate_passwd ? ? .pl ? ? /etc/passwd ? ? people.ldif |
編輯people.ldif文件,刪除不需要導(dǎo)入的用戶信息(如:mysql,nobody等等)。
Groups (Group)
生成已有組ldif文件。
| 1 | /usr/share/migrationtools/migrate_group ? ? .pl ? ? /etc/group ? ? group.ldif |
編輯group.ldif文件,刪除不需導(dǎo)入的組信息(似乎保留root,wheel,users就可了)。
導(dǎo)入ldif文件
1 2 ldapadd -x -W -D ? ? ? "cn=Manager,dc=gdu,dc=me" ? ? ? -f group.ldif ? ? ? ldapadd -x -W -D ? ? ? "cn=Manager,dc=gdu,dc=me" ? ? ? -f people.ldif ? ? ? 測試連接LDAP數(shù)據(jù)庫
Enter?LDAP?Password: #?extended?LDIF # #?LDAPv3 #?base?<dc=gdu,dc=me>?with?scope?subtree #?filter:?cn=root #?requesting:?ALL ##?root,?People,?gdu.me dn:?uid=root,ou=People,dc=gdu,dc=me uid:?root cn:?root objectClass:?account objectClass:?posixAccount objectClass:?top objectClass:?shadowAccount userPassword::?e2NyeXB0fSQ2JFdjN..... shadowLastChange:?15663 shadowMin:?0 shadowMax:?99999 shadowWarning:?7 loginShell:?/bin/bash uidNumber:?0 gidNumber:?0 homeDirectory:?/root gecos:?root#?root,?Group,?gdu.me dn:?cn=root,ou=Group,dc=gdu,dc=me objectClass:?posixGroup objectClass:?top cn:?root userPassword::?e2NyeXB0fXg= gidNumber:?0#?search?result search:?2 result:?0?Success#?numResponses:?3 #?numEntries:?21 2 ldapsearch -xWD ? ? ? "cn=Manager,dc=gdu,dc=me" ? ? ? -b ? ? ? "dc=gdu,dc=me" ? ? ? "cn=root" ? ? ? ldapsearch -x -b ? ? ? 'dc=gdu,dc=me' ? ? ? 'cn=yuanxing' ? ? ?
添加用戶和組
創(chuàng)建用戶、組ldif文件,導(dǎo)入LDAP。
User
創(chuàng)建username.ldif文件(如yuanxing.ldif):
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | cat ? ? > yuanxing.ldif <<EOF dn: uid=yuanxing,ou=People, ? ? dc ? ? =gdu, ? ? dc ? ? =me uid: yuanxing cn: YuanXing objectClass: account objectClass: posixAccount objectClass: ? ? top objectClass: shadowAccount userPassword: {CRYPT}cr7JQsCc2EcXg shadowLastChange: 14846 shadowMax: 99999 shadowWarning: 7 loginShell: ? ? /bin/bash uidNumber: 501 gidNumber: 501 homeDirectory: ? ? /home/yuanxing gecos: YuanXing EOF |
UserPassword可用下面的命令生成加密串:
| 1 2 | slappasswd -c crypt -s 111111 {CRYPT}cr7JQsCc2EcXg |
Group
創(chuàng)建username.ldif文件(如yuanxing-group.ldif):
| 1 2 3 4 5 6 7 8 | cat ? ? > yuanxing-group.ldif <<EOF dn: cn=yuanxing,ou=Group, ? ? dc ? ? =gdu, ? ? dc ? ? =me objectClass: posixGroup objectClass: ? ? top cn: yuanxing userPassword: {crypt}x gidNumber: 501 EOF |
導(dǎo)入LDAP
1 2 3 4 5 6 7 ldapadd -x -W -D ? ? ? "cn=Manager,dc=gdu,dc=me" ? ? ? -f yuanxing-group.ldif ? ? ? #Enter LDAP Password: ? ? ? #adding new entry "cn=yuanxing,ou=Group,dc=gdu,dc=me" ? ? ? ldapadd -x -W -D ? ? ? "cn=Manager,dc=gdu,dc=me" ? ? ? -f yuanxing.ldif ? ? ? #Enter LDAP Password: ? ? ? #adding new entry "uid=yuanxing,ou=People,dc=gdu,dc=me" ? ? ?
客戶端配置
認(rèn)證配置
LDAP服務(wù)端運行正常,現(xiàn)在可以配置客戶機通過LDAP進行認(rèn)證。
設(shè)置DNS或host
192.168.56.101?ldap.gdu.me安裝軟件包
1 yum ? ? ? install ? ? ? openldap-clients nss-pam-ldapd pam_ldap ? ? ?
CentOS/Fedora主機,使用authconfig-gtk或authconfig-tui(authconfig好像可以通過命令行參數(shù)完成?),并做如下設(shè)置:
證書文件
將slapdcert.pem文件上傳到/etc/openldap/cacerts目錄。
設(shè)置認(rèn)證方式
???┌────────────────┤?Authentication?Configuration?├─────────────────┐│?????????????????????????????????????????????????????????????????││??User?Information????????Authentication?????????????????????????││??[?]?Cache?Information???[*]?Use?MD5?Passwords??????????????????││??[*]?Use?LDAP????????????[*]?Use?Shadow?Passwords???????????????││??[?]?Use?NIS?????????????[*]?Use?LDAP?Authentication????????????││??[?]?Use?IPAv2???????????[?]?Use?Kerberos???????????????????????││??[?]?Use?Winbind?????????[?]?Use?Fingerprint?reader?????????????││??????????????????????????[?]?Use?Winbind?Authentication?????????││??????????????????????????[*]?Local?authorization?is?sufficient??│└─────────────────────────────────────────────────────────────────┘?
1 yum ? ? ? install ? ? ? nss-pam-ldapd pam_ldap ? ? ? 設(shè)置LDAP Server信息
???┌─────────────────┤?LDAP?Settings?├─────────────────┐│???????????????????????????????????????????????????││??????????[*]?Use?TLS??????????????????????????????││??Server:?ldaps://ldap.gdu.me/____________________?││?Base?DN:?dc=gdu,dc=me____________________________?││???????????????????????????????????????????????????│└───────────────────────────────────────────────────┘
配置完成后,會啟動nslcd服務(wù)進程(nslcd - local LDAP name service daemon)。
測試ldap查詢
1 2 3 ldapsearch -xWD ? ? ? "cn=Manager,dc=gdu,dc=me" ? ? ? -b ? ? ? "dc=gdu,dc=me" ? ? ? "cn=root" ? ? ? ldapsearch -x -b ? ? ? 'dc=gdu,dc=me' ? ? ? 'cn=yuanxing' ? ? ? getent ? ? ? passwd ? ? ? | ? ? ? grep ? ? ? yuanxing ? ? ?
如果沒有返回信息,或返回錯誤,請檢查配置,重新進行測試。如果檢查配置沒有錯誤,可以做如下修改,重新進行測試。 將/etc/sssd/sssd.conf文件中的#enumerate=false,修改為:enumerate=true,這樣修改完后,getent就會從LDAP查找賬戶信息。 并重新執(zhí)行如下命令:service sssd restart
測試登錄
成功登錄后提示無home目錄,需后續(xù)設(shè)置登錄時自動創(chuàng)建目錄、或通過autofs自動mountNFS目錄。
No?directory?/home/yuanxing! Logging?in?with?home?=?"/".TLS方式失敗,原因待查
LDAP以TLS方式運行時,執(zhí)行登錄后,LDAP服務(wù)端slapd進程CPU占用達(dá)90%以上,日志中無相應(yīng)信息,原因待查。
客戶快速配置
參考: http://myhat.blog.51cto.com/391263/972870
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/bin/bash chmod ? ? 755 ? ? /var/log/audit grep ? ? "192.168.56.101" ? ? /etc/hosts ? ? || ? ? echo ? ? "192.168.56.101?? ldap.gdu.me"? ? ? >> ? ? /etc/hosts grep ? ? "192.168.56.102" ? ? /etc/hosts ? ? || ? ? echo ? ? "192.168.56.102?? ldap.gdu.me"? ? ? >> ? ? /etc/hosts grep ? ? SUDOERS ? ? /etc/openldap/ldap ? ? .conf || ? ? echo ? ? "SUDOERS_BASE ou=SUDOers,dc=gdu,dc=me"? ? ? >> ? ? /etc/openldap/ldap ? ? .conf grep ? ? sudoers ? ? /etc/nsswitch ? ? .conf || ? ? echo ? ? "sudoers:??? ldap"? ? ? >> ? ? /etc/nsswitch ? ? .conf test ? ? -e ? ? /etc/openldap/cacerts/ca ? ? .pem || wget http: ? ? //192 ? ? .168.56.101 ? ? /config/ca ? ? .pem -P ? ? /etc/openldap/cacerts/ authconfig --useshadow --usemd5 --enableldap --enableldapauth --enableldaptls --ldapserver=ldap.gdu.me \ --ldapbasedn= ? ? "dc=gdu,dc=me" ? ? --ldaploadcacert= ? ? file ? ? : ? ? ///etc/openldap/cacerts/ca ? ? .pem --enablemkhomedir --updateall grep ? ? "sbin" ? ? /etc/skel/ ? ? .bashrc || ? ? echo ? ? -e ? ? 'PATH=$PATH:/sbin:/usr/local/sbin:/usr/kerberos/sbin;\nexport PATH' ? ? >> ? ? /etc/skel/ ? ? .bashrc |
自動創(chuàng)建HOME
對于ldap認(rèn)證的用戶,通常需要自動創(chuàng)建他們的HOME目錄,好在pam模塊pam_mkhomedir.so解決了這一問題,只要把下面內(nèi)容添加到/etc/pam.d/system-auth的session部分的第一行即可:
session?required?pam_mkhomedir.so?skel=/etc/skel/?umask=0066但如果沒在sshd_config里啟用pam,則通過ssh登錄的用戶沒機會運行這個模塊。因此,需要如下設(shè)置sshd_config:
UsePAM?yes開啟日志
LDAP服務(wù)器需要手動添加日志功能。/etc/openldap/slapd.conf中末行添加
loglevel?296local4.* /var/log/ldap.log (說明:local0-7為syslog的facilities,具體的程序應(yīng)用的facility不一樣,每一個facility都有它的數(shù)字代碼,由 這些代碼加上錯誤信息的程度syslog可以判斷出信息的優(yōu)先權(quán)。就上例來說,local7的代碼為23,notice的代碼為5,那么 local7.notice的信息優(yōu)先權(quán)為:23*8+5=189。這是/var/adm/messages.T3是信息的優(yōu)先僅。具體可以查 RFC3164。我自己認(rèn)為設(shè)定local7而不用local5是由應(yīng)用程序決定的。)
這是一個比較詳細(xì)的日志級別。同時在/etc/syslog.conf中添加local4.* /var/log/ldap.log 確定LDAP服務(wù)器的日志位置。
用如下命令使日志功能生效:
service syslog restart
轉(zhuǎn)載于:https://my.oschina.net/badboy2/blog/464517
總結(jié)
以上是生活随笔為你收集整理的OenLDAP 配置记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode:Plus One
- 下一篇: java多线程 ThreadPoolEx