在RHEL 7上设置LDAP和Kerberos客户端身份验证(使用sssd)

时间:2020-03-21 11:49:56  来源:igfitidea点击:

我们将配置RHEL 7系统以使用LDAP/Kerberos对FreeIPA进行身份验证。

准备工作

要使Kerberos运行,必须运行NTP同步和DNS解析。

我们将使用之前设置的FreeIPA服务器。
查看这篇文章,了解如何在RHEL 7上设置FreeIPA服务器。

SSSD

系统安全服务守护程序(SSSD)提供对不同身份和身份验证提供程序的访问。

SSSD的作用是允许本地服务使用SSSD中的本地缓存进行检查,但是该缓存可以取自各种远程身份提供者-LDAP目录,身份管理域,甚至是Kerberos领域。

配置LDAP认证

我们使用将SELinux设置为强制模式的RHEL 7.0服务器(指令也在RHEL 7.2上进行了测试)。

DNS配置为指向FreeIPA服务器:

# cat /etc/resolv.conf
search rhce.local
nameserver 10.8.8.70
# host 10.8.8.70
70.8.8.10.in-addr.arpa domain name pointer ipa.rhce.local.

安装

# yum install -y sssd nss-pam-ldapd wget

将CA证书从IPA服务器下载到我们的本地服务器:

# mkdir /etc/openldap/cacerts
# wget -P /etc/openldap/cacerts/ftp://ipa.rhce.local/pub/cacert.p12

配置

打开文件“/etc/sysconfig/authconfig”,并确保设置了以下内容:

USESSSDAUTH=yes
FORCELEGACY=no
USESSSD=yes

完成后,运行authconfig实用程序。

# authconfig-tui

在“用户信息”中,选择“使用LDAP”,然后在“身份验证”下,选择“使用LDAP身份验证”。
在“ LDAP设置”屏幕中,选择“使用TLS”并指定以下内容:

Server: ipa.rhce.local
Base DN: dc=rhce,dc=local

打开文件“ /etc/sssd/sssd.conf”并添加以下行:

ldap_tls_reqcert = never

检查man sssd-ldap以获取更多可用的选项。

确保已禁用nslcd并启用了sssd:

# systemctl stop nslcd; systemctl disable nslcd
# systemctl enable sssd; systemctl restart sssd

通过使用LDAP用户登录进行验证:

# su - alice
su: warning: cannot change directory to /home/alice: No such file or directory
$id
uid=1219400005(alice) gid=1219400005(alice) groups=1219400005(alice) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

配置Kerberos身份验证

安装

# yum install -y pam_krb5 krb5-workstation

配置

我发现从头开始配置Kerberos身份验证时,擦除文件的'/etc/krb5.conf'内容会有所帮助:

# > /etc/krb5.conf

在文本模式下运行authconfig:

# authconfig-tui

在“身份验证配置”屏幕上的“身份验证”下,选择“使用Kerberos”以启用Kerberos授权。
在“ LDAP设置”屏幕中,请勿进行任何更改。
在“ Kerberos设置”屏幕中,指定以下内容:

Realm: RHCE.LOCAL
KDC: ipa.rhce.local
Admin Server: ipa.rhce.local

为Kerberos alice用户获取Kerberos票证:

# kinit alice

验证票证:

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Hyman@theitroad
Valid starting     Expires

Service principal
07/05/16 11:21:27  08/05/16 11:21:25  krbtgt/Hyman@theitroad

这些仅供参考。

# cat /etc/krb5.conf
[libdefaults]
 default_realm = RHCE.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = false
[realms]
 RHCE.LOCAL = {
  kdc = ipa.rhce.local
  admin_server = ipa.rhce.local
 }
[domain_realm]
 rhce.local = RHCE.LOCAL
 .rhce.local = RHCE.LOCAL
# cat /etc/sssd/sssd.conf
[domain/default]
autofs_provider = ldap
cache_credentials = True
krb5_realm = RHCE.LOCAL
ldap_search_base = dc=rhce,dc=local
id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
ldap_uri = ldap://ipa.rhce.local/
ldap_id_use_start_tls = True
ldap_tls_cacertdir = /etc/openldap/cacerts
ldap_tls_reqcert = never
krb5_server = ipa.rhce.local
krb5_store_password_if_offline = True
krb5_kpasswd = ipa.rhce.local
[sssd]
services = nss, pam, autofs
config_file_version = 2
domains = default
[...]

测试Kerberos配置

# su - alice
su: warning: cannot change directory to /home/alice: No such file or directory
$hostname
srv2.rhce.local
$kinit
Password for Hyman@theitroad:
$klist
Ticket cache: FILE:/tmp/krb5cc_1219400005
Default principal: Hyman@theitroad
Valid starting     Expires

Service principal
07/05/16 12:04:44  87/05/16 12:04:42  krbtgt/Hyman@theitroad

我们应该能够重新连接而无需提供任何密码:

$ssh ipa.rhce.local
Could not create directory '/home/alice/.ssh'.
[...]
Could not chdir to home directory /home/alice: No such file or directory
$hostname
ipa.rhce.local