当前位置: 首页 > news >正文

使用 SSSD 进行网络用户身份验证

文章目录

  • 使用 SSSD 进行网络用户身份验证
    • SSSD和Active Directory
      • 先决条件、假设和要求
      • 软件安装
      • 加域
    • SSSD配置
      • 自动创建HOME目录
    • 检查和验证
  • Kerberos票证
  • 已知的问题
    • 参考

使用 SSSD 进行网络用户身份验证

SSSD 代表系统安全服务守护程序,它实际上是处理来自各种网络源的身份验证、授权以及用户和组信息的守护程序集合。它的核心是支持:

  1. Active Directory
  2. LDAP
  3. Kerberos

SSSD 提供 PAM 和 NSS 模块,将这些远程源集成到您的系统中,并允许远程用户登录并被识别为有效用户,包括组成员身份。为了允许断开连接操作,SSSD还可以缓存此信息,以便用户可以在发生网络故障或其他类似问题时继续登录。

本文将重点介绍部署 SSSD 的最常见方案。

SSSD和Active Directory

本节介绍如何使用 sssd 通过使用 sssd 的“ad”提供程序对用户登录进行身份验证。最后,Active Directory 用户将能够使用其 AD 凭据登录主机。组成员身份也将保持。

先决条件、假设和要求

  1. 本文不解释Active Directory,它是如何工作的,如何设置一个,或如何维护它。
  2. 本文假定已配置有效的 Active Directory 域,并且您有权访问凭据以将计算机加入该域。
  3. 域控制器充当域的权威 DNS 服务器。
  4. 域控制器是主 DNS 解析器(请查阅 systemd-resolve --status
  5. 系统时间正确且同步,通过 chrony 或 ntp 等服务进行维护
  6. 此示例中使用的域是 yyaw.com 。

软件安装

安装以下软件包:

  1. sssd-ad
  2. sssd-tools
  3. realmd
  4. adcli

加域

我们将使用 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 将拒绝启动!此配置文件的重点:

  1. cache_credentials:字面意思是缓存。这允许在无法访问AD服务器时登录
  2. home directory:默认情况下 /home/<user>@<domain> 。例如,AD 用户 tingting 将有一个主目录 /home/tingting@yyaw.com
  3. use_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 以了解现有的解决方法。

参考

  1. https://sssd.io/
作者:岬淢箫声
日期:2023年10月23日
版本:1.0
链接:http://caowei.blog.csdn.net

相关文章:

使用 SSSD 进行网络用户身份验证

文章目录 使用 SSSD 进行网络用户身份验证SSSD和Active Directory先决条件、假设和要求软件安装加域 SSSD配置自动创建HOME目录 检查和验证 Kerberos票证已知的问题参考 使用 SSSD 进行网络用户身份验证 SSSD 代表系统安全服务守护程序&#xff0c;它实际上是处理来自各种网络…...

紫光展锐携中国联通完成RedCap芯片V517孵化测试

近日&#xff0c;紫光展锐携手中国联通5G物联网OPENLAB开放实验室&#xff08;简称“OPENLAB实验室”&#xff09;共同完成RedCap芯片V517创新孵化&#xff0c;并实现在联通5G全频段3.5GHz、2.1GHz、900MHz下的端到端业务验证测试。 V517是一款基于紫光展锐5G成熟平台设计与研发…...

算法通关村第十一关青铜挑战——移位运算详解

大家好&#xff0c;我是怒码少年小码。 计算机到底是怎么处理数字的&#xff1f; 数字在计算机中的表示 机器数 一个数在计算机中的二进制表示形式&#xff0c;叫做这个数的机器数。 机器数是带符号的&#xff0c;在计算机用一个数的最高位存放符号&#xff0c;正数为0&am…...

2023年面试测试工程师一般问什么问题?

面试和项目一起&#xff0c;是自学路上的两大拦路虎。面试测试工程师一般会被问什么问题&#xff0c;总结下来一般是下面这4类&#xff1a; 1.做好自我介绍 2.项目相关问题 3.技术相关问题 4.人事相关问题 接下来&#xff0c;主要从以上四个方向分别展开介绍。为了让大家更有获…...

2023年中国汽车覆盖件模具竞争格局、市场规模及行业需求前景[图]

汽车覆盖件模具是汽车车身生产的重要工艺装备&#xff0c;其设计和制造时间约占汽车开发周期的 2/3&#xff0c;是汽车换型的重要制约因素之一。汽车覆盖件模具具有尺寸大、工作型面复杂、技术标准高等特点&#xff0c;属于技术密集型产品。汽车覆盖件模具按以其冲压的汽车覆盖…...

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支持潜在二义性/歧义&#xff0c;也不要使用。 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&#xff0c;来作为内部的日志。日志的jar包是org.springframework:spring-jcl:6.0.10。查看org.apache.commons.logging.LogAdapter Java package org.apache.commons.log…...

一种基于HTTPS实现的Web账号登录Linux桌面系统的实现方案

问题由来 客户需求计划列入支持第三方帐号系统&#xff0c;包括Web账号。需求来源是用户想要用它们的帐号直接登录Linux Deepin操作系统。一个失败的实现方案是用户以较小的成本改造帐号管理系统发布HTTP服务&#xff0c;我们开发一个PAM模块与Web服务器交互&#xff0c;数据格…...

【Linux】psplash制作Linux开机动画

1. 下载psplash软件 下载psplash源码到ubuntu中&#xff1a; 下载地址&#xff1a;https://git.yoctoproject.org/psplash/commit/安装依赖环境 sudo apt-get install libgdk-pixbuf2.0-dev2. 准备图片 开机动画静态图片&#xff1a;psplash-poky.png开机动画进度条图片&…...

WMS透明仓库:实现仓储的全方位可视化与优化

一、WMS透明仓库的定义与特点 1. WMS透明仓库的定义&#xff1a;WMS透明仓库是一种基于信息技术的仓库管理系统&#xff0c;通过实时数据采集、分析和可视化&#xff0c;将仓库内外的物流流程、库存状态、人员活动等信息以透明的方式展示给相关利益方。 2. 实时数据采集&…...

软考系统架构师知识点集锦一:系统工程与信息系统基础

一、考情分析 二、考点精讲 2.1 软件开发方法 &#xff08;1&#xff09;结构化开发方法 用户至上&#xff0c;自顶向下,逐步分解(求解)&#xff0c;严格区分工作阶段&#xff0c;每阶段有任务与成果&#xff0c;强调系统开发过程的整体性和全局性&#xff0c;系统开发过程工…...

建筑模板常见的问题有哪些?

在建筑模板的使用过程中&#xff0c;常见的问题包括以下几个方面&#xff1a;1. 模板质量问题&#xff1a; - 模板破损或变形&#xff1a;模板可能在运输、安装或使用过程中受到损坏&#xff0c;如裂缝、断裂或变形。这可能导致模板的稳定性和承载能力下降。 - 模板尺寸不准确&…...

windows11录屏功能详解,记录你的精彩时刻

windows 11是微软最新推出的操作系统版本&#xff0c;拥有很多简单便捷的功能&#xff0c;包括内置的录屏工具&#xff0c;让用户可以轻松地录制屏幕内容。但是很多人不了解windows11录屏功能&#xff0c;本文将详细介绍windows 11录屏的三个方法&#xff0c;以及它们的优势和适…...

重入漏洞Victim

重入漏洞 顾名思义&#xff0c;重入漏洞可以简单理解为“重新进入的漏洞”。举个简单的例子&#xff0c;你往某个合约里存入了1个Ether&#xff0c;然后点击退款&#xff0c;按理来说只能退一个Ether&#xff0c;但是可以利用重入漏洞反复退款&#xff0c;把合约里的Ether掏空…...

wordpress数据库迁移Invalid default value for ‘comment_date‘

问题说明 最近在往新的电脑上迁移一个wordpress网站&#xff0c;在往新电脑上的mysql数据库中导入数据时&#xff0c;报错&#xff1a;1067 - Invalid default value for comment_date。 异常分析 这个错误的字面意思就是字段‘comment_date’的默认值是无效的&#xff0c;于…...

Xray联动RAD实现自动扫描教程

Rad下载地址&#xff1a;https://github.com/chaitin/rad xray下载地址&#xff1a;https://github.com/chaitin/xray Xray启动监听&#xff1a; xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output xray-xxx.html RAD启动爬虫抓包&#xff1a; rad_win…...

ES6 Proxy

定义&#xff1a; Proxy 可以理解成&#xff0c;在目标对象之前架设一层“拦截”&#xff0c;外界对该对象的访问&#xff0c;都必须先通过这层拦截&#xff0c;因此提供了一种机制&#xff0c;可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理&#xff0c;用在这里表…...

LSKA(大可分离核注意力):重新思考CNN大核注意力设计

文章目录 摘要1、简介2、相关工作3、方法4、实验5、消融研究6、与最先进方法的比较7、ViTs和CNNs的鲁棒性评估基准比较8、结论摘要 https://arxiv.org/pdf/2309.01439.pdf 大型可分离核注意力(LSKA)模块的视觉注意力网络(VAN)已被证明在各种基于视觉的任务上提供了卓越的性…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...