Linux Token 一次性密码认证

Linux Token 一次性密码认证

http://netkiller.github.io/journal/token.html

Mr. Neo Chen (netkiller), 陈景峰(BG7NYT)

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

Mr. 曾 祥建, Android 手机端开发

中国广东省深圳市南山区

+86 18665871161

<zeng_xiang_jian@foxmail.com>

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

版权声明

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

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

 

2014-08-01

摘要

服务器端脚本:

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

手机应用:

https://github.com/oscm/Token

我的系列文档

Netkiller Architect 手札 Netkiller Developer 手札 Netkiller PHP 手札 Netkiller Python 手札 Netkiller Testing 手札 Netkiller Cryptography 手札
Netkiller Linux 手札 Netkiller Debian 手札 Netkiller CentOS 手札 Netkiller FreeBSD 手札 Netkiller Shell 手札 Netkiller Security 手札
Netkiller Web 手札 Netkiller Monitoring 手札 Netkiller Storage 手札 Netkiller Mail 手札 Netkiller Docbook 手札 Netkiller Version 手札
Netkiller Database 手札 Netkiller PostgreSQL 手札 Netkiller MySQL 手札 Netkiller NoSQL 手札 Netkiller LDAP 手札 Netkiller Network 手札
Netkiller Cisco IOS 手札 Netkiller H3C 手札 Netkiller Multimedia 手札 Netkiller Perl 手札 Netkiller Amateur Radio 手札 Netkiller DevOps 手札

目录

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中的设置同步更改即可。

时间: 2024-10-31 18:25:49

Linux Token 一次性密码认证的相关文章

使用一次性密码本通过 SSH 安全登录 Linux

使用一次性密码本通过 SSH 安全登录 Linux 有人说,安全不是一个产品,而是一个过程(LCTT 注:安全公司 McAfee 认为,安全风险管理是一个方法论,而不是安全产品的堆叠).虽然 SSH 协议被设计成使用加密技术来确保安全,但如果使用不当,别人还是能够破坏你的系统:比如弱密码.密钥泄露.使用过时的 SSH 客户端等,都能引发安全问题. 在考虑 SSH 认证方案时,大家普遍认为公钥认证比密码认证更安全.然而,公钥认证技术并不是为公共环境设置的,如果你在一台公用电脑上使用公钥认证登录 S

OpenOTP Radius Bridge 1.0.7发布 密码认证解决方案

OpenOTP是一个强大的企业级的双因素与一次性密码认证解决方案.它支持http://www.aliyun.com/zixun/aggregation/13376.html">OAuth RFC 2246 HOTP(基于计数器)和TOTP(基于时间的)软件/硬件令牌,短信/邮件一次性密码.它提供了一个SOAP / XML和RADIUS的API和集成到您的LDAP(OpenLDAP,Novell,在ActiveDirectory).它与Web应用程序,虚拟专 用网,Unix,微软,等等. O

squid+stunnel+用户密码认证的三种玩法

没办法,应用越来越深入,就会越来越多要求. squid+stunnel+用户密码认证的场景至少以下三个,我会遇到. 1,标准玩法 在服务器上建一个SQUID,加密码认证,然后,其它人通过它上网.(不要看这是正常玩法,在一个管理后台限制登陆,而维护VPN成本大时,这个小应用很有用处的) 2,标准加密玩法 在国外搞个服务器(翻嘛,用第1种时,会有问题,因为GFW会在你想去国外就拦之),然后,将本地发到国外的请求时加密.(本来客户端安装STUNNEL,这个适合很私密的东东,但在企业内部署,就很不好推广

OpenOTP Radius Bridge 1.0.8发布 密码认证解决方案

RCDevs.OpenOTP Radius http://www.aliyun.com/zixun/aggregation/16410.html">Bridge 提供了一个RADIUS RFC-2865 API(远程身份验证拨号用户服务)的OpenOTP认证服务器.它是一个可选的服务器组件,用于部署OpenOTP基础设施,实施了强大的FreeRADIUS软件.RADIUS API接口与VPN服务器和许多其他应用程序都需要最终用户的身份验证.支持的认证方案是基于一次性密码技术而实现(OATH

详解Nginx实战之让用户通过用户名密码认证访问web站点_nginx

有时我们会有这么一种需求,就是你的网站并不想提供一个公共的访问或者某些页面不希望公开,我们希望的是某些特定的客户端可以访问.那么我们可以在访问时要求进行身份认证,就如给你自己的家门加一把锁,以拒绝那些不速之客. 实验环境: 现在公司开通了一个内部使用网站为www1.rsyslog.org,要求所有人查看网页信息之前都必须要输入内定的用户名及密码方可浏览网页 使用nginx下虚拟主机的搭建 www1.rsyslog.org进行测试. www1.rsyslog.org 192.168.100.107

linux中ssh公钥认证配置例子

在两台linux主机上由于环境的需要,经常要配置两台主机之间免密码登录,这就要用到key认证,也就是所谓的公私钥认证.便于理解,我这里指定两台主机为 A 和 B .如果A主机想免密码登录到B主机上,则A主机上存放私钥,B 主机上存放公钥.通过ssh-keygen 命令生成的两个文件为:公钥文件 ~/.ssh/id_rsa.pub: 私钥文件 ~/.ssh/id_rsa .而B主机上存放公钥时,需要将id_rsa.pub的内容存放到~/.ssh/authorized_keys 文件内,并且保证权限

linux忘记mysql密码找回方法

linux忘记mysql教程密码找回方法 今天我们主要是讲一下关于linux忘记mysql密码处理方法,下面提供了5种linux忘记mysql密码找回方法哦. 方法一: # /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking & # mysql -u root mysql mysql> update user set password=password('newpass

Sophos让密码认证既安全又便捷

心脏出血 2014-04-07,一个代号为"http://www.aliyun.com/zixun/aggregation/36095.html">心脏出血"的重大OpenSSL协议安全漏洞被国外黑客曝光,震惊了整个互联网行业.常用于电商.支付类接口等安全性极高网站的网络安全协议OpenSSL存在高危漏洞,互联网筑墙被划出一道致命的裂口.对于IT行业和在线社区无疑是重磅炸弹,网民们已经开始投身到轰轰烈烈的改密码大潮中,但是需要注意的是只有在该网站对该漏洞进行补丁修复后,

WCF的用户名密码认证

以前我们用WebService做分布式系统的时候,认证是个麻烦的问题,通常的做法是继承一个SoapHeader,把用户名和密码放到里面,每调用一个方法都要把用户名和密码传递给服务器端来验证 ,效率相当低,代码编写相当的麻烦,而且还不安全! WCF支持多种认证技术,例如Windowns认证.X509证书.Issued Tokens.用户名密码认证等,在跨Windows域分布的系统中,用户名密码认证还是比较常用的,要实现用户名密码认证,就必须需要X509证书,为什么呢?因为我们需要X509证书这种非