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 表结构
id increase  
name openldap提取用户名  
count_time lifetime 密码生命,每天减一
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 这个参数为阿里云短信模版

 

 

编写评论...

你可能感兴趣的:(服务器运维)