LDAP扩展ssh与sudo

2024-06-13 01:32
文章标签 扩展 ldap ssh sudo

本文主要是介绍LDAP扩展ssh与sudo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

配置 支持 SUDO 与 SSH

服务器端

SUDO 部分

  1. 查看系统安装 sudo 包过滤出 OpenLDAP

    rpm -qal | grep sudo | grep -i "OpenLDAP"
    /usr/share/doc/sudo-1.8.19p2/schema.OpenLDAP
    
  2. 拷贝该档案到 LDAP schema

    cp /usr/share/doc/sudo-1.8.19p2/schema.OpenLDAP /etc/openldap/schema/sudo.schema
    

SSH 部分

  1. 安装openssh-ldap如果不存在

    yum -y install openssh-ldap
    [root@ldap-server ~]# rpm -qal | grep openssh-ldap
    /usr/share/doc/openssh-ldap-7.4p1
    /usr/share/doc/openssh-ldap-7.4p1/HOWTO.ldap-keys
    /usr/share/doc/openssh-ldap-7.4p1/ldap.conf
    /usr/share/doc/openssh-ldap-7.4p1/openssh-lpk-openldap.ldif
    /usr/share/doc/openssh-ldap-7.4p1/openssh-lpk-openldap.schema
    /usr/share/doc/openssh-ldap-7.4p1/openssh-lpk-sun.ldif
    /usr/share/doc/openssh-ldap-7.4p1/openssh-lpk-sun.schema
    
  2. 拷贝档案到schema

    cp /usr/share/doc/openssh-ldap-7.4p1/openssh-lpk-openldap.schema /etc/openldap/schema
    

公共部分

增加自定义的 sudo.schemaopenssh-lpk-openldap.schema

  1. 删除源模式配置文件

    rm -rf /etc/openldap/slapd.d/cn=config/cn=schema/*
    
  2. 重新导入 LDAP 模式

    # 可根据自己的需要酌情导入, 此处一定注意顺序。
    cat schema_convert.conf
    # include /etc/openldap/schema/corba.schema
    include /etc/openldap/schema/core.schema
    include /etc/openldap/schema/cosine.schema
    # include /etc/openldap/schema/duaconf.schema
    # include /etc/openldap/schema/dyngroup.schema
    include /etc/openldap/schema/inetorgperson.schema
    # include /etc/openldap/schema/java.schema
    # include /etc/openldap/schema/misc.schema
    include /etc/openldap/schema/nis.schema
    # include /etc/openldap/schema/openldap.schema
    # include /etc/openldap/schema/pmi.schema
    include /etc/openldap/schema/collective.schema
    # include /etc/openldap/schema/ppolicy.schema
    include /etc/openldap/schema/sudo.schema
    include /etc/openldap/schema/openssh-lpk-openldap.schema
    
  3. 导入LDAP模式

    slaptest -f schema_convert.conf -F /etc/openldap/slapd.d
    config file testing succeeded
    
  4. 赋权与验证

    # 查看生成的文件
    ls -l /etc/openldap/slapd.d/cn=config/cn=schema/cn={0}corba.ldif
    cn={10}pmi.ldif
    cn={11}collective.ldif
    cn={12}ppolicy.ldif
    cn={13}sudo.ldif
    cn={14}openssh-lpk-openldap.ldif
    cn={1}core.ldif
    cn={2}cosine.ldif
    cn={3}duaconf.ldif
    cn={4}dyngroup.ldif
    cn={5}inetorgperson.ldif
    cn={6}java.ldif
    cn={7}misc.ldif
    cn={8}nis.ldif
    cn={9}openldap.ldif
    # 更改权限
    chown -R ldap.ldap /etc/openldap/slapd.d/
    # 重启服务
    systemctl restart slapd
    

配置页面

查看页面配置请移步到: 页面配置

phpldapadmin 預設是不支援 sudo 的設定,所以要到下面的網址抓 template

获取 Templates 网址

服务端配置

  • sudo页面配置

vim /usr/share/phpldapadmin/templates/creation/sudo.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE template SYSTEM "template.dtd">
<template>
<title>Sudo Policy</title>
<regexp>^ou=sudoers,dc=.*</regexp>
<icon>images/door.png</icon>
<description>New Sudo Policy</description>
<askcontainer>1</askcontainer>
<rdn>cn</rdn>
<visible>1</visible><objectClasses>
<objectClass id="sudoRole"></objectClass>
</objectClasses><attributes>
<attribute id="cn"><display>Policy Name</display><order>1</order><page>1</page>
</attribute>
<attribute id="sudoCommand"><display>Sudo Command</display><order>2</order><page>1</page><spacer>1</spacer>
</attribute>
<attribute id="sudoUser"><display>Sudo Users</display><option>=php.MultiList(/,(objectClass=posixAccount),uid,%uid%
(%cn%),sudoUser)</option><order>3</order><page>1</page><spacer>1</spacer>
</attribute>
<attribute id="sudoHost"><display>Sudo Hosts</display><array>10</array><order>3</order><page>1</page><spacer>1</spacer>
</attribute>
<attribute id="description"><type>textarea</type><display>Description</display><order>4</order><page>1</page>
</attribute>
</attributes>
</template>

vim /usr/share/phpldapadmin/templates/modification/sudo.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE template SYSTEM "template.dtd">
<template>
<title>Sudo Policy</title>
<regexp>^cn=.*,ou=sudoers,dc=.*</regexp>
<icon>images/door.png</icon>
<description>Sudo Policy</description>
<askcontainer>1</askcontainer>
<rdn>cn</rdn>
<visible>1</visible><objectClasses>
<objectClass id="sudoRole"></objectClass>
</objectClasses><attributes>
<attribute id="cn"><display>Policy Name</display><order>1</order><page>1</page>
</attribute>
<attribute id="sudoCommand"><display>Sudo Command</display><order>2</order><page>1</page><spacer>1</spacer>
</attribute>
<attribute id="sudoUser"><display>Sudo Users</display><order>3</order><page>1</page><spacer>1</spacer>
</attribute>
<attribute id="sudoHost"><display>Sudo Hosts</display><!-- <array>10</array> --><order>3</order><page>1</page><spacer>1</spacer>
</attribute>
<attribute id="description"><type>textarea</type><display>Description</display><order>4</order><page>1</page><cols>200</cols><rows>10</rows>
</attribute>
</attributes>
</template>
  • 建立 ousudoerssudo的规则

ou

role与应用

客户端配置

SUDO 部分

  • 配置 sudo-ldap.conf以支持使用LDAP服务端配置
vim /etc/sudo-ldap.conf
uri ldap://172.16.10.220
# ou 与页面配置的 ou 保持一致
sudoers_base ou=sudoers,dc=laoshiren,dc=com
  • 配置nsswitch.conf文件, 支持使用LDAP配置
vim /etc/nsswitch.conf
sudoers:    files   ldap

验证

与配置信息吻合,成功

➜  ~ ssh test_user@172.16.10.10
test_user@172.16.10.10's password:
Last login: Tue Jan  8 03:49:49 2019 from 172.16.10.1
-sh-4.2$ whoami
test_user
-sh-4.2$ id
uid=1000(test_user) gid=500(ldap_users)=500(ldap_users)
-sh-4.2$ sudo -l
[sudo] test_user 的密码:
匹配 %2$s 上 %1$s 的默认条目:!visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin用户 test_user 可以在 kubernetes-node1 上运行以下命令:(root) ALL

SSH 部分

LDAP 使用 publicKey 登录
套件openssh-ldap配置
  • 安装套件openssh-ldap
yum install openssh-ldap
  • 拷贝配置文件
cp /usr/share/doc/openssh-ldap-7.4p1/ldap.conf /etc/ssh/
  • 配置使用 TLS

具体配置移步: LDAP开启TLS&LDAPS

TLS_REQCERT [never、allow、try、demand | hard]

设置是否在TLS会话中检查server证书

Never:不检查任何证书。
Allow:检查server证书,没有证书或证书错误,都允许连接。
Try:检查server证书,没有证书(允许连接),证书错误(终止连接)。
demand | hard:检查server证书,没有证书或证书错误都将立即终止连接。
vim /etc/ssh/ldap.conf
# 添加如下几行
# ldap 服务器
uri ldap://172.16.10.220/
# 开启 tls 认证,并且配置证书位置, 以及认证方式
ssl start_tls
tls_cacertdir /etc/openldap/cacerts
tls_cacertfile /etc/openldap/cacerts/laoshirenCA.pem
tls_reqcert never
SSH 服务配置
  • 更改认证方式
vim /etc/ssh/sshd_config
# 增加如下
# 脚本将从LDAP获取密钥并将其提供给SSH服务器
AuthorizedKeysCommand /usr/libexec/openssh/ssh-ldap-wrapper
AuthorizedKeysCommandUser nobody
PubkeyAuthentication yes

验证 SSH-KEY 登录方式

  • 创建用户

  • 验证用户登录
ssh tssh@172.16.10.10
tssh@172.16.10.10's password:
Creating directory '/home/users/tssh'.
-sh-4.2$ id
uid=1001(tssh) gid=500(linux_group)=500(linux_group)
  • 增加公钥属性到 LDAP该用户中

  • 测试使用私钥远程连接
ssh -i ~/.ssh/id_rsa tssh@172.16.10.10
Last login: Wed Jan  9 00:50:10 2019 from 172.16.10.1
-sh-4.2$ id
uid=1001(tssh) gid=500(linux_group)=500(linux_group)
  • 成功

这篇关于LDAP扩展ssh与sudo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055914

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

PHP7扩展开发之数组处理

前言 这次,我们将演示如何在PHP扩展中如何对数组进行处理。要实现的PHP代码如下: <?phpfunction array_concat ($arr, $prefix) {foreach($arr as $key => $val) {if (isset($prefix[$key]) && is_string($val) && is_string($prefix[$key])) {$arr[

PHP7扩展开发之字符串处理

前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?phpfunction str_concat($prefix, $string) {$len = strlen($prefix);$substr = substr($string, 0, $len);if ($substr != $prefix) {return $prefix." ".$string;} else

PHP7扩展开发之类型处理

前言 这次,我们将演示如何在PHP扩展中如何对类型进行一些操作。如,判断变量类型。要实现的PHP代码如下: <?phpfunction get_size ($value) {if (is_string($value)) {return "string size is ". strlen($value);} else if (is_array($value)) {return "array si

PHP7扩展开发之依赖其他扩展

前言 有的时候,我们的扩展要依赖其他扩展。比如,我们PHP的mysqli扩展就依赖mysqlnd扩展。这中情况下,我们怎么使用其他扩展呢?这个就是本文讲述的内容。 我们新建立一个扩展,名字叫 demo_dep , 依赖之前的say扩展。 在demo_dep扩展中,我们实现demo_say方法。这个方法调用say扩展的say方法。 代码 基础代码 确保say扩展的头文件正确安装到了php

PHP7扩展开发之函数方式使用lib库

前言 首先说下什么是lib库。lib库就是一个提供特定功能的一个文件。可以把它看成是PHP的一个文件,这个文件提供一些函数方法。只是这个lib库是用c或者c++写的。 使用lib库的场景。一些软件已经提供了lib库,我们就没必要再重复实现一次。如,原先的mysql扩展,就是使用mysql官方的lib库进行的封装。 在本文,我们将建立一个简单的lib库,并在扩展中进行封装调用。 代码 基础

PHP7扩展开发之对象方式使用lib库

前言 上一篇文章,我们使用的是函数方式调用lib库。这篇文章我们将使用对象的方式调用lib库。调用代码如下: <?php $hello = new hello(); $result = $hello->get(); var_dump($result); ?> 我们将在扩展中实现hello类。hello类中将依赖lib库。 代码 基础代码 这个扩展,我们将在say扩展上增加相关代码。sa