openldap密码策略,定期短信及邮件提醒用户修改密码(ldap自身密码策略无法使用前提下的妥协)

鉴于互联网公司越来越多的需求,各种自建以及第三方服务不断的被加入到公司的系统里。同时互联网公司的人员更替也是流水一般时刻不停,这时候对于员工的账户管理也就变成了一个非常有挑战的任务。这时候开源的账户统一管理产品就必须被用起来了。Openldap作为开源目录服务,也是大家首选的产品。优点很多,开源(免费用),用户量大(遇坑可以找出坑方法),功能强大,众多第三方的软件都加入了对openladp的支持。缺点呢,也不少,特别是数据结构难理解。

目前公司已经用上了openladp,搭建环境网上各种教程所以就不多说。目前有一个需求就是对员工的的账户生命周期进行控制,对员工的秘密复杂度进行加强。

  • 目标
  1. 用户自助修改密码,密码包含3种不同字符,最低8位。
  2. 密码修改后,重新获得60天的生命周期,到期前15天通过mail&sms提醒修改。
  3. 到期了后不修改,直接系统替你重置一个随机密码。然后你就只能通过sms的形式来重置密码后登陆账户

实现方式

  1. 使用开源的第三方self-service-passwd来做密码重置,密码强度检测
  2. 使用mysql存储用户的信息,包括用户的密码生命周期
  3. 修改self-service-passwd 源代码,修改密码后执行sql,重置mysql的用户生命周期
  4. 服务器每天凌晨1点执行ldap新用户扫描,新用户加入录入mysql,给予60天密码生命,同时对于老用户密码生命减一。 对于用户生命周期15天用户发送sms&mail,对于生命为0用户,重置随机密码。
  • 实现逻辑

1.目前openldap密码定时修改的任务是基于开源工具self-service-password,mysql存储用户密码lifetime,定时任务每天递减lifetime,定时获取openldap新加用户到mysql表中同时赋予60天的密码lifetime

2.当遇到用户密码剩余15天的lifetime时,发送邮件与sms短信提醒相应用户更改密码。用户可以在短信与邮件中点击链接自助修改密码

3.当用户修改密码后,会重置用户密码的lifetime(default=60)

4.密码lifetime 15天以内的用户会持续多天收到邮件短信提醒,系统在lifetime=0时 重置用户密码,用户此时只能在链接通过sms短信修改密码

5.mysql表中存在一个old_password 字段,用户存储用户上一次的密码,可以用来校验新老密码是否一致(未实现内容)

 

  • mysql 表结构
idincrease 
nameopenldap提取用户名 
count_timelifetime密码生命,每天减一
not_change不需要修改密码用户离职用户,系统用户无需提醒改密
old_password用户上一次密码校验用户新老密码的重复

 

  •  功能脚本
  1. 密码lifetime重置脚本:/opt/reset_day.sh

#! /bin/bash

# This Script is used updating count_time in mysql_db

#数据库地址

host=127.0.0.1

#数据库用户

user=root

#数据库密码

passwd=110110

#更新用户天数

reset="use ldap;update ldap set count_time = $lifetime where name = '$1';"   #此处的lifetime就是密码重置后的默认lifetime周期

mysql -u$user -p$passwd -N -e"${reset}"

  • /opt/reset_day.sh 脚本触发在 /usr/share/self-service-password/lib/functions.inc.php的410行

      2. 阿里云sms脚本 /usr/share/self-service-password/lib/sms.py

需要传人三个参数:

argv1:用户手机号

argv2:短信验证码

argv3:短信模版

        3. 短信发送模块 /usr/share/self-service-password/lib/smsapi.inc.php

         三个传入参数

          $mobile:从openldap的信息中提取到的mobile号码,需提取录入到openladp里面

          $message:系统随机生成的6位验证码

          SMS_175538413 这个参数为阿里云短信模版

 

 

编写评论...

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值