如何在 Ubuntu 12.04 VPS 上使用 LDAP 对客户端计算机进行身份验证

简介


LDAP(轻量级目录访问协议)是将认证信息保存在单一集中位置的一种方式。在之前的一篇文章中,我们讨论了如何在 Ubuntu 12.04 VPS 上设置 LDAP 服务器。这解释了实际的服务器配置。

在本文中,我们将讨论如何配置客户端机器以远程验证各种服务的服务器。

要完成这个项目,您需要一个配置为 LDAP 服务器的 Ubuntu 12.04 服务器。如果您还没有这样做,请查看以前的指南的链接。您还需要另一个 Ubuntu 12.04 droplet 作为客户端机器。

安装客户端软件包


在客户端机器上,您需要安装一些软件包,以使 LDAP 服务器的认证功能正常运行。

您可以使用以下命令从默认的 Ubuntu 软件仓库安装它们:

sudo apt-get update
sudo apt-get install libpam-ldap nscd

在安装服务器组件时,您将被问及各种类似于安装服务器组件时的问题。

  • LDAP 服务器统一资源标识符:ldap://LDAP-服务器-IP-地址

    • 在输入服务器信息之前,将初始字符串从 “ldapi:///” 更改为 “ldap://”
  • 搜索基本的可分辨名称:

    • 这应该与您在 LDAP 服务器的 /etc/phpldapadmin/config.php 文件中设置的值相匹配。

    • 在文件中搜索:“ ‘server’,‘base’,array”。

    • 我们的示例是 “dc=test,dc=com”。

  • 要使用的 LDAP 版本:3

  • 使本地根数据库管理员:

  • LDAP 数据库是否需要登录?

  • 根用户的 LDAP 帐户:

    • 这也应该与您的 /etc/phpldapadmin/config.php 中的值匹配。

    • 在文件中搜索:“ ‘login’,‘bind_id’”。

    • 我们的示例是 “cn=admin,dc=test,dc=com”。

  • LDAP 根帐户密码:您的-LDAP-根密码

如果您犯了错误并且需要更改某个值,可以通过发出以下命令再次通过菜单进行操作:

sudo dpkg-reconfigure ldap-auth-config

配置客户端软件


我们必须调整一些文件,告诉我们的认证文件可以查看我们的 LDAP 服务器以获取认证信息。

首先,编辑 /etc/nsswitch.conf 文件。这将允许我们指定当用户发出认证更改命令时应修改 LDAP 凭据。

sudo nano /etc/nsswitch.conf

我们感兴趣的三行是 “passwd”、“group” 和 “shadow” 的定义。将它们修改为如下所示:

passwd:			<span class="highlight">ldap</span> compat
group:			<span class="highlight">ldap</span> compat
shadow:			<span class="highlight">ldap</span> compat

接下来,我们将向我们的 PAM 配置添加一个值。

PAM(可插入式认证模块)是一个连接可以提供认证的应用程序和需要认证的应用程序的系统。

PAM 已经在大多数计算机上实现,并且在不需要用户交互的情况下在后台工作。当我们安装和配置我们的 LDAP PAM 模块时,大部分所需的信息已经添加到配置文件中。

编辑 /etc/pam.d/common-session 文件:

sudo nano /etc/pam.d/common-session

在配置文件的底部添加一行:

session required	pam_mkhomedir.so skel=/etc/skel umask=0022

这将在 LDAP 用户登录时在客户端机器上创建一个家目录。

我们必须重新启动一个服务,以实施这些更改:

sudo /etc/init.d/nscd restart

权限


在 LDAP 服务器配置期间,我们创建了一个名为 “admin” 的组。这不是随机选择的。它与 Ubuntu 机器上默认创建的 “admin” 组相对应。

您添加到 “admin” 组的 LDAP 用户将具有对 sudo 命令的访问权限。

这是因为我们在 /etc/sudoers 文件中有一行,该行为 “admin” 组的成员提供了 sudo 访问权限。通过发出以下命令编辑文件:

sudo visudo

有一行是:

%admin ALL=(ALL) ALL

以百分号(%)开头的条目指定一个组而不是一个用户。如果您希望禁用此功能,或者仅授予特定用户此功能,请注释掉此行:

#%admin ALL=(ALL) ALL

作为 LDAP 用户登录


我们现在已经配置了我们的客户端机器,足以能够以我们的 LDAP 用户之一的身份登录。这个用户不必存在于客户端机器上。

在一个新的终端窗口中(最好保持原始终端窗口登录,以防配置错误),使用 LDAP 用户的凭据 ssh 进入客户端机器:

ssh <span class="highlight">LDAP_user</span>@<span class="highlight">LDAP_client_IP_Address</span>

您应该能够像本地创建用户一样登录。发出打印工作目录命令:

pwd

您应该看到您在 LDAP 服务器上选择的家目录正在在此机器上使用。它已按需创建,以为 LDAP 用户提供服务。

如果您注销并以不同的 LDAP 用户登录,您会看到将有两个家目录条目:

ls /home
user1  user2

如果您的用户是 “admin” 组的成员,并且您没有在上一节中禁用此功能,您将具有正常的 sudo 访问权限,否则将不会有。

如果您发出 passwd 命令来更改您的密码,您会看到它将修改您的 LDAP 凭据:

passwd
输入登录(LDAP)密码:

通过组限制访问


如果你只希望特定组的成员能够登录到这台特定的机器,你可以在 PAM 文件中配置这个限制。

以 root 权限编辑以下文件:

sudo nano /etc/pam.d/common-auth

在文件底部,我们将指定 PAM 应该查看安全访问文件以了解如何限制用户登录。在底部添加以下内容:

auth	required	pam_access.so

保存并关闭文件。

当配置了该设置时,PAM 引用的用于安全信息的文件位于 /etc/security/access.conf。现在以 root 权限打开这个文件:

sudo nano /etc/security/access.conf

我们需要在文件末尾添加一条规则。

行首的短横线(-)表示这是一个限制。从第一个冒号(:)到下一个冒号,我们指定这条规则适用于谁。

我们指定这适用于除了 root 和组 “admin” 之外的所有用户。组名放在括号内。

从第二个冒号到行尾,我们将指定规则适用的情况。在我们的情况下,该限制将适用于除了本地登录之外的所有情况。

-:ALL EXCEPT root (admin):ALL EXCEPT LOCAL

这将允许我们限制 “admin” 组的登录。我们可以添加其他组或更改组。

这也将允许我们通过 DigitalOcean 控制台上的 “控制台访问” 按钮登录,如果我们不小心锁定了 SSH。

请记住,这将适用于所有用户,而不仅仅是 LDAP 用户。因此,在客户端机器上创建的任何用户都需要是指定组的成员。

结论


现在,你应该能够使用集中式 LDAP 服务器对多台计算机进行身份验证。只要 LDAP 用户具有适当的登录凭据,他们就可以使用你以这种方式配置的任何机器。

这可以防止你的用户信息变得分散、重复且难以管理。当访问你的服务器或项目的用户数量增加,机器数量也在增长时,LDAP 身份验证可以提供巨大帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/792936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Data-efficient Fine-tuning for LLM-based Recommendation

目录 Introduction 利用大型语言模型&#xff08;LLM&#xff09;进行推荐最近引起了相当大的关注&#xff0c;其中微调在 LLM 的适应中发挥着关键作用。然而&#xff0c;在快速扩展的推荐数据上微调LLMs的成本限制了其实际应用。为了应对这一挑战&#xff0c;小样本微调提供了…

【深入理解计算机系统第3版】有符号数和无符号数转换以及移位运算练习题2.23

题目 考虑下面的C函数&#xff1a; int fun1(unsigned word) {return (int) ((word << 24) >> 24); }int fun2(unsigned word) {return ((int) word << 24) >> 24; } 假设一个采用补码运算的机器上以32位程序来执行这些函数。还假设有符号数值的右移…

代码审计-PHP原生开发篇SQL注入数据库监控正则搜索文件定位静态分析

文章目录 前言1、Bluecms-CNVD-1Day-常规注入审计分析2、emlog-CNVD-1Day-常规注入审计分析3、emlog-CNVD-1Day-2次注入审计分析 前言 挖掘技巧&#xff1a; -语句监控-数据库SQL监控排查可利用语句定向分析 -功能追踪-功能点文件SQL执行代码函数调用链追踪 -正则搜索-(update…

QT----opencv4.8.0编译cuda版本,QTcreater使用

目录 1 编译opencv4.8.02 验证能否加载GPU cuda12.1 opencv4.8.0 vs2019 cmake3.29 1 编译opencv4.8.0 打开cmake&#xff0c;选择opencv480路径&#xff0c;build路径随意 点击configure后&#xff0c;选择这些选项&#xff0c;opencv_word&#xff0c;cuda全选&#xff0c;…

工业组态 物联网组态 组态编辑器 web组态 组态插件 编辑器

体验地址&#xff1a;by组态[web组态插件] BY组态是一款非常优秀的纯前端的【web组态插件工具】&#xff0c;可无缝嵌入到vue项目&#xff0c;react项目等&#xff0c;由于是原生js开发&#xff0c;对于前端的集成没有框架的限制。同时由于BY组态只是一个插件&#xff0c;不能独…

【Linux】Ubuntu 文件权限管理

Linux 系统对文件的权限有着严格的控制&#xff0c;用于如果相对某个文件执行某种操作&#xff0c;必须具有对应的权限方可执行成功&#xff0c;这也是Linux有别于Windows的机制&#xff0c;也是基于这个权限机制&#xff0c;Linux可以有效防止病毒自我运行。因为运行的条件是必…

二十一、Rust 反射 获取类型

不同于 java 中的反射&#xff0c;Rust 没有提供以往意义上的运行时反射&#xff0c;取而代之的是 “编译期反射”&#xff0c;如 类型分析、类型转换、类型签名。但即便如此&#xff0c;也已经能对 Rust元编程 提供很多助力了。 这种操作&#xff0c;主要通过 Any 来实现&…

【接口】HTTP(1)|请求|响应

1、概念 Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;用于从万维网&#xff08;就是www&#xff09;服务器传输超文本到本地浏览器的传送协议。 HTTP协议是基于TCP的应用层协议&#xff0c;它不关心数据传输的细节&#xff0c;主要是用来规定客户端和…

详解python中的迭代

如果给定一个list或tuple&#xff0c;我们可以通过for循环来遍历这个list或tuple&#xff0c;这种遍历我们称为迭代&#xff08;Iteration&#xff09;。 在Python中&#xff0c;迭代是通过for ... in来完成的&#xff0c;而很多语言比如C语言&#xff0c;迭代list是通过下标完…

4月4号总结

java学习 一.接口 1.介绍 定义接口需要使用到关键字interface去定义接口。 格式如下&#xff1a; 类与接口的关系不是继承&#xff0c;而是实现&#xff0c;用关键字 implements &#xff0c;格式如下&#xff1a; 这个类去实现接口&#xff0c;其中的关系就相当于&#xf…

Python 使用matplotlib创建各种静态、动态、交互式和3D图表的功能

在Python中&#xff0c;你可以使用各种库来创建和显示图表。其中&#xff0c;最常用的库之一是matplotlib&#xff0c;它提供了创建各种静态、动态、交互式和3D图表的功能。另一个流行的库是seaborn&#xff0c;它基于matplotlib&#xff0c;并提供了更高级别的界面&#xff0c…

基于Socket简单的UDP网络程序 vs 简单的TCP网络程序

⭐小白苦学IT的博客主页 ⭐初学者必看&#xff1a;Linux操作系统入门 ⭐代码仓库&#xff1a;Linux代码仓库 ❤关注我一起讨论和学习Linux系统 1.前言 网络编程前言 网络编程是连接数字世界的桥梁&#xff0c;它让计算机之间能够交流信息&#xff0c;为我们的生活和工作带来便利…

蓝桥杯python组真题练习1

目录 1.单词分析 2.成绩统计 3.门牌制作 4.卡片 5.跑步训练 6.蛇形填数 7.时间显示 1.单词分析 1.单词分析 - 蓝桥云课 (lanqiao.cn) s list(input()) maxx 0 for i in s:num s.count(i)if num>maxx:sm imaxx numif num maxx:if ord(sm)>ord(i):sm i print…

【华为OD机试】数据单元的变化替换(JavaPythonC++JS实现)

本文收录于专栏:算法之翼 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解代码C/C++题解代码JS题解代码四.代码讲解(Ja…

RabbitMQ3.x之八_RabbitMQ中数据文件和目录位置

RabbitMQ3.x之_RabbitMQ中数据文件和目录位置 文章目录 RabbitMQ3.x之_RabbitMQ中数据文件和目录位置1. 概述2. 覆盖位置1. 路径和目录名称限制2.所需的文件和目录权限 3. 环境变量4. Linux、macOS、BSD上的默认位置5. Windows上的默认位置6. 通用二进制构建默认值 1. 概述 每…

Mysql 高性能的sql优化方案和建议

优化MySQL的性能是一项复杂而关键的任务&#xff0c;它可以通过多种方式来实现。下面是一些SQL优化的方案和建议&#xff1a; 索引优化&#xff1a; 确保经常查询的列都有索引。但不要过度索引&#xff0c;因为它可能会增加写入操作的开销。使用组合索引来覆盖多个查询条件。…

考研经验与科目学习建议

前言 24考研刚刚结束&#xff0c;成功上岸&#xff0c;回想起刚开始的时候的迷茫&#xff0c;加上因为迷茫而被卖书的坑的几百块钱。感慨万千&#xff0c;所以决定写下这篇文章。回想当时&#xff0c;因为笔者零基础&#xff0c;加上作为一名专升本的学生&#xff0c;惶恐因为…

代码随想录算法训练营第35天|435. 无重叠区间|763.划分字母区间|56. 合并区间

代码随想录算法训练营第35天|435. 无重叠区间|763.划分字母区间|56. 合并区间 详细布置 今天的三道题目&#xff0c;都算是 重叠区间 问题&#xff0c;大家可以好好感受一下。 都属于那种看起来好复杂&#xff0c;但一看贪心解法&#xff0c;惊呼&#xff1a;这么巧妙&#x…

【R语言实战】——Logistic回归模型

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

如何锁定鼠标光标在水平、垂直或45度对角线模式下移动 - 鼠标水平垂直移动锁定器简易教程

在我们进行精细工作例如如创建图标和图形设计时&#xff0c;通常需要我们对鼠标移动进行精确控制。一旦向左或向右轻微移动&#xff0c;都可能导致设计出错。若出现不必要的错误&#xff0c;我们极有可能不得不重新开始&#xff0c;这会令人感到非常沮丧。这种情况下&#xff0…