我安装了 Debian Squeeze 和 sssd。当我尝试通过 ssh 用户“alexwinner”登录服务器时,我在日志中看到:
(Fri May 11 18:56:03 2012) [[sssd[krb5_child[26281]]]] [get_and_save_tgt] (1): 523: [-1765328360][Preauthentication failed]
Run Code Online (Sandbox Code Playgroud)
但是当我执行kinit alexwinner一切正常时,我会收到票。这是我的 sssd.conf
[sssd]
config_file_version = 2
reconnection_retries = 3
sbus_timeout = 30
services = nss, pam
domains = MYDOMAIN.COM
[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
; entry_cache_timeout = 600
; entry_cache_nowait_timeout = 300
[pam]
reconnection_retries = 3
[domain/MYDOMAIN.COM]
description = LDAP domain with AD server
enumerate = true
min_id = 1000
cache_credentials = false
id_provider …Run Code Online (Sandbox Code Playgroud) 我正在尝试重建 nwaller 的sssd puppet 模块,使其完全基于 LDAP 并且更简洁一些。在其中,我们为表单的每个身份验证域定义了一个资源
define sssd::domain (
$domain = $name,
$domain_description = '',
$domain_type,
$ldap_uri = 'ldap://example.com',
$ldap_search_base = 'dc=example,dc=com',
$simple_allow_groups,
....
)
Run Code Online (Sandbox Code Playgroud)
然后将此定义作为 a 传递,concat::fragment它填写用于构建最终sssd.conf.
如果我在每个节点中定义 LDAP 服务器,这一切都很好,如下所示:
节点.pp
node "node1.systems.private" {
include "puppet::client"
class {
'sssd':
domains => [ 'LDAP' ],
make_home_dir => true;
}
sssd::domain { 'LDAP':
domain_type => 'ldap',
ldap_uri => 'ldaps://ldap.site.com:636',
ldap_search_base => 'DC=site,DC=com',
ldap_user_search_base => 'OU=People,DC=site,DC=com',
ldap_group_search_base => 'OU=Groups,DC=site,DC=com',
ldap_default_bind_dn => 'CN=bindaccount,OU=Service Accounts,OU=People,DC=site,DC=com', …Run Code Online (Sandbox Code Playgroud) 很久以前,在我们的公司环境中,一些奇才决定将用户“ mysql”放入 LDAP。
该帐户被禁用:
$ sudo su - mysql
This account is currently not available.
Run Code Online (Sandbox Code Playgroud)
...但它的 id 仍然存在:
$ id mysql
uid=2050913(mysql) gid=867(ENG) groups=867(ENG)
Run Code Online (Sandbox Code Playgroud)
这使得在 CentOS7 上安装 mariadb 失败,因为它/var/run/mariadb是由 tmpfile 规则创建的,该规则试图将目录分配给 mysql。但是 mysql 在 LDAP/网络启动并运行之前不存在,并且 mariadb 安装不会创建mysql用户,因为该用户已存在于 ldap 中。
有没有办法在本地强制 PAM(或其他什么?)忽略 LDAP 中的用户 mysql?或者将 ldapmysql用户重命名为mysql_ldap?
是我手动添加条目的唯一解决方法/etc/passwd吗?(或更改 mariadb 配置以使用不同的用户名。)我宁愿对来自 rpm 的配置和 systemd 文件进行最少的更改。
(而且我对mysql从 LDAP中删除没有寄予厚望,因为这可能会破坏许多遗留基础设施。)
顺便说一句,我将使用 ansible 来实现更改。
额外的:
我已经更改了问题的标题:
我发现,如果我确实添加了本地“ mysql”用户,它就可以正常工作,除非我拥有 LDAP“ mysql” 用户的用户ID 所拥有的文件。如果我是 …
我按照标准文档分别在主机“SRV”和“CLT”上安装了 FreeIPA 服务器和客户端。然后我使用 Web UI 向 FreeIPA 添加了一个用户“X”。现在,当我尝试通过 SSH 作为 X 到 CLT 时,出现'Permission denied, please try again.'错误。我在客户端检查了“/var/log/messages”,看到了这个 - '[sssd[krb5_child[3277]]]: Decrypt integrity check failed'。
我多次重置密码,但这并没有解决问题。然后我遇到了这些——
听起来像从 SRV 和 CLT 中删除“/etc/krb5.keytab”文件,然后重新创建它们将解决问题。
在你嘲笑我说“如果你想要 Active Directory,使用 Windows”或告诉我使用 Google 之前,先听我说。
我的公司非常依赖 AD。不,我们在这一点上与之结婚,作为财富 10 强公司,这并没有改变。然而,我们的环境中有很多 *nix 系统(主要是 RHEL 和 SLES),而且我还没有找到一个很好的机制来与作为身份源的 Active Directory 集成。至少,我需要一些东西来提供以下内容:
我发现的最佳解决方案如下:
集中。. . 只是丑陋。我从来都不是真正的粉丝。另外,为了我公司的需要,我们不能使用 Centrify-Express,所以它不是免费的,也没有无限制的许可证。然而,这是我们找到的最好的解决方案,我很想找到别的东西。
PBIS Open 是我所倾向的。这是 VMware 在 vShield 后端使用的,并且运行良好。它只需要几个命令就可以设置,它支持 AD 组,并且没有辅助身份管理系统 - 它直接与 AD 对话。我不走这条路的唯一原因是我喜欢本机解决方案,如果有更好的方法来做到这一点并且已经包含在现代发行版中,我完全赞成。
SSSD+SELinux 听起来不错。设置起来很麻烦,但它是灵活的、原生的,并且受到大多数现代发行版的支持。它唯一缺乏的(据我所知)是对 AD 组的支持。许多文章建议利用 FreeIPA 或类似的东西来添加此功能,但进一步阅读后,这违反了要求 5,并且基本上创建了一个中间人身份服务。我对基本上复制 AD 或建立对辅助身份服务的信任不感兴趣。
我扔掉的其他 kludge 选项包括使用 Puppet(我们使用的)将 /etc/password、shadow、group 文件推送到端点,但这需要开发,这是非常间接的,我可以看到一些事情很糟糕。更好的选择是将 SSSD+SELinux 添加到 Puppet 的想法中。虽然它会简化灾难,但它仍然是一场灾难。
我错过了什么,你在用什么,还有什么是我没有考虑到的解决 Linux AD 集成头痛的“新热点”?
是否需要重新启动服务器或特定服务才能使 pam 文件 ( /etc/pam.d/system-auth) 的更改生效?
更长的版本 - 我正在配置 SSSD 以与 LDAP 连接以进行身份验证。该系统基于 RHEL6,并且 SSSD 已配置为在此环境中的多个其他 RHEL6 服务器中以这种方式工作。在这些其他服务器上,每当用户访问系统时,它都会显示/var/log/secure类似于下面的成功或失败尝试的信息。
sshd[1489]: pam_sss(sshd:auth): authentication success; logname= uid=0 euid=0 tty=ssh ruser= rhost=ipaddress user=user
sshd[1664]: pam_sss(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=server user=user
Run Code Online (Sandbox Code Playgroud)
这些日志消息不会显示/var/log/secure,用户无法登录服务器。尽管如此,getent passwdandgetent group确实返回了预期的 LDAP 用户和组。证书目录的权限一切看起来都很好,/etc/pam.d/system-auth并且/etc/sssd/sssd.conf.
我正在尝试使用 Chef 添加/修改一些本地用户帐户。无论出于何种原因,LDAP 中都有重复的帐户。由于系统使用 sssd/pam/ldap,它会将用户视为存在,但无法修改它们,因为它们不在 /etc/passwd 中。
有没有办法完全绕过 ldap 帐户,这样它们就不会被识别?然后 Chef 将正确创建它们。
我使用它sssd是为了在我们的 Linux 环境中使用 LDAP 用户和组。
我不得不重命名我的一个 Linux 用户的 LDAP 组,我注意到在我完成编辑组后,当我运行时:
id username在 Linux 机器上它一直显示以前的名称(重命名之前)。
我试过重新启动服务器,但没有清除缓存并一直向我显示以前的组名。
我搜索了谷歌并在redhat的官方网站上找到了下一个命令:
sss_cache -E
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题并清除了 sssd 缓存,并且在我下次运行时:
id user显示了正确的组名。
但我的问题是:
1. How come a full server reboot didn't clear the cache?
2. How can I make sure the cache gets deleted when the server is rebooted?
Run Code Online (Sandbox Code Playgroud)
提前致谢
我有一种情况,我试图利用 GSSAPI (Kerberos) 转发连接到另一个 Linux 服务器,该服务器也加入了 Windows AD 并使用 SSSD。
Linux 计算机使用不同于服务器实际 FQDN 的计算机名称加入域。当我使用我的域凭据登录第一台机器时,PAM 成功并且我获得了一个有效的令牌。它显示为klist. 但是,即使在另一台也加入域的 Linux 主机上的 SSH 上启用 GSSAPI 和 Kerberos 登录后,我仍然收到“在 kerberos 数据库中找不到服务器”客户端错误,并且它回退到使用密码身份验证。我正在传递-K以启用 Kerberos 令牌转发。
如果我的记忆正确,这可能是由于 AD(在本例中为 Kerberos 服务器)中的 SPN 问题,Linux 机器加入的机器名称与我连接到(或来自?)的实际机器的 FQDN 不同,但是我不确定,需要一些帮助来指出我正确的方向。
我是一名 Windows 管理员,负责管理我们的 AD 基础架构。我们的 Linux 团队一直在构建一些 CentOS 7 虚拟机并将它们配置为使用 SSSD 加入域。
初始配置是在不同站点(不是之前编写的域)中查询 DC,因此我要求他们研究将 AD 站点与 SSSD 一起使用。
服务器现在从 DNS 返回 3 个 _ldap DC 记录。它尝试的第一个站点来自不同的站点,因此无法访问它。第二个工作,它检索正确的站点名称。在一段时间内(不确定确切多长时间),它将使用响应的 DC,在那段时间过后,它将重新开始从 DNS 获取 3 _ldap 记录。
这会导致我们被要求解决的登录延迟。如果我们在配置中设置站点名称,那么它始终有效,但我们必须考虑将这些 VM 从备份还原到另一个站点,而此时设置的站点名称将是错误的。
我不太了解 CentOS 中的很多配置,但是有没有办法让它正常工作,或者它已经在做什么?