配置Linux使⽤LDAP⽤户认证的⽅法
我这⾥使⽤的是CentOS完成的LDAP⽤户管理,可能与⽹上的⼤部分教程不同,不过写出来了,那么是肯定能⽤的了,不过会有部分⽂件,忘指教。
这⾥使⽤的 OPENLdap 配合 CentOS7 完成的⽤户管理,需要配置 nssswitch 、pam 和 sssd 3个服务,需要先有⼀定的了解才能完成本⽂的配置。
基础配置#
1.完成yum源的配置
mkdir /root/back
tar -Jcvf /root/pos.d-`date '+(%Y.%m.%d_%H:%M:%S)'`. /pos.d/
rm -rf /pos.d/*
curl -o /pos.po mirrors.aliyun/po
curl -o /etc/yum,repos.po mirrors.aliyun/po
yum makecache
1.安装必要软件
yum -y install vim bash-completion openldap-servers openldap-clients nss-pam-ldapd sssd
OPENLdap服务部分配置#
初始化过程就不再过多赘述,详细查询《》。
1.⾸先停⽌数据库服务:
systemctl stop slapd
1.然后编辑⽂件:
# ⾸先备份⽂件,以免⽆法复原
mkdir /root/back
tar -Jcvf /root/fig-`date '+(%Y.%m.%d_%H:%M:%S)'`. /etc/openldap/slapd.d/
tar -Jcvf /root/back/slapd.data-`date '+(%Y.%m.%d_%H:%M:%S)'`. /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/
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" managelinux认证等级
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服务器的加密隧道使⽤。
# ⾸先是创建CA服务的证书⽂件
cd /etc/pki/CA
openssl genrsa -out private/cakey.pem 2048
openssl req -new -x509 -key private/cakey.pem -out cacert.pem # 这⾥的证书创建过程就省略不写了。
# 不过需要注意的是,必须要保证后⾯服务器证书申请的开头部分必须与证书开头相同,否则⽆法通过CA签发证书。
echo "01" > serial
# 然后申请签发服务器证书
cd /etc/openldap/certs/
openssl genrsa -out server.key 2048
openssl ca -in server.csr - -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!
1.初始化数据库
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
dn: ou=Group,dc=black,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
objectClass: domainRelatedObject
associatedDomain: black
1.导⼊⾄数据库
ldapadd -x -D "cn=Manager,dc=black,dc=com" -w 123456 -f base.ldif # 将基础信息导⼊数据库。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
1.我们这⾥先导⼊⼀个⽤户⽤于后⾯的测试使⽤
Linux ⽤户认证部分配置#
我这⾥设计的⽤户认证和解析是这样完成的:
与⽹上其他⼈写的会有所不同,需要注意。
NSS服务配置#
如果想使 nss 可以查询ldap,那么⾸先就需要启⽤⼀个叫 nslcd 的服务,以下是该服务的配置⽂件。
# file: /f
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 /f
systemctl start nslcd
systemctl enable nslcd
配置nss
# file: /f
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配置会将其转发给SSSD,由SSSD来认证⽤户。下⾯就是f 的配置⽂件了:
# file: /etc/f
[domain/black]
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 ⽆法使⽤则可能导致服务失败;由于ldap 与 sssd在同⼀台,所以不需要 tls 加密) ldap_tls_cacertdir = /etc/openldap/cacerts # ldap 服务 tls 加密信任证书(CA根证书)。
[sssd]
services = nss, pam, autofs # 提供的服务
domains = black # 设置启⽤的域
[nss]
homedir_substring = /home
[pam]
[sudo]
[autofs]
[ssh]
[pac]
[ifp]
[secrets]
[session_recording]
配置启动服务,并且设置开机⾃启动。
chmod 600 /etc/f # 注意权限的配置,否则⽆法启动。
systemctl start sssd
systmctl enable sssd
测试#
那么这样⽤户认证的部分就制作好了,那么现在来测试⼀下:
因为配置的 system-auth ⽂件,并没有配置 ssh ⽂件,所以ssh是连接不进去的。这⾥使⽤login来测试可⾏性。
这⾥我们也能看到,⽤户时能登⼊了的,还有⼀个瑕疵就是提⽰没有家⽬录下⾯通过脚本来解决。
脚本#
我为这个LDAP⽤户认证写了⼀个脚本,⽅便添加⽤户。我这⾥还是要强调⼀下,CentOS虽然有提供 migrationtools ⼯具⽤于将⽤户存放⾄LDAP数据库,但是如果你把本地⽤户全都提到 LDAP 数据库,不保留本地⽤户,那么你就会发现,电脑就会⽆法重启了,所以推荐不要把UID⼩于1000的⽤户存放到 LDAP 服务器。
使⽤⽅法很简单
然后再测试⼀下这个添加的⽤户是否可以登⼊:
总结
以上所述是⼩编给⼤家介绍的配置Linux使⽤LDAP⽤户认证,希望对⼤家有所帮助,如果⼤家有任何疑问欢迎给我留⾔,⼩编会及时回复⼤家的!

发表评论