基于Pam的Google双重验证实现

1、下载Google Authenticator源码

wget https://github.com/google/google-authenticator/tree/master/libpam

打开https://github.com/google/google-authenticator/blob/master/libpam/pam_google_authenticator.c,查找到pam_get_item(pamh, PAM_AUTHTOK, &password),修改PAM_AUTHTOK为PAM_AUTHTOK_TYPE

Build & install

./bootstrap.sh
./configure
make
sudo make install

拷贝pam_google_authenticator.so到/lib64/security下

Running

执行./google-authenticator

Your new secret key is: A3FY5V6TCAEUN4FX

Your verification code is 680297

Your emergency scratch codes are:

75304045

77554864

18069864

99313356

32694105

2、下载Google身份验证器

通过手机,ipad等下载,打开身份验证器,在google身份验证器中输入用户名(一般使用邮件),秘钥则输入./google-authenticator结果中的secret key,选择基于时间候保存,就可以看到每30s生成一个6位数的随机数。

3、下载JPam

官网:http://jpam.sourceforge.net/

wget http://sourceforge.net/projects/jpam/files/jpam/jpam-1.1/JPam-Linux_amd64-1.1.tgz/download

按照JPam安装说明,

a> 首先在/etc/pam.d下,创建一个google-auth文件,在文件中添加如下内容:

auth   required   /lib64/security/pam_google_authenticator.so use_first_pass

account  required  /lib64/security/pam_unix_acct.so

b> 写一个JPamTest.java程序

    String user1Name = "root";
    String user1Credentials = "password";
    Pam pam = new Pam("google-auth");    //如果不输入名称,则默认使用net-sf-jpam
    boolean authenticated = pam.authenticateSuccessful(user1Name, user1Credentials));
   
JPamTest.java依赖JPam1.1.jar,libjpam.so(此动态库有问题,需要按照下面的步骤重新编译)

下载源码,并重新编译libpam.so

wget https://github.com/gregrluck/jpam

打开jpam/src/main/c/Pam.c,查找到pam_set_item(pamh, PAM_AUTHTOK, password),修改PAM_AUTHTOK为PAM_AUTHTOK_TYPE

修改后,执行make,重新编译libpam.so


在linux下编译并执行JPamTest.java,其中username为linux root用户名,密码为google身份验证器中的动态密码,如果验证成功,则authenticated的状态值为True.

时间: 2024-08-03 23:49:34

基于Pam的Google双重验证实现的相关文章

Google Authenticator SSH双重验证技术

    Technology - Site OPS Google Authenticator SSH双重验证技术 管理手册 目  录 第1章引言... 1 1.1 目的... 1 1.2 说明... 1 第2章 SSH 双重验证实现... 2 2.1 基础工作... 2 2.2 配置工作... 2 第3章手机客户端配置... 4 第4章 SSH 登录验证... 6 4.1XSHELL 登录验证... 6 4.2 跳板机登录... 7 4.3 总结... 8 第1章 引言 1.1 目的 SSH 安

centos 6 SSH配置Google Authentication 验证

创建工作目录: mkdir google-authentication 1. 安装二维码生成依赖 #wget http://fukuchi.org/works/qrencode/qrencode-3.3.1.tar.gz # tar xf qrencode-3.3.1.tar.gz #cd qrencode-3.3.1 #./configure --prefix=/usr && make && make install 2. 安装Google-authenticator #

前端和后端的双重验证

ASP.NET MVC和WebForm 轻松实现前端和后端的双重验证 jquery.validate+ValidationSugar 上次不足的改进 可能上一个贴子给大家带来很多误解,所以我这次把DEMO完善了两个版本 [ASP.NET WEBFROM]和[ ASP.NET MVC] 修改了一些BUG,并且修改了一些细了 在上个贴子里有人说,看了response.write就全身不舒服,所以也就写了基于异步提交的例子 功能介绍 ValidationSugar.cs 负责后台验证和前端 form

使用Google身份验证进行ssh二次验证

什么是谷歌身份验证器 谷歌身份验证器,即Google Authenticator(Google身份验证器)v2.33 谷歌推出的一款动态口令工具,解决大家的google账户遭到恶意攻击的问题. 特点 1.透过QR图码自动设定2.支持多个账户3.支援多种语言 开始动手 1.编辑/etc/selinux/config文件,关闭selinuxSELINUX=disabled 2.yum安装相关程序yum -y install gcc make pam-devel libpng-devel libtoo

两步验证杀手锏:Java 接入 Google 身份验证器实战

两步验证 大家应该对两步验证都熟悉吧?如苹果有自带的两步验证策略,防止用户账号密码被盗而锁定手机进行敲诈,这种例子屡见不鲜,所以苹果都建议大家开启两步验证的. Google 的身份验证器一般也是用于登录进行两步验证,和苹果的两步验证是同样的道理.只不过 Google 的身份验证器用得更多更广泛,如 GitHub 的两步验证都是基于 Google 身份验证器. Google Authenticator 简介 Google Authenticator 身份验证器是一款基于时间与哈希的一次性密码算法的

WebApi基于Token和签名的验证

最近一段时间在学习WebApi,涉及到验证部分的一些知识觉得自己并不是太懂,所以来博客园看了几篇博文,发现一篇讲的特别好的,读了几遍茅塞顿开(都闪开,我要装逼了),刚开始读有些地方不理解,所以想了很久,因此对原文中省略的部分这里做一点个人的理解和补充,非常基础,知道的园友就不需要了,只是帮助初次学习的园友理解.原文传送门: http://www.cnblogs.com/MR-YY/p/5972380.html#!comments 本篇博文中的所有代码均来自上述链接,如果你觉得有帮助,请点击链接给

使用google身份验证器实现动态口令验证

最近有用户反应我们现有的短信+邮件验证,不安全及短信条数限制和邮件收验证码比较慢的问题,希望我们也能做一个类似银行动态口令的验证方式.经过对可行性的分析及慎重考虑,可以实现一个这样的功能.怎么实现呢,是自己开发一个这样的app?这样成本太高了,为了节约成本,我们使用互联网使用比较多的google身份验证器.使用它,我们只需要开发服务端就可以了.google身份验证器的原理是什么呢?客户端和服务器事先协商好一个密钥K,用于一次性密码的生成过程,此密钥不被任何第三方所知道.此外,客户端和服务器各有一

OpenVPN 秘钥+用户名密码双重验证登录

为什么需要用户名密码验证登录 我们已经使用了CA证书.迪菲赫尔曼交换密钥.TLS-auth密钥这几种方式进行加密了, 可以说已经很安全了,为什么还要需要用户名秘密呢,一个VPN而已,搞得这么安全有什么用呢. 首先安全还是很重要的,其次就是管理这些秘钥和证书还是比较麻烦的,因为用户量比较多. 我不可能为每个用户都创建一套加密吧,每个用户创建一个秘钥比较麻烦, 多人使用一个秘钥又不具有唯一性,比如说有用户不在需要VPN的时候,我们就只能吊销证书. 但是如果多人使用一个秘钥的情况下,吊销证书了,其他的

在云平台上基于Go语言+Google图表API提供二维码生成应用

二维码能够说已经深深的融入了我们的生活其中.到处可见它的身影:但通常我们都是去扫二维码, 曾经我们分享给朋友一个网址直接把Url发过去,如今我们能够把自己的信息生成二维码再分享给他人. 这里就分享一下基于Go语言+Google图表API提供二维码生成功能的小应用,并演示怎样把它公布到云平台上, 让每一个人都能够通过网络訪问使用它. Google图表API Google在http://chart.apis.google.com 上提供了一个将表单数据自己主动转换为图表的服务. 只是,该服务非常难交