Linux Token Auth 一次性密码认证

Linux Token Auth 一次性密码认证

MrNeo Chen (netkiller)陈景峰(BG7NYT)


中国广东省深圳市龙华新区民治街道溪山美地
518131
+86 13113668890
+86 755 29812080
<netkiller@msn.com> php

Mr 祥建Android 手机端开发


中国广东省深圳市南山区

+86 18665871161

<zeng_xiang_jian@foxmail.com> html

版权 © 2014 http://netkiller.github.io python

版权声明 mysql

转载请与做者联系,转载时请务必标明文章原始出处和做者信息及本声明。 linux

文档出处:
http://netkiller.github.io
http://netkiller.sourceforge.net

2014-08-01 git

摘要

服务器端脚本: github

https://github.com/oscm/devops/blob/master/bin/chpasswd.sh 算法

手机应用: sql

https://github.com/oscm/Token shell


1. 什么是Token

Token(令牌)是一个身份认证标识,token还有一个特色,那就是存在过时时间的。也就是令牌不是长久有效的。

2. 为何使用令牌

咱们一般须要临时或者一次性使用的身份认证

3. 何时能用到令牌技术

例如咱们去餐厅就餐,向前台获取Wifi密码,而后能够享受30分钟的上网服务。30分钟事后密码将失效。

咱们公司有不少服务器,密码的管理很是麻烦,有时还会有人事变更,一旦人员发生变更,全部的服务器密码都须要修改一次,很是麻烦,偶尔会有漏改状况,使用堡垒机能够更好的管理密码,但成本很是昂贵。

因而我便想起了Token技术,但购买Token硬件成本也要花费很多钱。Token的原理我很清楚,经过对称算法算出相同对等密钥,咱们能够不购买硬件设备,本身开发,手机设备随身携带,因此开发移动版Token最好不过。

4. 本文的Token应用在什么地方

我采用Token技术实现Linux指定用户的密码周期变化,以时间为基准,手机同步算出服务器上的密码。为了防止密码被穷举,我增长了4个干扰字符。

若是对密码算法强度感到不安全,你能够自行修改复杂度。

你还能够远程修改密码,很少讲。

5. 谁来部署

首先由管理员部署密码修改程序 chpasswd.sh 而后加入到crontab 中定时运行。

因为考虑到读者的水平良莠不齐,因此我使用shell完成,这样绝大多数读者都能看懂。

# cat chpasswd.sh 
		
#!/bin/bash
datetime=`date +%Y-%m-%d" "%H":"%M`
email="neo.chan@live.com"
#password=$(cat /dev/urandom | tr -cd [:alnum:] | fold -w30 | head -n 1)
string=$(date -u "+%Y$1%m$2%d$3%H$4%M")
password=$(echo $string | md5sum | cut -c 2-9 | base64 | tr -d "=" | cut -c 1-32)
echo $password > ~/.lastpasswd
echo $password | passwd www --stdin > /dev/null

~/.lastpasswd 中保存最后一次密码

crontab 设置,每分钟修改一次密码。

# crontab -l
*/1 * * * * /root/chpasswd.sh a b c d

a b c d 自行设定,设定与手机端相同便可

至此服务器端配置完成

6. 手机端配置

安装Token.apk文件到你的手机

https://github.com/oscm/Token

6.1. 设置密码

确认密码

选择环境

设置干扰码

6.2. 查看服务器密码

6.3. 设置刷新时间

默认1分钟刷新一次,可能没有来得及输入完密码就会更新密码

若是修改此项,服务器端crontab中的设置同步更改便可。

相关文章
相关标签/搜索