溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Linux系統(tǒng)中使用LDAP用戶認證

發(fā)布時間:2021-03-23 16:32:18 來源:億速云 閱讀:292 作者:Leah 欄目:服務器

怎么在Linux系統(tǒng)中使用LDAP用戶認證?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

基礎配置#

1.完成yum源的配置

mkdir /root/back
tar -Jcvf /root/back/yum.repos.d-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /etc/yum.repos.d/
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum,repos.d/CentOS-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache

1.安裝必要軟件

yum -y install vim bash-completion openldap-servers openldap-clients nss-pam-ldapd sssd

OPENLdap服務部分配置#

初始化過程就不再過多贅述,詳細查詢《OPENLDAP 服務搭建和后期管理》。

1.首先停止數(shù)據庫服務:

systemctl stop slapd

1.然后編輯文件:

# 首先備份文件,以免無法復原
mkdir /root/back
tar -Jcvf /root/back/slapd.config-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /etc/openldap/slapd.d/
tar -Jcvf /root/back/slapd.data-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /var/lib/ldap/
# 然后再刪除配置文件
rm -rf /etc/openldap/slapd.d/*
rm -rf /var/lib/ldap/*
# 復制配置文件到臨時目錄
mkdir /root/ldap
cd /root/ldap

1.編寫slapd的配置文件。這里的配置文件是從 /usr/share/openldap-servers/slapd.ldif 中演變而來的,主要修改了baseDN(suffix), OPENLDAPTLS,olcRootPW(密碼由 slappasswd 生成,本文中的密碼為: 123456) 和 include。

# file: /root/ldap/slapd.ldif
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/openldap/slapd.args
olcPidFile: /var/run/openldap/slapd.pid
olcTLSCertificateFile: /etc/openldap/certs/server.crt
olcTLSCertificateKeyFile: /etc/openldap/certs/server.key
olcTLSCACertificateFile: /etc/openldap/cacerts/cacert.pem
dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema
include: file:///etc/openldap/schema/core.ldif
include: file:///etc/openldap/schema/cosine.ldif
include: file:///etc/openldap/schema/nis.ldif
include: file:///etc/openldap/schema/inetorgperson.ldif
dn: olcDatabase=frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: frontend
dn: olcDatabase=config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: config
olcAccess: to * 
 by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
 by * none
dn: olcDatabase=monitor,cn=config
objectClass: olcDatabaseConfig
olcDatabase: monitor
olcAccess: to * 
 by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read 
 by dn.base="cn=Manager,dc=black,dc=com" read 
 by * none
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: hdb
olcSuffix: dc=black,dc=com
olcRootDN: cn=Manager,dc=black,dc=com
olcRootPW: {SSHA}l1vBI/HOMKLEiQZgcm3Co+hFQI68rH1Q
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub

1.配置OPENSSL的證書。為openldap服務器的加密隧道使用。

# 首先是創(chuàng)建CA服務的證書文件
cd /etc/pki/CA
openssl genrsa -out private/cakey.pem 2048
openssl req -new -x509 -key private/cakey.pem -out cacert.pem # 這里的證書創(chuàng)建過程就省略不寫了。
# 不過需要注意的是,必須要保證后面服務器證書申請的開頭部分必須與證書開頭相同,否則無法通過CA簽發(fā)證書。
touch index.txt
echo "01" > serial
# 然后申請簽發(fā)服務器證書
cd /etc/openldap/certs/
openssl genrsa -out server.key 2048
openssl ca -in server.csr -out server.crt -days 365
# 復制CA證書到指定位置
mkdir /etc/openldap/cacerts
cp /etc/pki/CA/cacert.pem /etc/openldap/cacerts/

1.根據配置生成服務器的配置文件

slapadd -F "/etc/openldap/slapd.d/" -b "cn=config" -l slapd.ldif
# 這里還需要注意文件屬主還是root的,需要改回為openldap
chown -R ldap:ldap /etc/openldap/slapd.d/*
# 然后再開啟服務即可
systemctl start slapd

_#################### 100.00% eta none elapsed none fast!
 Closing DB...

1.初始化數(shù)據庫

dn: dc=black,dc=com
dc: black
objectClass: top
objectClass: domain

dn: cn=Manager,dc=black,dc=com
objectClass: organizationalRole
cn: Manager
description: LDAP Manager

dn: ou=People,dc=black,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
objectClass: domainRelatedObject
associatedDomain: black.com

dn: ou=Group,dc=black,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
objectClass: domainRelatedObject
associatedDomain: black.com

1.導入至數(shù)據庫

ldapadd -x -D "cn=Manager,dc=black,dc=com" -w 123456 -f base.ldif # 將基礎信息導入數(shù)據庫。
adding new entry "dc=black,dc=com"
 adding new entry "cn=root,dc=black,dc=com"
 adding new entry "ou=People,dc=black,dc=com"
 adding new entry "ou=Group,dc=black,dc=com"

1.那么再使用apache directory studio來查看 服務器是否配置成功。

首先先將防火墻開啟

firewall-cmd --add-service=ldap

怎么在Linux系統(tǒng)中使用LDAP用戶認證

1.我們這里先導入一個用戶用于后面的測試使用

怎么在Linux系統(tǒng)中使用LDAP用戶認證

怎么在Linux系統(tǒng)中使用LDAP用戶認證

Linux 用戶認證部分配置#

我這里設計的用戶認證和解析是這樣完成的:

怎么在Linux系統(tǒng)中使用LDAP用戶認證

與網上其他人寫的會有所不同,需要注意。

NSS服務配置#

如果想使 nss 可以查詢ldap,那么首先就需要啟用一個叫 nslcd 的服務, 以下是該服務的配置文件。

# file: /etc/nslcd.conf
uid nslcd
gid ldap
uri ldap://127.0.0.1/
base dc=black,dc=com
binddn cn=Manager,dc=black,dc=com
bindpw 123456
ssl no
tls_cacertdir /etc/openldap/cacerts

啟動服務

chmod 600 /etc/nslcd.conf
systemctl start nslcd
systemctl enable nslcd

配置nss

# file: /etc/nsswitch.conf

passwd: files ldap  # 主要就是 passwd、shadow 和 group 這3行需要后面添加ldap
shadow: files ldap
group: files ldap
hosts: files dns myhostname
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files sss
netgroup: nisplus sss
publickey: nisplus
automount: files nisplus sss
aliases: files nisplus

測試是否可用:

getent passwd | grep black
black:x:1001:1001:black:/home/black:/bin/bash

PAM服務配置#

pam模塊已經有通過SSSD認證的相關模塊配置了,我們這里引用以下即可。

cd /etc/pam.d/
 mv system-auth{,.bak}
 ln -s system-auth-ac system-auth

PAM不用進行服務重啟,直接可以使用

sssd服務配置#

針對LDAP用戶登入,PAM配置會將其轉發(fā)給SSSD,由SSSD來認證用戶。下面就是sssd.conf 的配置文件了:

# file: /etc/sssd/sssd.conf
[domain/black.com]
autofs_provider = ldap # 配置 autofs 的提供程序為 ldap
id_provider = ldap  # id 的提供程序為 ldap
auth_provider = ldap # 配置 auth 認證的提供程序為 ldap
chpass_provider = ldap # 更改密碼 操作時的對用應用
cache_credentials = True # 開啟緩存
ldap_search_base = dc=black,dc=com # ldap 查詢的base dn
ldap_uri = ldap://127.0.0.1/ # ldap 的 URL 路徑
ldap_id_use_start_tls = True # 開啟 ldap 的 tls 加密。
ldap_tls_reqcert = never # 不強制要求 tls 加密(這里可以設置為 hard 強制 TLS 加密,如果 tls 無法使用則可能導致服務失?。?nbsp;由于ldap 與 sssd在同一臺,所以不需要 tls 加密)
ldap_tls_cacertdir = /etc/openldap/cacerts # ldap 服務 tls 加密信任證書(CA根證書)。
[sssd]
services = nss, pam, autofs # 提供的服務
domains = black.com # 設置啟用的域
[nss]
homedir_substring = /home
[pam]
[sudo]
[autofs]
[ssh]
[pac]
[ifp]
[secrets]
[session_recording]

配置啟動服務,并且設置開機自啟動。

chmod 600 /etc/sssd/sssd.conf # 注意權限的配置,否則無法啟動。
systemctl start sssd
systmctl enable sssd

測試#

那么這樣用戶認證的部分就制作好了,那么現(xiàn)在來測試一下:
因為配置的 system-auth 文件,并沒有配置 ssh 文件,所以ssh是連接不進去的。這里使用login來測試可行性。

怎么在Linux系統(tǒng)中使用LDAP用戶認證

 這里我們也能看到,用戶時能登入了的,還有一個瑕疵就是提示沒有家目錄下面通過腳本來解決。

腳本#

我為這個LDAP用戶認證寫了一個腳本,方便添加用戶。我這里還是要強調一下,CentOS雖然有提供 migrationtools 工具用于將用戶存放至LDAP數(shù)據庫,但是如果你把本地用戶全都提到 LDAP 數(shù)據庫,不保留本地用戶,那么你就會發(fā)現(xiàn),電腦就會無法重啟了,所以推薦不要把UID小于1000的用戶存放到 LDAP 服務器。

注:該腳本必須在搭建好上述環(huán)境后才可使用,其余環(huán)境可能有未知問題。
腳本放在gitee上了。https://gitee.com/somata/script/blob/master/ldap_adduser.sh

使用方法很簡單

怎么在Linux系統(tǒng)中使用LDAP用戶認證

然后再測試一下這個添加的用戶是否可以登入:

怎么在Linux系統(tǒng)中使用LDAP用戶認證

關于怎么在Linux系統(tǒng)中使用LDAP用戶認證問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI