AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1003510
Accepted
ZZ9
ZZ9
Asked: 2020-02-19 03:54:51 +0800 CST2020-02-19 03:54:51 +0800 CST 2020-02-19 03:54:51 +0800 CST

sssd 活动目录密码集成不起作用

  • 772

我们正在使用下面的配置设置 sssd 以与活动目录一起使用。

我们不使用属性映射,因为我们想使用 AD ldap 对象中定义的属性,例如自定义 uid、unixHomeDirectory 和公钥等。

sssd.conf:

[sssd]
domains = company.domain
config_file_version = 2
services = nss, pam, sudo, ssh
debug_level = 6

[domain/sew.online]
ad_hostname = EXAMPLESERVER01 #This is templated using ansible
ad_domain = company.domain
krb5_realm = COMPANY.DOMAIN
krb5_store_password_if_offline = true
use_fully_qualified_names = false
id_provider = ad
auth_provider = ad
access_provider = ad
chpass_provider = ad
lookup_family_order = ipv4_only
cache_credentials = true
dns_discovery_domain = {{ prod_domain_name }}
create_homedir = true
auto_private_groups = true
ad_gpo_access_control = permissive
ad_gpo_cache_timeout = 30
ad_site = SITENAME
case_sensitive = false
enumerate = false
default_shell = /bin/bash
ldap_schema = ad
ldap_id_mapping = False
ldap_user_shell = loginShell
ldap_user_principal = samAccountName
ldap_user_ssh_public_key = altSecurityIdentities
ldap_user_home_directory = unixHomeDirectory
fallback_homedir = /home/%u

ldap_force_upper_case_realm = true
ldap_purge_cache_timeout = 0
ldap_account_expire_policy = ad
ldap_group_search_base = DN=etc...
ldap_user_search_base = DN=etc...
debug_level = 6

[nss]
fallback_homedir = /home/%u
reconnection_retries = 3
debug_level = 6

[pam]
offline_credentials_expiration = 3
offline_failed_login_attempts = 10
offline_failed_login_delay = 30
pam_verbosity = 3
pam_id_timeout = 10
pam_pwd_expiration_warning = 30
reconnection_retries = 3
debug_level = 6

krb5.conf

[logging]
default = FILE:/var/log/krb5libs.log

[libdefaults]
default_realm = COMPANY.DOMAIN
ticket_lifetime = 1d
renew_lifetime = 7d
dns_lookup_realm = true
dns_lookup_kdc = true
rdns = false
allow_weak_crypto = false
permitted_enctypes = aes256-cts-hmac-sha1-96
default_tkt_enctypes = aes256-cts
default_tgs_enctypes = aes256-cts
kdc_timesync = 1
kdc_timeout = 3000
forwardable = true
renewable = true
proxiable = true
udp_preference_limit = 1
rnds = false

这是各种 sssd 日志文件的 pastebin: https ://pastebin.com/2P58uybg

日志显示已成功登录(通过 sshd 和公钥身份验证)的域用户尝试运行sudo bash

除密码外,广告集成按需要工作:

  • 用户可以使用他们的 sAMAccountName 登录
  • 如果我运行 id username 你可以从活动目录中看到用户名的组及其 gid
  • 计算机对象(使用 adcli 添加)显示在活动目录中
  • 计算机 SPN 似乎存在有效的 kerberos 票证

作为故障排除步骤,我在域控制器上配置了 LDAPS,并在 ubuntu 的 ca 存储中添加了一个内部受信任的证书。

我已经浏览了 sudo 日志(非常详细),它显示该组已成功匹配并允许用户 sudo。

任何帮助表示赞赏。

编辑:

主机操作系统:Ubuntu 18.04

nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat systemd sss
group:          compat systemd sss
shadow:         compat sss
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files sss
ethers:         db files
rpc:            db files

netgroup:       nis sss
sudoers:        files sss

为 ansible 角色安装的软件包:

  • adcli
  • krb5-用户
  • 固态硬盘
  • sssd工具
  • sssd 广告
  • sssd-krb5
  • python3-sss
  • libpam-sss
  • libnss-sss
  • libsss-sudo
kerberos sssd
  • 1 1 个回答
  • 3288 Views

1 个回答

  • Voted
  1. Best Answer
    hargut
    2020-02-26T10:32:59+08:002020-02-26T10:32:59+08:00

    查看提供的配置 sssd 尝试从 LDAP/AD 获取 sudo 规则,但似乎没有收到任何相应的条目。

        13:38:35 [sssd[sudo]] [sudosrv_query_cache] (0x0200): Searching sysdb with [(&(objectClass=sudoRule)(|(sudoUser=ALL)([email protected])(sudoUser=#1010101)(sudoUser=%[email protected])(sudoUser=%[email protected])(sudoUser=%[email protected])(sudoUser=%[email protected])(sudoUser=%[email protected])(sudoUser=%[email protected])(sudoUser=%[email protected])))]
        13:38:35 [sssd[sudo]] [sudosrv_fetch_rules] (0x0400): Returning 0 rules for [[email protected]@company.domain]
    

    Ubuntu sssd sudo 故障排除指南说明了一些关于如何验证 sudo 规则查询的提示。 https://docs.pagure.org/SSSD.sssd/users/sudo_troubleshooting.html#what-to-look-for-in-the-logs

    看起来您的配置缺少用于配置 sudo 规则的 ldap 详细信息的相应部分。由于 sssd 版本 1.11.5 应该可以使用sssd_provider = ad.

    https://pagure.io/SSSD/sssd/issue/2256

    最近的手册页状态: https ://linux.die.net/man/5/sssd.conf

    sudo_provider (string) 
    Default: The value of "id_provider" is used if it is set. 
    "none" disables SUDO explicitly.
    

    如果您使用的 sssd 版本足够新,则应将其配置为sudo_provider=ad.

    根据 Ubuntu sssd 1.16 版,当使用 ad 作为 sudo 提供程序时,这些选项似乎取自 sssd-ldap 选项: https ://github.com/SSSD/sssd/blob/sssd-1_16_4/src/providers/ad/ ad_sudo.c#L49

        ad_options->id->sudorule_map = ldap_options->sudorule_map;
    

    来自 sssd-sudo 手册页的 sudo 规则映射的 Thefore 文档应该适用:https ://linux.die.net/man/5/sssd-sudo

    建议设置: ldap_sudo_search_base =根据您的需要。

    如果您想使用基于文件的 sudo 建议尝试使用以下方法禁用提供程序: sudo_provider=none 此外,最好在/etc/nssswitch.conf添加/修改行时明确禁用 sssd 查找sudoers: files。

    • 2

相关问题

  • 为 WSS Reporting Services 设置 Kerberos 身份验证所涉及的风险

  • 针对 Active Directory 对 OpenBSD 进行身份验证

  • MAC 10.4.11 & Win2k8

  • 有没有办法让 Kerberos 凭证委托两次?为什么不?

  • Windows 可以与 LDAP 集成吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve