ldap 开启 sudo 权限:让 ldap 用户可以拥有执行 sudo 的能力

ldap 开启 sudo 权限:让 ldap 用户可以拥有执行 sudo 的能力

ldap 服务端

以下是容器部署 openldap server:

​ 容器镜像为: osixia/openldap:latest
​ 可视化客户镜像为: osixia/phpldapadmin:latest

进入容器:

在这里插入图片描述在这里插入图片描述

执行一下三条指令,开启 ldap sudo 能力:

参见:

基于docker的高可用openldap(包含lam-admin网页和sudo,ppolicy模块)

https://blog.csdn.net/qq_38120778/article/details/106889176

1.填加sudo的overlay模块:
cat<<EOF|ldapadd -Y EXTERNAL -H ldapi:///
dn: cn=sudo,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudo
olcAttributeTypes: {0}( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s
 ) who may  run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Substrin
 gsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {1}( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s
 ) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5Substring
 sMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {2}( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Com
 mand(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4
 .1.1466.115.121.1.26 )
olcAttributeTypes: {3}( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(
 s) impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3
 .6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {4}( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Opti
 ons(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466
 .115.121.1.26 )
olcAttributeTypes: {5}( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'U
 ser(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.
 1466.115.121.1.26 )
olcAttributeTypes: {6}( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC '
 Group(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.
 1.1466.115.121.1.26 )
olcAttributeTypes: {7}( 1.3.6.1.4.1.15953.9.1.8 NAME 'sudoNotBefore' DESC 'S
 tart of time interval for which the entry is valid' EQUALITY generalizedTim
 eMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.12
 1.1.24 )
olcAttributeTypes: {8}( 1.3.6.1.4.1.15953.9.1.9 NAME 'sudoNotAfter' DESC 'En
 d of time interval for which the entry is valid' EQUALITY generalizedTimeMa
 tch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1
 .24 )
olcAttributeTypes: {9}( 1.3.6.1.4.1.15953.9.1.10 NAME 'sudoOrder' DESC 'an i
 nteger to order the sudoRole entries' EQUALITY integerMatch ORDERING intege
 rOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcObjectClasses: {0}( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' DESC 'Sudoer
 Entries' SUP top STRUCTURAL MUST cn MAY ( sudoUser $ sudoHost $ sudoCommand
  $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ sudoOrder $ su
 doNotBefore $ sudoNotAfter $ description ) )
EOF

2.添加sudo功能:
cat<<EOF|ldapadd -x -W -D "cn=admin,dc=example,dc=com" # 注意修改这里改为 n=admin,dc=funsine,dc=com
dn: ou=SUDOers,dc=example,dc=com  # 注意修改这里改为 dn: ou=SUDOers,dc=funsine,dc=com
ou: SUDOers
objectClass: top
objectClass: organizationalUnit

dn: cn=defaults,ou=SUDOers,dc=example,dc=com
objectClass: sudoRole
cn: defaults
sudoOption: requiretty
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoOption: env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
sudoOption: env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
sudoOption: env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
sudoOption: env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
sudoOption: env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
sudoOption: secure_path = /sbin:/bin:/usr/sbin:/usr/bin
sudoOption: logfile = /var/log/sudo
EOF

并输入admin的密码
3.最后添加一个sudo的目录。用户为800001,之后用户可以用图形化的方法更改:
cat<<EOF|ldapadd -x -W -D "cn=admin,dc=example,dc=com"
dn: cn=sudo_ops_role,ou=SUDOers,dc=example,dc=com
objectClass: sudoRole
cn: sudo_ops_role
sudoOption: !authenticate
sudoRunAsUser: root
sudoCommand: ALL
sudoHost: ALL
sudoUser: 800001
EOF

ldap 客户端:

以下是在各个节点配置需要修改的地方:

How to Integrate Sudoers with OpenLDAP Serverlint

https://www.howtoforge.com/how-to-integrate-sudoers-with-openldap-server/

第一步:

修改nsswitch.conf文件:
sudo vim /etc/nsswitch.conf
在最后添加一行:
sudoers:	files	sss
如下所示:

在这里插入图片描述

第二步:

修改sssd.conf文件:
sudo vim /etc/sssd/sssd.conf
在[domain/default]下添加 sudoers_base 和 sudo_provider:
[domain/default]
....
sudoers_base ou=sudo,dc=funsine,dc=com
sudo_provider = ldap
在 [sssd] 下面的 service 最后面添加 sudo,autofs:
[sssd]
services = nss, pam, autofs, sudo
在文本的最后添加 [sudo]:
[sudo]
整体效果如下:
[sssd]
config_file_version = 2
# services = nss,pam 
# update for sudo
services = nss, pam, autofs, sudo
domains = test.com
debug_level = 9

[nss]
homedir_substring = /home

[pam]

[domain/funsine.com]
id_provider = ldap
#ldap_schema = rfc2307bis
auth_provider = ldap
#autofs_provider = ldap
#chpass_provider = ldap
ldap_uri = ldap://192.168.1.143:389
ldap_search_base = dc=test,dc=com
ldap_id_use_start_tls = False
ldap_tls_cacertdir = /etc/openldap/certs
ldap_default_bind_dn = cn=admin,dc=funsine,dc=com
ldap_default_authtok_type = password
ldap_default_authtok = admin
cache_credentials = True
ldap_tls_reqcert = never
entry_cache_timeout = 600
#ldap_network_timeout = 3
#ldap_connection_expire_timeout = 60

# for sudo
sudoers_base dc=test,dc=com 
sudo_provider = ldap

[sudo]
重启 sssd 服务:
sudo systemctl restart sssd

添加一个拥有sudo权限的用户需要注意的:

_connection_expire_timeout = 60

for sudo

sudoers_base ou=SUDOers,dc=funsine,dc=com
sudo_provider = ldap

[sudo]


#### 重启 sssd 服务:

```bash
sudo systemctl restart sssd

添加一个拥有sudo权限的用户需要注意的:

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是在CentOS 7上配置Apache服务器通过LDAP进行用户认证的步骤: 1. 安装Apache和mod_authnz_ldap模块: ``` sudo yum install httpd mod_authnz_ldap ``` 2. 修改Apache配置文件,启用LDAP模块: ``` sudo vim /etc/httpd/conf/httpd.conf ``` 找到以下行并取消注释(去掉前面的#): ``` LoadModule authnz_ldap_module modules/mod_authnz_ldap.so ``` 3. 配置LDAP连接信息: 在Apache的配置文件中添加以下内容: ``` LDAPTrustedGlobalCert CA_BASE64 /etc/pki/tls/certs/ca-bundle.crt LDAPVerifyServerCert off <Location /secure> AuthType Basic AuthName "LDAP Authentication" AuthBasicProvider ldap AuthLDAPURL "ldap://ldap.example.com:389/dc=example,dc=com?cn" AuthLDAPBindDN "cn=admin,dc=example,dc=com" AuthLDAPBindPassword "password" Require valid-user </Location> ``` 说明: - `LDAPTrustedGlobalCert`:指定SSL/TLS连接时使用的证书。 - `LDAPVerifyServerCert`:是否验证LDAP服务器的证书。开启验证可以提高安全性,但需要正确配置证书。 - `Location`:指定需要进行LDAP认证的URL路径。 - `AuthType`:指定认证类型为Basic。 - `AuthName`:指定认证名称。 - `AuthBasicProvider`:指定使用LDAP进行认证。 - `AuthLDAPURL`:指定LDAP服务器的地址和搜索条件。 - `AuthLDAPBindDN`:LDAP服务器的管理员账号。 - `AuthLDAPBindPassword`:LDAP服务器的管理员密码。 - `Require`:指定需要认证的用户。 4. 重启Apache服务器: ``` sudo systemctl restart httpd ``` 现在,您可以通过访问配置的URL路径来进行LDAP认证。如果认证成功,用户将可以访问受保护的内容。 ### 回答2: 在CentOS 7上配置Apache服务器通过LDAP进行用户认证需要以下步骤: 1. 安装和配置LDAP服务器:首先,需要安装和配置一个LDAP服务器,例如OpenLDAP。你可以使用以下命令安装OpenLDAPsudo yum install openldap-servers openldap-clients 安装完成后,你需要配置LDAP服务器的基本设置,并创建一个LDAP用户和组。 2. 配置Apache服务器:在安装和配置LDAP服务器后,你需要在Apache服务器上进行一些配置。你可以使用以下命令安装Apache服务器: sudo yum install httpd 安装完成后,在Apache的配置文件`httpd.conf`中进行一些设置。你需要启用LDAP模块并指定LDAP服务器的地址和端口。例如: LoadModule authnz_ldap_module modules/mod_authnz_ldap.so <Location "/"> AuthName "LDAP Authentication" AuthType Basic AuthBasicProvider ldap AuthLDAPURL "ldap://ldap.example.com:389/dc=example,dc=com?uid?sub?(objectClass=*)" AuthLDAPBindDN "cn=admin,dc=example,dc=com" AuthLDAPBindPassword "password" Require valid-user </Location> 在以上配置中,你需要根据你实际的LDAP服务器地址和认证需求进行相应的修改。例如,`ldap.example.com`是LDAP服务器的域名,`dc=example,dc=com`是LDAP服务器的根目录,`AuthLDAPBindDN`是一个具有读取LDAP目录的管理员账号。 3. 重启Apache服务器:在完成以上配置后,你需要重启Apache服务器使其生效。你可以使用以下命令重启服务器: sudo systemctl restart httpd 注意确保没有任何错误信息。 4. 进行LDAP用户认证:现在你可以通过访问Apache服务器来进行LDAP用户认证。当访问需要认证的网页时,你将被提示输入用户名和密码。这些用户信息将会与LDAP服务器进行比对,如果认证成功,则可以访问受限资源。 通过以上步骤,在CentOS 7上配置Apache服务器通过LDAP进行用户认证。请确保设置正确并保护好服务器和LDAP的凭证,以确保安全性。 ### 回答3: 在CentOS 7上配置Apache服务器通过LDAP进行用户认证,需要以下步骤: 1. 安装Apache服务器:在CentOS 7上安装Apache服务器,可以使用以下命令: ``` sudo yum install httpd ``` 2. 配置LDAP模块:安装LDAP模块以启用用户认证功能。使用以下命令安装LDAP模块: ``` sudo yum install mod_ldap ``` 3. 配置LDAP服务器信息:在Apache配置文件中,找到`httpd.conf`文件并打开进行编辑。添加以下内容来配置LDAP服务器信息: ``` LDAPTrustedGlobalCert CERT_BASE64 /etc/ssl/certs/ca-certificates.crt LDAPVerifyServerCert on <Location "/"> AuthType Basic AuthName "LDAP Authentication" AuthBasicProvider ldap AuthLDAPURL ldap://ldap.example.com/o=example?uid AuthLDAPBindDN "cn=admin,dc=example,dc=com" AuthLDAPBindPassword "password" Require valid-user </Location> ``` 4. 重启Apache服务器:保存配置文件并重启Apache服务器使其生效。使用以下命令重启Apache服务器: ``` sudo systemctl restart httpd ``` 以上是在CentOS 7上配置Apache服务器通过LDAP进行用户认证的步骤。请根据你的LDAP服务器信息和需求进行相应的配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值