我在 CentOS 6.3 对 2008R2 AD DC 进行身份验证的这个线程中描述了一个非常相似的问题。
这是我的 krb5.conf,我知道 XXXXXXX.LOCAL 是真正的域名:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = XXXXXXX.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
verify_ap_req_nofail = false
[realms]
XXXXXXX.LOCAL = {
kdc = ad1.XXXXXXX.local
kdc = ad2.XXXXXXX.local
admin_server = ad1.XXXXXXX.local
default_domain = XXXXXXX.LOCAL
}
[domain_realm]
.XXXXXXX.local = XXXXXXX.LOCAL
XXXXXXX.local = XXXXXXX.LOCAL
.XXXXXXX.com = XXXXXXX.LOCAL
XXXXXXX.com = XXXXXXX.LOCAL
Run Code Online (Sandbox Code Playgroud)
当我做一个:
kinit …
我已经设置了 sssd 和 LDAP。用户进行身份验证并登录。我的问题是 sssd 似乎忽略了 ldap_access_filter 选项并允许所有用户登录。我检查了日志/调试,并且 pam_sss 每次都会授权用户,而不管过滤器如何(我尝试了几个不同的过滤器,结果都相同)。
这是用于配置系统的命令:
authconfig
--updateall --passalgo=md5 --enableldap --enableldapauth \
--ldapserver=ldaps://ldap.example.com \
--ldapbase=ou=people,dc=example,dc=com \
--enableldaptls --enableldapstarttls --disablekrb5 \
--ldaploadcacert=http://certserver/cacerts/cacert.pem \
--enablesssd --enablesssdauth --enableshadow \
--enablecachecreds --enablemkhomedir
Run Code Online (Sandbox Code Playgroud)
这是/etc/sssd/sssd.conf:
[domain/default]
debug_level = 9
ldap_id_use_start_tls = True
cache_credentials = True
ldap_search_base = ou=people,dc=example,dc=com
id_provider = ldap
auth_provider = ldap
ldap_access_filter = memberOf=cn=sysadmins,ou=people,dc=example,dc=com
chpass_provider = ldap
ldap_uri = ldaps://ldap.example.com
ldap_tls_cacertdir = /etc/openldap/cacerts
[sssd]
services = nss, pam
config_file_version = 2
domains = default
[nss]
[pam]
[sudo]
[autofs] …Run Code Online (Sandbox Code Playgroud) 所以在问了这个问题之后,我一直在测试 FreeIPA 作为基于这个问题的中央认证源:管理对多个 linux 系统的访问
我遇到的一个问题是,如果用户被授予本地 root 权限,他们又可以以 FreeIPA 目录中的任何用户身份登录。即使该用户无权通过 HBAC 规则访问该特定机器。
示例场景:
我能找到的唯一信息是在 /etc/pam.d/su 中注释掉这一行:
auth sufficient pam_rootok.so
Run Code Online (Sandbox Code Playgroud)
如果他尝试以下操作,它现在会向本地 root 询问 Alice 的密码:su alice
但是,如果 Bob 具有 root 访问权限,他可以轻松启用上述 PAM/su 行。FreeIPA 不应该阻止 Alice 的帐户通过直接登录尝试或本地 root su访问 PC1吗?如何防止本地根用户以任何 FreeIPA 用户身份登录?
我试图了解 FreeBSD 10.0 上的 PAM 配置出现了什么错误
该计算机配置了两种不同的身份验证领域,一种是默认的 Unix 身份验证,另一种是使用系统安全服务守护程序 (sssd)。
目前我正在使用此配置,/etc/pam.d/sshd因为我只想允许 sssd 从 ssh 登录。
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth sufficient /usr/local/lib/pam_sss.so
#auth sufficient pam_krb5.so no_warn try_first_pass
#auth sufficient pam_ssh.so no_warn try_first_pass
auth required pam_unix.so no_warn use_first_pass
# account
account required pam_nologin.so
#account required pam_krb5.so
account required pam_login_access.so
account required /usr/local/lib/pam_sss.so ignore_unknown_user
account required pam_unix.so
# session
#session optional pam_ssh.so want_agent
session optional /usr/local/lib/pam_sss.so
session optional /usr/local/lib/pam_mkhomedir.so mode=0700
session required pam_permit.so
# …Run Code Online (Sandbox Code Playgroud) 我正在准备从 CentOS 6 最终升级到 CentOS 7。现在,在版本 6 中,我们只使用映射到 AD 的 LDAP 进行身份验证。然后使用 Unix 的 Active Directory 扩展中的 UID 和 GID。
在我对 CentOS 7 的实验中,我浏览了解释如何加入域的文档(我认为它来自 Red Hat)。这个过程大多是直截了当的,而且大多效果很好。但是,它不仅仅使用 AD Unix 属性中的 UID 和 GID。它将这些 ID 映射到完全不同的 ID。在 AD 中,用户在 10000 范围内。CentOS7 为每个用户提供 625000000 范围内的 UID。
到目前为止,在我的小规模测试(3 个盒子)中,UID 似乎在它们之间保持一致,这很好。但是,当我开始在生产中推出 7 时,它将是一个逐渐升级的过程。我不会同时升级每个盒子。我担心用户在不同盒子上拥有不同 UID 的问题。有没有办法让 CentOS 7 只使用 AD Unix 属性中的 UID 和 GID?
这是我的 smb.conf:
[global]
workgroup = COMPANY
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的公司中部署 freeIPA。网络很简单:
我首先在 VM(包括 Synology NAS)上模拟所有内容。Synology 还应导出 NFS 共享并尽可能与 freeIPA 集成。另外,我希望它为 freeIPA 用户托管 NFS 主目录(主目录当前是客户端的本地目录)。
地位:
关于 Synology 客户端状态和我的具体问题:
ipa-client-installDSM没有,所以我尝试遵循通用和零散的(据我所知没有最新的手册)说明,例如:
尝试使用Windows AD帐户登录Linux系统。使用 SSSD 配置成功。
使用 LDAP 作为身份和访问提供程序,使用 Kerberos 作为身份验证提供程序。
我在没有将 Linux 系统加入域的情况下完成了这一切。
现在我尝试将 LDAP 配置为 sudo 提供程序。但它并不成功。我无法提升广告用户的 sudo 权限。我什至尝试过使用 sudoers 文件,在那里我可以提升特定用户的权限,但不能提升广告组的权限。
这是 SSSD 配置 wrt sudo 配置
**sudo_provider = ldap
ldap_sudo_search_base = ou=groups,dc=ad,dc=example,dc=com
ldap_sudorule_object_class = sudoRole
ldap_sudorule_object_class = top
ldap_sudorule_command = ALL
ldap_sudorule_host = ALL
ldap_sudorule_user = %domain_group
ldap_sudorule_runasuser = ALL
ldap_sudorule_runas = ALL
ldap_sudorule_runasgroup = ALL
ldap_sudorule_option = !authenticate**
Run Code Online (Sandbox Code Playgroud)
我尝试在调试级别 7 启用日志记录,它提到无法加载本地规则。
问候,乌代。
我们有 50 台 RH-5 机器和 70 台 RH-6 机器。我正在考虑决定我们应该为 LDAP 使用什么:
SSSD 可用于两个版本(RHEL5 - sssd 1.5 和 RHEL6 - sssd 1.9+)
最后一个选项意味着 RHEL5 机器将运行 sssd 1.5。
我更喜欢尽可能具有相同软件和配置的环境,除非人们说 sssd 对于 RH-6 来说确实更好,而 nscd/nslcd 对于 RH-5 来说确实更好。
最好的选择是什么?
我有许多运行各种 Linux 版本的服务器,所有服务器都通过 SSSD 设置为 OpenLDAP 客户端。我添加了一个 LDAP 组(系统管理员)。我还在我的所有服务器上添加了一个 sysadmins 组。sysadmins 组的成员会随着时间的推移而变化。
如何让 LDAP 组中的所有用户在登录时添加到本地组?
我们已经设置了一个有效的 SSSD+Samba+Krb5 捆绑包,用于在 Linux 计算机上授权域用户。授权工作正常,但getent 组示例不会返回组中用户的完整列表。而id命令显示用户所属的特定组
\nid mshepelev命令示例(pam_nas_admins组存在):
\n ~$ id mshepelev\n uid=578290105(mshepelev) gid=1145492938(linuxadm) \xd0\xb3\xd1\x80\xd1\x83\xd0\xbf\xd0\xbf\xd1\x8b=128(vboxusers),132(libvirtd),\n6990039486(exchange_terminal),45633573(domain admins),6753567(domain users),4563345(it dept base),1019817232(printer_it),\n5673883(linuxadm),4356383822(buh),25472572456(pam_nas_admins)....\nRun Code Online (Sandbox Code Playgroud)\ngetent 组 pam_nas_admins示例(该组中没有 mshepelev):
\n ~$ getent group pam_nas_admins\npam_nas_admins:*:6969932058:nhramchihin,apyataev,\nvshuykov,isaidashev,admin,nrosnovskiy,itugunov,\nmalfereva,mdimitraki,izinoviev,gkulakov,mcherenkov,kfomchenko,mkotov,aromanovskiy\nRun Code Online (Sandbox Code Playgroud)\n\n\n更新\n
\n
同样的情况出现在另一台电脑上,但对于用户 isaidashev 来说反之亦然。Id命令返回完整列表,getent 组 pam_nas_admins返回除用户本身之外的所有人(输出有mshepelev用户但没有isaidashev用户)
以下是配置文件:\n /etc/krb5.conf
\ncat /etc/krb5.conf\n[logging] \n default = FILE:/var/log/krb5libs.log \n kdc = FILE:/var/log/krb5kdc.log \n admin_server = FILE:/var/log/kadmind.log \n[libdefaults]\n default_realm = example.com\n kdc_timesync = …Run Code Online (Sandbox Code Playgroud)