成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Kerberos+LDAP+NFSv4怎樣實(shí)現(xiàn)單點(diǎn)登錄-創(chuàng)新互聯(lián)

Kerberos+LDAP+NFSv4怎樣實(shí)現(xiàn)單點(diǎn)登錄,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、五指山網(wǎng)絡(luò)推廣、成都小程序開(kāi)發(fā)、五指山網(wǎng)絡(luò)營(yíng)銷、五指山企業(yè)策劃、五指山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供五指山建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:jinyejixie.com

Kerberos+LDAP+NFSv4 實(shí)現(xiàn)單點(diǎn)登錄

六.nfs客戶機(jī)的安裝
nfs客戶機(jī)也即SSSD客戶機(jī),需安裝sssd和nfs-common

1.安裝sssd
會(huì)自動(dòng)安裝libsasl2-modules-gssapi-mit(非依賴)
libsasl2-modules-gssapi-mit和libsasl2-modules-gssapi-heimdal兩者沖突,安裝libsasl2-modules-gssapi-heimdal也可以

root@debian:~# apt-get install sssd sssd-krb5 sssd-ldap libsasl2-modules-gssapi-heimdal

安裝后的sssd.conf是空白文件,nsswitch.conf沒(méi)改變

root@debian:~# ls -l /etc/sssd/sssd.conf
-rw------- 1 root root 1938 Jun 10 11:18 /etc/sssd/sssd.conf

僅擁有者可讀(SSSD文檔要求sssd.conf僅root根用戶可讀寫,否則無(wú)法啟動(dòng)sssd)

修改配置文件sssd.conf、nsswitch.conf

1)查看sssd.conf
root@debian:~# cat /etc/sssd/sssd.conf
[sssd]
config_file_version = 2

services = nss, pam
domains = intern

[nss]

[pam]

[domain/intern]

#--v-- unix用戶信息由LDAP提供
id_provider = ldap
#--^--

#--v-- 用戶認(rèn)證及密碼修改由Kerberos提供
auth_provider = krb5
chpass_provider = krb5
#--^--

ldap_uri = ldap://192.168.1.101
ldap_search_base = ou=hdkrb5,dc=ctp,dc=net
ldap_tls_reqcert = allow

krb5_server = 192.168.1.101
krb5_realm = CTP.NET

#--v-- 有的環(huán)境不設(shè)總無(wú)法認(rèn)證,應(yīng)該密碼認(rèn)證要很長(zhǎng)時(shí)間,需設(shè)超時(shí)時(shí)間大一點(diǎn)
krb5_auth_timeout = 60
#--^--
root@debian:~#

2)查看nsswitch.conf
root@debian:~# cat /etc/nsswitch.conf
passwd:     files sss
group:      files sss
shadow:     files sss

gshadow:     files

hosts:      files mdns4_minimal [NOTFOUND=return] dns
networks:    files

protocols:    db files
services:    db files sss
ethers:     db files
rpc:       db files

netgroup:    nis sss
sudoers:     files sss

root@debian:~#
即將原來(lái)的compat改為files sss

3)安裝sssd時(shí)自動(dòng)設(shè)置/etc/pam.d/
linlin@debian:~$ cat /etc/pam.d/common-session-noninteractive
session   [default=1]       pam_permit.so
session   requisite       pam_deny.so
session   required       pam_permit.so
session   required   pam_unix.so
session   optional       pam_umask.so umask=002

linlin@debian:~$
linlin@debian:~$ cat /etc/pam.d/common-session

session   [default=1]       pam_permit.so
session   requisite       pam_deny.so
session   required       pam_permit.so
session   required   pam_unix.so
session   optional       pam_sss.so
session   optional   pam_systemd.so
session   optional       pam_umask.so umask=002

linlin@debian:~$
linlin@debian:~$ cat /etc/pam.d/common-password

password   requisite       pam_pwquality.so retry=3
password   [success=2 default=ignore]   pam_unix.so obscure use_authtok try_first_pass sha512
password   sufficient       pam_sss.so use_authtok
password   requisite       pam_deny.so
password   required       pam_permit.so
password   optional   pam_gnome_keyring.so

linlin@debian:~$
linlin@debian:~$ cat /etc/pam.d/common-auth

auth   [success=2 default=ignore]   pam_unix.so nullok_secure
auth   [success=1 default=ignore]   pam_sss.so use_first_pass
auth   requisite       pam_deny.so
auth   required       pam_permit.so
auth   optional       pam_group.so

linlin@debian:~$
linlin@debian:~$ cat /etc/pam.d/common-account

account   [success=1 new_authtok_reqd=done default=ignore]   pam_unix.so
account   requisite       pam_deny.so
account   required       pam_permit.so
account   sufficient       pam_localuser.so
account   [default=bad success=ok user_unknown=ignore]   pam_sss.so
linlin@debian:~$

4)重啟sssd

root@debian:~# /etc/init.d/sssd stop
root@debian:~# /etc/init.d/sssd start

5)測(cè)試
linlin@debian:~$ kpasswd krblinlin
krblinlin@CTP.NET's Password:
New password for krblinlin@CTP.NET:
Verify password - New password for krblinlin@CTP.NET:
Success : Password changed

linlin@debian:~$

linlin@debian:~$ su krblinlin
Password:
krblinlin@debian:/home/linlin$

krblinlin@debian:/home/linlin$ passwd

Current Password:
New password:
BAD PASSWORD: The password is shorter than 8 characters
New password:
Retype new password:
passwd: password updated successfully  要很長(zhǎng)時(shí)間
krblinlin@debian:/home/linlin$

登錄成功,修改密碼命令kpasswd、passwd都成功.注意密碼是Kerberos密碼,非LDAP密碼

但某些環(huán)境存在一個(gè)問(wèn)題,當(dāng)kdc服務(wù)器重啟,SSSD客戶機(jī)無(wú)法登錄,需手工在kdc服務(wù)器上重啟守護(hù)進(jìn)程heimdal-kdc,還找不到原因.而另試另外環(huán)境很正常

2.安裝nfs-common
root@debian:~# apt-get install nfs-common

修改/etc/default/nfs-common文件

NEED_GSSD=
改為
NEED_GSSD="yes"

root@debian:~# /etc/init.d/nfs-common stop
root@debian:~# /etc/init.d/nfs-common start

root@debian:~# ps -e |grep gss
1027 ?     00:00:00 rpc.gssd

1)掛載網(wǎng)絡(luò)共享
手工掛載

root@debian:~# mount -t nfs4 srvnf.ctp.net:/home/linlin/share /mnt -o sec=krb5

添加到/etc/fstab,一開(kāi)機(jī)掛載網(wǎng)絡(luò)共享
root@debian:~# cat /etc/fstab
UUID=c992cbf5-3eca-4434-baf9-b5a3180acdbb /        ext4   errors=remount-ro 0    1
#swap was on /dev/sda5 during installation
UUID=854aa36b-6ce5-436d-91fa-50aa10e8338c none       swap   sw        0    0
/dev/sr0     /media/cdrom0  udf,iso9660 user,noauto   0    0

#添加網(wǎng)絡(luò)共享
srvnf.ctp.net:/home/linlin/share  /mnt nfs4 rw,sec=krb5
root@debian:~#

2)查看掛載信息
linlin@debian:~$ mount|grep nfs
srvnf.ctp.net:/home/linlin/share on /mnt type nfs4 (rw,relatime,vers=4.0,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=krb5,clientaddr=192.168.1.102,local_lock=none,addr=192.168.1.103)

3)測(cè)試寫網(wǎng)絡(luò)共享

root@debian:~# ls -ld /mnt
drwxr-xr-x 2 krblinlin 4001 4096 Sep 18 09:13 /mnt
root@debian:~#

可看到已獲取顯示ldap用戶信息,krblinlin為ldap用戶

在普通本地用戶下
linlin@debian:~$ su krblinlin
Password:
或控制臺(tái)直接登錄
debian login: krblinlin
Password:

krblinlin@debian:/home/linlin$ cd /mnt
krblinlin@debian:/mnt$ touch a.txt
krblinlin@debian:/mnt$ ls
a.txt
krblinlin@debian:/mnt$

寫成功

root@debian:~# ps -e |grep idmapd
  533 ?        00:00:00 rpc.idmapd

至此,以LDAP作為存儲(chǔ)用戶信息,以Kerberos作為身份認(rèn)證,SSSD客戶機(jī)已成功訪問(wèn)讀寫NFSv4服務(wù)器網(wǎng)絡(luò)共享

七.后記
本文的目的是要打造一個(gè)類似FreeIPA、AD活動(dòng)目錄,而完善的Kerberos系統(tǒng)還需DNS、DHCP配合,所以本文也僅僅實(shí)驗(yàn)而已.

實(shí)現(xiàn)單點(diǎn)登錄的方案多種多樣.LDAP同時(shí)也提供簡(jiǎn)單用戶認(rèn)證,如果不需應(yīng)用NFSv4或NFSv4采用弱的系統(tǒng)認(rèn)證,無(wú)需搭建Kerberos,僅LDAP就可滿足單點(diǎn)登錄;而samba4可輕松打造一個(gè)linux下的活動(dòng)目錄.

1.
Kerberos系統(tǒng)最初由麻省理工開(kāi)發(fā),即MIT Kerberos項(xiàng)目 ( http://web.mit.edu/kerberos/ ),當(dāng)前很活躍
另一Kerberos系統(tǒng)即本文的Heimdal Kerberos項(xiàng)目( http://www.h6l.org/ ).

為何本文選Heimdal而不選MIT,前文已講過(guò),一是使用LDAP作為Kerberos后端,二是避免存儲(chǔ)明文的ldap數(shù)據(jù)庫(kù)管理員密碼.
1)MIT通過(guò)插件支持LDAP作為后端,文檔也說(shuō)明支持EXTERNAL,但我搞不掂配置怎支持EXTERNAL,查看源碼也看不出頭緒
st = ldap_sasl_interactive_bind_s(server->ldap_handle, NULL,ctx->sasl_mech, NULL, NULL,LDAP_SASL_QUIET, interact, ctx);
通過(guò)配置文件將"EXTERNAL"傳遞到ctx->sasl_mech

查找了資料好象ldap_sasl_interactive_bind_s 使用 EXTERNAL 之前要先ldap_get_option有關(guān)LDAP_OPT_X_SASL_AUTHZID,雖MIT源碼有l(wèi)dap_get_option,但里邊是幾個(gè)寫死的LDAP_OPT_xxxx,與認(rèn)證無(wú)關(guān),也沒(méi)找到和SASL相關(guān)

2)Heimdal內(nèi)置支持LDAP作為后端,缺省支持EXTERNAL,查看源碼簡(jiǎn)單明了
rc = ldap_sasl_bind_s(HDB2LDAP(db), NULL, "EXTERNAL", &bv,NULL, NULL, NULL);

3)openldap的同步密碼插件只支持Heimdal

2.openldap同步密碼
當(dāng)有時(shí)以Kerberos登錄,有時(shí)要以LDAP登錄,要維護(hù)記住兩套密碼是麻煩的事情.有3種方法可只使用一個(gè)密碼

方法1:
使用{SASL}方式,需配置如下面

root@debian:~# cat /etc/sasl2/slapd.conf
pwcheck_method: saslauthd
root@debian:~#

userPassword屬性填上固定值{SASL}
此方法是搜索網(wǎng)上的方法,本人未試過(guò).

方法2和方法3:安裝openldap的同步密碼插件slapd-smbk5pwd

方法2:
userPassword屬性填上固定值{K5KEY}
方法2和方法1都要注意不要改動(dòng)到userPassword屬性的值,并且修改密碼只能用Kerberos方式

方法3:
修改密碼只能用LDAP方式,且只能用類似ldappasswd命令的方式,同時(shí)修改了userPassword、krb5Key .
ldappasswd is a tool to set the password of an LDAP  user. ldappasswd uses the LDAPv3 Password Modify (RFC 3062) extended operation.
注意ldappasswd是LDAP一擴(kuò)展操作,詳細(xì)請(qǐng)參考RFC 3062.
我對(duì)ldappasswd的理解應(yīng)該是發(fā)送未經(jīng)散列的明文密碼到LDAP服務(wù)器,由LDAP服務(wù)器自己散列成密文存儲(chǔ)到ldap數(shù)據(jù)庫(kù).
而普通ldap修改密碼是要自己在客戶端將明文密碼散列成密文,LDAP服務(wù)器不再變換而存儲(chǔ)到ldap數(shù)據(jù)庫(kù),也就是說(shuō)本來(lái)LDAP的密碼屬性和其它屬性沒(méi)什么區(qū)別,普通ldap修改密碼的方式就是如同修改其它屬性值.
方法3可做到Kerberos、LDAP、samba三套密碼同步

本文采用方式2或方式3
1)安裝

root@debian:~# apt-get install slapd-smbk5pwd

slapd-smbk5pwd : Keeps Samba and Kerberos passwords in sync within slapd

2)加載模塊

root@debian:~# cat smbk5pwd.ldif
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: smbk5pwd
root@debian:~#
root@debian:~# ldapadd -Y EXTERNAL -H ldapi:/// -f smbk5pwd.ldif

3)前面已安裝了heimdal-kdc,并LDAP已添加加了heimdal模式,因本文目的只要同步Heimdal,不同步samba,所以無(wú)需添加samba模式

4)將/var/lib/heimdal-kdc/m-key改為openldap用戶擁有
m-key原權(quán)限是root擁有,僅root讀寫.而openldap是以openldap用戶啟動(dòng).
如不先改m-key權(quán)限,而先執(zhí)行步驟5),則會(huì)因無(wú)權(quán)限而ldapadd出錯(cuò)

root@debian:~# chown openldap  /var/lib/heimdal-kdc/m-key

5)啟用同步

root@debian:~# cat krb5.ldif
dn: olcOverlay=smbk5pwd,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSmbK5PwdConfig
olcOverlay: smbk5pwd
olcSmbK5PwdEnable: krb5
root@debian:~#
root@debian:~# ldapadd -Y EXTERNAL -H ldapi:/// -f krb5.ldif

6)重啟openldap
通常在線配置,是立即生效,但因/var/lib/heimdal-kdc/m-key文件權(quán)限問(wèn)題,所以還是重啟openldap為好

7)測(cè)試
以普通本地用戶登錄

linlin@debian:~$ ldappasswd  -h 192.168.1.101 -D "krb5PrincipalName=krblinlin@CTP.NET,ou=hdkrb5,dc=ctp,dc=net" -W -S
New password:
Re-enter new password:
Enter LDAP Password: 老密碼(LDAP用戶的密碼,不是指Kerberos用戶密碼)
linlin@debian:~$

這樣修改LDAP用戶的密碼同時(shí)也修改了Kerberos用戶密碼,用Kerberos用戶密碼登錄也正常

注意/var/lib/heimdal-kdc/m-key文件權(quán)限要確保正確(否則雖ldappasswd提示成功,但實(shí)際krb5Key屬性的值是破損的,無(wú)法以Kerberos用戶密碼登錄)

3.因LDAP安裝過(guò)程自動(dòng)設(shè)置了可匿名讀取除userPassword外的其它屬性,而krb5Key屬性應(yīng)是包含Kerberos密碼信息,是否需設(shè)置非本Kerberos用戶禁止讀取krb5Key ?
本人不才,未見(jiàn)有相關(guān)資料有明確設(shè)置禁止,是不是即使krb5Key被非法獲取,沒(méi)有/var/lib/heimdal-kdc/m-key也無(wú)法破解密碼嗎?

4.設(shè)置非本地用戶SSSD登錄自動(dòng)創(chuàng)建用戶目錄
上面的實(shí)驗(yàn)krblinlin登錄到客戶機(jī),該客戶機(jī)不存在krblinlin的用戶目錄.
可使用pam_mkhomedir.so來(lái)自動(dòng)創(chuàng)建用戶目錄,pam_mkhomedir.so在libpam-modules包中  
1)安裝
root@debian:~# apt-get install libpam-modules

2)到/etc/pam.d/common-session中增加一行pam_mkhomedir.so,內(nèi)容大致如下
...
session   required   pam_unix.so

#--v-- 新增一行,自動(dòng)創(chuàng)建用戶目錄
session required  pam_mkhomedir.so umask=0077
#--^--

session   [success=ok default=ignore]   pam_ldap.so minimum_uid=1000
...

3)登錄
debian login: krblinlin
Password:
Creating directory '/home/krblinlin'.已正常首次登錄創(chuàng)建用戶目錄

krblinlin@debian:~$
krblinlin@debian:~$ pwd
/home/krblinlin
krblinlin@debian:~$

5.文件系統(tǒng)的ACL(訪問(wèn)控制列表)
雖說(shuō)NFSv4的是 NFSv4 acl,但本實(shí)驗(yàn)仍是posix acl,猜測(cè)NFSv4 acl可能需本地文件系統(tǒng)支持吧,好象只有zfs本地文件系統(tǒng)才支持NFSv4 acl

6.域
LDAP域和Kerberos域可以不同

即Kerberos的realm是CTP.NET
LDAP的基本DN 可以是dc=oled,dc=com

7.其它
debian 9安裝openldap過(guò)程是使用mdb作為L(zhǎng)DAP的后端,而LDAP還可選hdb等其它作為后端.選不同的后端,其配置目錄、文件名稱及配置數(shù)據(jù)庫(kù)條目?jī)?nèi)容按后端名稱
如本實(shí)驗(yàn)是mdb

root@debian:~# apt-get install tree
root@debian:~# tree /etc/ldap/slapd.d
/etc/ldap/slapd.d
|-- cn=config
|       |-- cn=module{0}.ldif
|       |-- cn=schema
|       |     |-- cn={0}core.ldif
|       |     |-- cn={1}cosine.ldif
|       |     |-- cn={2}nis.ldif
|       |     |-- cn={3}inetorgperson.ldif
|       |-- cn=schema.ldif
|       |-- olcBackend={0}mdb.ldif
|       |-- olcDatabase={-1}frontend.ldif
|       |-- olcDatabase={0}config.ldif
|       |-- olcDatabase={1}mdb.ldif
|-- cn=config.ldif

root@debian:~#
上面是剛安裝完openldap后的

如要重新創(chuàng)建ldap數(shù)據(jù)庫(kù)
root@debian:~# dpkg-reconfigure slapd
配置過(guò)程中假如選hdb作為后端,則相關(guān)內(nèi)容是hdb

查看ldap數(shù)據(jù)庫(kù)
root@debian:~# slapcat

查看配置數(shù)據(jù)庫(kù)
root@debian:~# slapcat -b cn=config

八.修正
實(shí)驗(yàn)時(shí)的環(huán)境是 debian 9 testing 版
第三章節(jié)第1小節(jié)的2)設(shè)置ACL訪問(wèn)控制列表,那行'將'

olcAccess: {2}to * by self write by dn="cn=admin,dc=ctp,dc=net" write by * read

不記得是openldap安裝包腳本本身設(shè)定的,還是我自己弄錯(cuò),原'改為'那行也照抄to * by self write
這是嚴(yán)重的漏洞及錯(cuò)誤.'to * by self write'會(huì)允許ldap用戶修改本身?xiàng)l目的任何屬性,
如ldap用戶可將自己的unix 的uidNumber設(shè)為0即根用戶,這很危險(xiǎn),即普通用戶可以提權(quán)自己(雖然ldap客戶機(jī)默認(rèn)配置將ldap的uidNumber值為0映射為非根用戶)或冒充其他用戶.
所以,原則ldap用戶只允許修改本身及只能修改密碼屬性,其他屬性只能由管理員設(shè)置.

因此,原'改為'那行
olcAccess: {2}to * by self write by dn="cn=admin,dc=ctp,dc=net" write by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * read
實(shí)際是需改為
olcAccess: {2}to * by dn="cn=admin,dc=ctp,dc=net" write by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * read

本文已作了修正

附debian 10 testing 版 openldap安裝后未經(jīng)'改為'的原始完整olcAccess配置

olcSuffix: dc=ctp,dc=net
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=ctp,dc=net

關(guān)于Kerberos+LDAP+NFSv4怎樣實(shí)現(xiàn)單點(diǎn)登錄問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享文章:Kerberos+LDAP+NFSv4怎樣實(shí)現(xiàn)單點(diǎn)登錄-創(chuàng)新互聯(lián)
瀏覽地址:http://jinyejixie.com/article10/dejpdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)定制開(kāi)發(fā)、網(wǎng)站排名、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈、軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
来凤县| 响水县| 汝城县| 乌鲁木齐市| 峨边| 大田县| 红河县| 丰原市| 屯留县| 天全县| 柞水县| 横山县| 宜宾县| 治县。| 闵行区| 正定县| 鲁甸县| 枣阳市| 丹东市| 洛南县| 平邑县| 涟源市| 昭苏县| 德庆县| 泾源县| 郯城县| 周至县| 禹城市| 澄迈县| 莆田市| 从化市| 西安市| 昂仁县| 肥乡县| 太仆寺旗| 依兰县| 明溪县| 永康市| 盱眙县| 安福县| 颍上县|