searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

OpenLdap未授权访问优化处理

2024-07-29 09:58:53
27
0

1. 背景

ldap默认是可以匿名访问的,优化修复,加鉴权认证

2. 修复方案

  • 生成一个guest租户账号,减小账号泄露暴露风险
  • 混淆客户端配置在sssd.conf中的密码,避免明文密码暴露问题

3. 实施方案

3.1. 参数定义

{{guest-password}} , 是代指访客租户密码,包括大括号一起替换

3.2. guest租户密码生成

下面需要设置guest租户密码,需要提前生成,生成16位强密码

下面是一段生成强密码的参考脚本,也可以通过其他一些工具生成

#!/bin/bash
set -e

# 生成4个随机的小写字母
lower_char="$(tr -dc '[:lower:]' < /dev/urandom | fold -w 4 | head -n 1)"
# 生成4个随机的大写字母
upper_char="$(tr -dc '[:upper:]' < /dev/urandom | fold -w 4 | head -n 1)"
# 生成4个随机的特殊符号
symbol="$(tr -dc '!#^*()' < /dev/urandom | fold -w 4 | head -n 1)"
# 生成5个随机的数字
digit="$(tr -dc '0-9' < /dev/urandom | fold -w 4 | head -n 1)"

# 根据生成的随机字符拼接打乱
pwd=$(echo ${lower_char}${upper_char}${symbol}${digit} | fold -w1 | shuf | tr -d '\n')

# 检查密码长度是否为16
if [ ${#pwd} -eq 16 ]; then
  echo -n "$pwd"
else
  echo "$pwd length is not 16."
  exit 1
fi

3.3. 创建访客租户

功能: 创建房租ldap租户

执行位置:ldap服务器两台任意一台,注意,创建文件不要放到openldap本身的配置目录

vi guest.ldif

内容如下,注意替换下面的客户端密码

dn:cn=guest,dc=telecom,dc=cn
cn:guest
objectclass:simpleSecurityObject
objectclass:organizationalRole
description:ldap read only user
userPassword: {{guest-password}}

执行创建,注意替换执行命令中的管理密码,随后根据提示输入ldap管理员admin的密码

ldapadd -x -D "cn=master,dc=telecom,dc=cn" -W -f guest.ldif

查询是否新建成功,输入下面命令后,根据提示输入ldap管理员master的密码:

ldapsearch -x -LLL -b 'dc=telecom,dc=cn' -H ldap:// -D "cn=master,dc=telecom,dc=cn" -W cn uid |grep guest

3.4. 设置访客租户权限

功能: ldap访问权限设置,保证guest租户只有查询权限,不能进行修改新增等权限

执行位置:ldap服务器两台任意一台,注意,创建文件不要放到openldap本身的配置目录

vi replace-olcAccess.ldif

内容如下:

注意这里指定修改的数据库序号是2,和上面第一步查询的一致

dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace:olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=master,dc=telecom,dc=cn" write by anonymous auth by self write by dn="cn=guest,dc=telecom,dc=cn" read by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=master,dc=telecom,dc=cn" write by * read

执行更新:

ldapmodify -H ldapi:/// -Y EXTERNAL -f replace-olcAccess.ldif

3.5. 客户端sssd设置

执行位置:翼MR部署的DataNode节点主机

编辑/etc/sssd/sssd.conf

更新配置,注意替换下面的租户guest密码:

ldap_default_bind_dn = cn=guest,dc=telecom,dc=cn
ldap_default_authtok_type = password
ldap_default_authtok = {{guest-password}}

重启sssd

systemctl stop sssd

sss_cache -E

systemctl start sssd

3.6. 混淆密码

执行位置:翼MR部署的DataNode节点主机

执行命令:

sss_obfuscate -d 'hadoop.bigdata.telecom.cn'

随后根据提示,连续两次输入租户guest的密码

systemctl stop sssd

sss_cache -E

systemctl start sssd

执行完成后,/etc/sssd/sssd.conf中配置如下,可以看到,原来的明文密码已经被混淆了

3.7. 验证guest租户可用性

新建一个工作域下的test200租户

新建完成后,在已经实施变更的任意一台datanode主机上使用id查询

id test200

如果查询成功,表示guest租户可用

执行完测试后,删除test200租户

0条评论
作者已关闭评论
奔驰上树
4文章数
0粉丝数
奔驰上树
4 文章 | 0 粉丝
奔驰上树
4文章数
0粉丝数
奔驰上树
4 文章 | 0 粉丝
原创

OpenLdap未授权访问优化处理

2024-07-29 09:58:53
27
0

1. 背景

ldap默认是可以匿名访问的,优化修复,加鉴权认证

2. 修复方案

  • 生成一个guest租户账号,减小账号泄露暴露风险
  • 混淆客户端配置在sssd.conf中的密码,避免明文密码暴露问题

3. 实施方案

3.1. 参数定义

{{guest-password}} , 是代指访客租户密码,包括大括号一起替换

3.2. guest租户密码生成

下面需要设置guest租户密码,需要提前生成,生成16位强密码

下面是一段生成强密码的参考脚本,也可以通过其他一些工具生成

#!/bin/bash
set -e

# 生成4个随机的小写字母
lower_char="$(tr -dc '[:lower:]' < /dev/urandom | fold -w 4 | head -n 1)"
# 生成4个随机的大写字母
upper_char="$(tr -dc '[:upper:]' < /dev/urandom | fold -w 4 | head -n 1)"
# 生成4个随机的特殊符号
symbol="$(tr -dc '!#^*()' < /dev/urandom | fold -w 4 | head -n 1)"
# 生成5个随机的数字
digit="$(tr -dc '0-9' < /dev/urandom | fold -w 4 | head -n 1)"

# 根据生成的随机字符拼接打乱
pwd=$(echo ${lower_char}${upper_char}${symbol}${digit} | fold -w1 | shuf | tr -d '\n')

# 检查密码长度是否为16
if [ ${#pwd} -eq 16 ]; then
  echo -n "$pwd"
else
  echo "$pwd length is not 16."
  exit 1
fi

3.3. 创建访客租户

功能: 创建房租ldap租户

执行位置:ldap服务器两台任意一台,注意,创建文件不要放到openldap本身的配置目录

vi guest.ldif

内容如下,注意替换下面的客户端密码

dn:cn=guest,dc=telecom,dc=cn
cn:guest
objectclass:simpleSecurityObject
objectclass:organizationalRole
description:ldap read only user
userPassword: {{guest-password}}

执行创建,注意替换执行命令中的管理密码,随后根据提示输入ldap管理员admin的密码

ldapadd -x -D "cn=master,dc=telecom,dc=cn" -W -f guest.ldif

查询是否新建成功,输入下面命令后,根据提示输入ldap管理员master的密码:

ldapsearch -x -LLL -b 'dc=telecom,dc=cn' -H ldap:// -D "cn=master,dc=telecom,dc=cn" -W cn uid |grep guest

3.4. 设置访客租户权限

功能: ldap访问权限设置,保证guest租户只有查询权限,不能进行修改新增等权限

执行位置:ldap服务器两台任意一台,注意,创建文件不要放到openldap本身的配置目录

vi replace-olcAccess.ldif

内容如下:

注意这里指定修改的数据库序号是2,和上面第一步查询的一致

dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace:olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=master,dc=telecom,dc=cn" write by anonymous auth by self write by dn="cn=guest,dc=telecom,dc=cn" read by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=master,dc=telecom,dc=cn" write by * read

执行更新:

ldapmodify -H ldapi:/// -Y EXTERNAL -f replace-olcAccess.ldif

3.5. 客户端sssd设置

执行位置:翼MR部署的DataNode节点主机

编辑/etc/sssd/sssd.conf

更新配置,注意替换下面的租户guest密码:

ldap_default_bind_dn = cn=guest,dc=telecom,dc=cn
ldap_default_authtok_type = password
ldap_default_authtok = {{guest-password}}

重启sssd

systemctl stop sssd

sss_cache -E

systemctl start sssd

3.6. 混淆密码

执行位置:翼MR部署的DataNode节点主机

执行命令:

sss_obfuscate -d 'hadoop.bigdata.telecom.cn'

随后根据提示,连续两次输入租户guest的密码

systemctl stop sssd

sss_cache -E

systemctl start sssd

执行完成后,/etc/sssd/sssd.conf中配置如下,可以看到,原来的明文密码已经被混淆了

3.7. 验证guest租户可用性

新建一个工作域下的test200租户

新建完成后,在已经实施变更的任意一台datanode主机上使用id查询

id test200

如果查询成功,表示guest租户可用

执行完测试后,删除test200租户

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0