使用 SSSD 进行网络用户身份验证
文章目录
- 使用 SSSD 进行网络用户身份验证
- SSSD和Active Directory
- 先决条件、假设和要求
- 软件安装
- 加域
- SSSD配置
- 自动创建HOME目录
- 检查和验证
- Kerberos票证
- 已知的问题
- 参考
使用 SSSD 进行网络用户身份验证
SSSD 代表系统安全服务守护程序,它实际上是处理来自各种网络源的身份验证、授权以及用户和组信息的守护程序集合。它的核心是支持:
- Active Directory
- LDAP
- Kerberos
SSSD 提供 PAM 和 NSS 模块,将这些远程源集成到您的系统中,并允许远程用户登录并被识别为有效用户,包括组成员身份。为了允许断开连接操作,SSSD还可以缓存此信息,以便用户可以在发生网络故障或其他类似问题时继续登录。
本文将重点介绍部署 SSSD 的最常见方案。
SSSD和Active Directory
本节介绍如何使用 sssd 通过使用 sssd 的“ad”提供程序对用户登录进行身份验证。最后,Active Directory 用户将能够使用其 AD 凭据登录主机。组成员身份也将保持。
先决条件、假设和要求
- 本文不解释Active Directory,它是如何工作的,如何设置一个,或如何维护它。
- 本文假定已配置有效的 Active Directory 域,并且您有权访问凭据以将计算机加入该域。
- 域控制器充当域的权威 DNS 服务器。
- 域控制器是主 DNS 解析器(请查阅
systemd-resolve --status) - 系统时间正确且同步,通过 chrony 或 ntp 等服务进行维护
- 此示例中使用的域是 yyaw.com 。
软件安装
安装以下软件包:
sssd-adsssd-toolsrealmdadcli
加域
我们将使用 realm realmd 软件包中的命令加入域并创建 sssd 配置。让我们验证域是否可通过 DNS 发现,运行:sudo realm -v discover yyaw.com,结果如下:
* Resolving: _ldap._tcp.yyaw.com* Performing LDAP DSE lookup on: 192.1.4.9* Successfully discovered: yyaw.com
yyaw.comtype: kerberosrealm-name: yyaw.comdomain-name: yyaw.comconfigured: noserver-software: active-directoryclient-software: sssdrequired-package: sssd-toolsrequired-package: sssdrequired-package: libnss-sssrequired-package: libpam-sssrequired-package: adclirequired-package: samba-common-bin
这将执行多项检查并确定与 sssd 一起使用的最佳软件堆栈。SSSD 可以通过 PackageKit 安装缺少的软件包,但我们之前已经安装了它们。现在让我们加入域:sudo realm join yyaw.com。此命令没有消息输出。如果对此命令的内幕比较好奇,可以增加-v参数,输出如下:
* Resolving: _ldap._tcp.yyaw.com* Performing LDAP DSE lookup on: 192.1.4.9* Successfully discovered: yyaw.com
Password for Administrator: * Unconditionally checking packages* Resolving required packages* LANG=C /usr/sbin/adcli join --verbose --domain yyaw.com --domain-realm yyaw.com --domain-controller 192.1.4.9 --login-type user --login-user Administrator --stdin-password* Using domain name: yyaw.com* Calculated computer account name from fqdn: AD-CLIENT* Using domain realm: yyaw.com* Sending NetLogon ping to domain controller: 192.1.4.9* Received NetLogon info from: nfs.yyaw.com* Wrote out krb5.conf snippet to /var/cache/realmd/adcli-krb5-hUfTUg/krb5.d/adcli-krb5-conf-hv2kzi* Authenticated as user: Administrator@yyaw.com* Looked up short domain name: AD1* Looked up domain SID: S-1-5-21-2660147319-831819607-3409034899* Using fully qualified name: ad-client.yyaw.com* Using domain name: yyaw.com* Using computer account name: AD-CLIENT* Using domain realm: yyaw.com* Calculated computer account name from fqdn: AD-CLIENT* Generated 120 character computer password* Using keytab: FILE:/etc/krb5.keytab* Found computer account for AD-CLIENT$ at: CN=AD-CLIENT,CN=Computers,DC=yyaw,DC=com* Sending NetLogon ping to domain controller: 192.1.4.9* Received NetLogon info from: nfs.yyaw.com* Set computer password* Retrieved kvno '3' for computer account in directory: CN=AD-CLIENT,CN=Computers,DC=yyaw,DC=com* Checking RestrictedKrbHost/ad-client.yyaw.com* Added RestrictedKrbHost/ad-client.yyaw.com* Checking RestrictedKrbHost/AD-CLIENT* Added RestrictedKrbHost/AD-CLIENT* Checking host/ad-client.yyaw.com* Added host/ad-client.yyaw.com* Checking host/AD-CLIENT* Added host/AD-CLIENT* Discovered which keytab salt to use* Added the entries to the keytab: AD-CLIENT$@yyaw.com: FILE:/etc/krb5.keytab* Added the entries to the keytab: host/AD-CLIENT@yyaw.com: FILE:/etc/krb5.keytab* Added the entries to the keytab: host/ad-client.yyaw.com@yyaw.com: FILE:/etc/krb5.keytab* Added the entries to the keytab: RestrictedKrbHost/AD-CLIENT@yyaw.com: FILE:/etc/krb5.keytab* Added the entries to the keytab: RestrictedKrbHost/ad-client.yyaw.com@yyaw.com: FILE:/etc/krb5.keytab* /usr/sbin/update-rc.d sssd enable* /usr/sbin/service sssd restart* Successfully enrolled machine in realm
默认情况下,realm将使用域的Administrator帐户来请求加入。如果您需要使用其他帐户,请使用 -U 该选项将其传递给该工具。加入域的另一种流行方式是使用 OTP 或一次性密码令牌。为此,请使用该 --one-time-password 选项。
SSSD配置
realm工具已经负责创建 sssd 配置、添加 pam 和 nss 模块以及启动必要的服务。/etc/sssd/sssd.conf文件已存在如下内容:
[sssd]
domains = yyaw.com
config_file_version = 2
services = nss, pam[domain/yyaw.com]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = yyaw.com
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = yyaw.com
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad
我们要记住的非常重要的一点是,此文件必须具有权限 0600 且所有权为 root:root,否则 sssd 将拒绝启动!此配置文件的重点:
cache_credentials:字面意思是缓存。这允许在无法访问AD服务器时登录home directory:默认情况下/home/<user>@<domain>。例如,AD 用户 tingting 将有一个主目录/home/tingting@yyaw.comuse_fully_qualified_names:用户的形式将是user@domain,而不仅仅是用户。仅当您确定没有其他域将通过几种可能的信任关系之一加入 AD 林时,才应更改此设置。
自动创建HOME目录
该工具 realm 没有为我们做的是 pam_mkhomedir 设置 ,以便网络用户在登录时可以获得主目录。剩余的步骤可以通过运行以下命令来完成:
sudo pam-auth-update --enable mkhomedir
检查和验证
现在,您应该能够获取有关 AD 用户的信息。在此示例中,tingting Smith 是 AD 用户,运行命令:getent passwd tingting@yyaw.com,应当看到输出:tingting@yyaw.com:*:1725801106:1725800513:tingting Smith:/home/tingting@yyaw.com:/bin/bash。再检查组权限:groups tingting@yyaw.com,结果输出:tingting@yyaw.com : domain users@yyaw.com engineering@yyaw.com。如果您刚刚更改了用户的组成员身份,则由于缓存,sssd 可能需要一段时间才能注意到。最后,我们尝试登录怎么样,运行:sudo login,结果:
ad-client login: tingting@yyaw.com
Password:
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-24-generic x86_64)
...
Creating directory '/home/tingting@yyaw.com'.
tingting@yyaw.com@ad-client:~$
请注意主目录是如何自动创建的。您也可以使用 ssh,但请注意,由于多个 @ 符号,该命令看起来有点有趣。运行:ssh tingting@yyaw.com@192.1.4.8,结果:
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-24-generic x86_64)
(...)
Last login: Thu Oct 16 21:22:55 2023
tingting@yyaw.com@ad-client:~$
在 ssh 示例中,使用了公钥身份验证,因此不需要密码。请记住,默认情况下,在 中 /etc/ssh/sshd_config 禁用 ssh 密码身份验证。
Kerberos票证
如果安装 krb5-user ,则 AD 用户还将在登录时获得 kerberos 票证。运行:klist,结果:
Ticket cache: FILE:/tmp/krb5cc_1725801106_9UxVIz
Default principal: tingting@yyaw.comValid starting Expires Service principal
04/16/20 21:32:12 04/17/20 07:32:12 krbtgt/yyaw.com@yyaw.comrenew until 04/17/20 21:32:12
在安装 krb5-user 时应该不会有进一步的配置提示,因为realm已提前配置。让我们使用 smbclient 使用 kerberos 身份验证进行测试,以列出域控制器的共享。运行:smbclient -k -L nfs.yyaw.com,结果:
Sharename Type Comment--------- ---- -------ADMIN$ Disk Remote AdminC$ Disk Default shareIPC$ IPC Remote IPCNETLOGON Disk Logon server share SYSVOL Disk Logon server share
SMB1 disabled -- no workgroup available
Ticket cache: FILE:/tmp/krb5cc_1725801106_9UxVIz
Default principal: tingting@yyaw.comValid starting Expires Service principal
10/16/23 21:32:12 10/17/23 07:32:12 krbtgt/yyaw.com@yyaw.comrenew until 10/17/23 21:32:12
10/16/23 21:32:21 10/17/23 07:32:12 cifs/nfs.yyaw.com@yyaw.com
已知的问题
登录加入Active Directory域的系统时, sssd (负责此集成的软件包)将默认尝试应用组策略。在某些情况下,如果缺少特定策略,登录将被拒绝。这在BUG #1934997 中被跟踪。在修复程序可用之前,请参阅该错误报告中的注释 #5 以了解现有的解决方法。
参考
- https://sssd.io/
| 作者: | 岬淢箫声 |
| 日期: | 2023年10月23日 |
| 版本: | 1.0 |
| 链接: | http://caowei.blog.csdn.net |
相关文章:
使用 SSSD 进行网络用户身份验证
文章目录 使用 SSSD 进行网络用户身份验证SSSD和Active Directory先决条件、假设和要求软件安装加域 SSSD配置自动创建HOME目录 检查和验证 Kerberos票证已知的问题参考 使用 SSSD 进行网络用户身份验证 SSSD 代表系统安全服务守护程序,它实际上是处理来自各种网络…...
紫光展锐携中国联通完成RedCap芯片V517孵化测试
近日,紫光展锐携手中国联通5G物联网OPENLAB开放实验室(简称“OPENLAB实验室”)共同完成RedCap芯片V517创新孵化,并实现在联通5G全频段3.5GHz、2.1GHz、900MHz下的端到端业务验证测试。 V517是一款基于紫光展锐5G成熟平台设计与研发…...
算法通关村第十一关青铜挑战——移位运算详解
大家好,我是怒码少年小码。 计算机到底是怎么处理数字的? 数字在计算机中的表示 机器数 一个数在计算机中的二进制表示形式,叫做这个数的机器数。 机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0&am…...
2023年面试测试工程师一般问什么问题?
面试和项目一起,是自学路上的两大拦路虎。面试测试工程师一般会被问什么问题,总结下来一般是下面这4类: 1.做好自我介绍 2.项目相关问题 3.技术相关问题 4.人事相关问题 接下来,主要从以上四个方向分别展开介绍。为了让大家更有获…...
2023年中国汽车覆盖件模具竞争格局、市场规模及行业需求前景[图]
汽车覆盖件模具是汽车车身生产的重要工艺装备,其设计和制造时间约占汽车开发周期的 2/3,是汽车换型的重要制约因素之一。汽车覆盖件模具具有尺寸大、工作型面复杂、技术标准高等特点,属于技术密集型产品。汽车覆盖件模具按以其冲压的汽车覆盖…...
vue3项目运行报错import zhCn from “element-plus/lib/locale/lang/zh-cn“
解决办法 import zhCn from "element-plus/lib/locale/lang/zh-cn";修改为 import zhCn from "element-plus/dist/locale/zh-cn.mjs";...
读书笔记:Effective C++ 2.0 版,条款26(歧义)、条款27(禁止部分隐式生成的函数)
条款26: 当心潜在的歧义 即使cpp支持潜在二义性/歧义,也不要使用。 void f(int); void f(char); double d 6.02; f(d); //需要明确转换多继承充满了潜在二义性/歧义的可能。 class Base1 {public: int doIt();}; class Base2 {public: void doIt();}; class Deri…...
MySQL基本操作之数据库设计理论
1、数据的设计准则 1)糟糕的数据库设计表现在以下几个方面: 访问数据效率低下存在大量的数据冗余,浪费存储空间更新和检索数据时会出现许多问题2)良好的数据库设计表现在以下几方面: 访问效率高减少数据冗余,节省存储空间便于进一步扩展可以使应用程序的开发变得更容易…...
SpringBoot的日志系统(日志分组、文件输出、滚动归档)
[toc](目录) > SpringBoot3需要jdk17 # 1. 简介 1. Spring5及以后Spring自己实现了commons-logging,来作为内部的日志。日志的jar包是org.springframework:spring-jcl:6.0.10。查看org.apache.commons.logging.LogAdapter Java package org.apache.commons.log…...
一种基于HTTPS实现的Web账号登录Linux桌面系统的实现方案
问题由来 客户需求计划列入支持第三方帐号系统,包括Web账号。需求来源是用户想要用它们的帐号直接登录Linux Deepin操作系统。一个失败的实现方案是用户以较小的成本改造帐号管理系统发布HTTP服务,我们开发一个PAM模块与Web服务器交互,数据格…...
【Linux】psplash制作Linux开机动画
1. 下载psplash软件 下载psplash源码到ubuntu中: 下载地址:https://git.yoctoproject.org/psplash/commit/安装依赖环境 sudo apt-get install libgdk-pixbuf2.0-dev2. 准备图片 开机动画静态图片:psplash-poky.png开机动画进度条图片&…...
WMS透明仓库:实现仓储的全方位可视化与优化
一、WMS透明仓库的定义与特点 1. WMS透明仓库的定义:WMS透明仓库是一种基于信息技术的仓库管理系统,通过实时数据采集、分析和可视化,将仓库内外的物流流程、库存状态、人员活动等信息以透明的方式展示给相关利益方。 2. 实时数据采集&…...
软考系统架构师知识点集锦一:系统工程与信息系统基础
一、考情分析 二、考点精讲 2.1 软件开发方法 (1)结构化开发方法 用户至上,自顶向下,逐步分解(求解),严格区分工作阶段,每阶段有任务与成果,强调系统开发过程的整体性和全局性,系统开发过程工…...
建筑模板常见的问题有哪些?
在建筑模板的使用过程中,常见的问题包括以下几个方面:1. 模板质量问题: - 模板破损或变形:模板可能在运输、安装或使用过程中受到损坏,如裂缝、断裂或变形。这可能导致模板的稳定性和承载能力下降。 - 模板尺寸不准确&…...
windows11录屏功能详解,记录你的精彩时刻
windows 11是微软最新推出的操作系统版本,拥有很多简单便捷的功能,包括内置的录屏工具,让用户可以轻松地录制屏幕内容。但是很多人不了解windows11录屏功能,本文将详细介绍windows 11录屏的三个方法,以及它们的优势和适…...
重入漏洞Victim
重入漏洞 顾名思义,重入漏洞可以简单理解为“重新进入的漏洞”。举个简单的例子,你往某个合约里存入了1个Ether,然后点击退款,按理来说只能退一个Ether,但是可以利用重入漏洞反复退款,把合约里的Ether掏空…...
wordpress数据库迁移Invalid default value for ‘comment_date‘
问题说明 最近在往新的电脑上迁移一个wordpress网站,在往新电脑上的mysql数据库中导入数据时,报错:1067 - Invalid default value for comment_date。 异常分析 这个错误的字面意思就是字段‘comment_date’的默认值是无效的,于…...
Xray联动RAD实现自动扫描教程
Rad下载地址:https://github.com/chaitin/rad xray下载地址:https://github.com/chaitin/xray Xray启动监听: xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output xray-xxx.html RAD启动爬虫抓包: rad_win…...
ES6 Proxy
定义: Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表…...
LSKA(大可分离核注意力):重新思考CNN大核注意力设计
文章目录 摘要1、简介2、相关工作3、方法4、实验5、消融研究6、与最先进方法的比较7、ViTs和CNNs的鲁棒性评估基准比较8、结论摘要 https://arxiv.org/pdf/2309.01439.pdf 大型可分离核注意力(LSKA)模块的视觉注意力网络(VAN)已被证明在各种基于视觉的任务上提供了卓越的性…...
安卓画廊管理工具:EhViewer开源应用全解析
安卓画廊管理工具:EhViewer开源应用全解析 【免费下载链接】EhViewer 🥥 A fork of EhViewer, feature requests are not accepted. Forked from https://gitlab.com/NekoInverter/EhViewer 项目地址: https://gitcode.com/GitHub_Trending/ehvi/EhVie…...
Trae智能体实战:手把手教你搭建一个会写技术博客的刷题助手
Trae智能体实战:手把手教你搭建一个会写技术博客的刷题助手 在技术社区持续输出高质量内容,已经成为开发者建立个人品牌的重要方式。但很多程序员面临一个现实困境:刷题已经耗费大量精力,哪还有时间整理解题思路并写成技术博客&am…...
Stimulsoft 报告和仪表盘2026.2即将推出,来看具体详情
Stimulsoft Reports & Dashboards 2026.2 版本即将发布。本次更新将围绕报表查看器、数据源能力、参数验证以及仪表盘设计等多个方向展开,进一步增强产品在报表开发与可视化分析场景中的灵活性与智能化水平。 从 React 报表查看器,到由人工智能驱动…...
别再乱用List了!Unity中Queue的5个高效应用场景对比
Unity中Queue的5个高效应用场景:性能对比与实战指南 在Unity开发中,数据结构的选择往往决定了游戏性能的上限。很多开发者习惯性地使用List来解决所有问题,却忽视了Queue在特定场景下的性能优势。本文将深入分析Queue的底层原理,并…...
MoCo训练完全指南:从入门到精通的10个常见错误与解决方案
MoCo训练完全指南:从入门到精通的10个常见错误与解决方案 【免费下载链接】moco PyTorch implementation of MoCo: https://arxiv.org/abs/1911.05722 项目地址: https://gitcode.com/gh_mirrors/mo/moco MoCo(Momentum Contrast)是自…...
cv_resnet18_ocr-detection进阶玩法:导出ONNX模型跨平台使用
cv_resnet18_ocr-detection进阶玩法:导出ONNX模型跨平台使用 1. 为什么需要导出ONNX模型 当你已经熟悉了cv_resnet18_ocr-detection的基本使用后,可能会遇到这样的需求:想把模型部署到手机APP上,或者集成到C项目中,又…...
AI Agent开发(3) -如何做上下文管理?
目录前言思路collection设计示例前言 书接上文 https://blog.csdn.net/roadtohacker/article/details/156004134 在Agent开发中,上下文信息的处理很重要,当用户给出新的输入的时候,如何让模型保持对旧消息的记忆?我们知道&#…...
东南大学SEUThesis:3分钟搞定论文格式的终极指南
东南大学SEUThesis:3分钟搞定论文格式的终极指南 【免费下载链接】SEUThesis 项目地址: https://gitcode.com/gh_mirrors/seu/SEUThesis 每到毕业季,东南大学的学子们总会陷入格式调整的噩梦:页眉页脚反复修改、参考文献样式混乱、章…...
基于Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型单变量时序预测一键对比
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...
Licensecc:跨平台授权引擎与C++版权保护方案实践指南
Licensecc:跨平台授权引擎与C版权保护方案实践指南 【免费下载链接】licensecc Software licensing, copy protection in C. It has few dependencies and its cross-platform. 项目地址: https://gitcode.com/gh_mirrors/li/licensecc Licensecc作为轻量级授…...
