当前位置: 首页 > 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)已被证明在各种基于视觉的任务上提供了卓越的性…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...