随着企业的服务器为越来越多,账号密码管理也存在很多安全隐患,黑客可能通过各种方法渗透入侵,拿到我们root权限,大部分都是人为安全隐患,密码泄露,对企业造成不必要的安全隐患,所以我们采取方式双因子认证,业内对多重认证的呼声也越来越高。在这种多重认证的系统中,用户需要通过两种不同的认证程序:提供他们知道的信息(如 用户名/密码),再借助其他工具提供用户所不知道的信息(如 用手机生成的一次性密码)。这种组合方式常叫做双因子认证或者两阶段验证。
为了鼓励广泛采用双因子认证的方式,Google公司发布了Google Authenticator,一款开源的,可基于开放规则(如 HMAP/基于时间)生成一次性密码的软件。这是一款跨平台软件,可运行在Linux, Android, iOS。Google公司同时也支持插件式鉴别模块PAM(pluggable authentication module),使其能和其他也适用PAM进行验证的工具(如OpenSSH)协同工作。
在本教程中,我们将叙述集成OpenSSH和Google提供的认证器实现如何为SSH服务设置双因子认证。我将使用一款ISO设备来生成一次性密码,本教程中需要两样武器:(1)一台运行着OpenSSH服务的Linux终端,(2)一台ISO设备。本教程采用的centos7.2系统
一:安装epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
二:安装 Google Authenticator
yum install google-authenticator
安装方法二:采用的编译安装方式
1. $ wget https://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2
2. $ tar xvfvj libpam-google-authenticator-1.0-source.tar.bz2
3. $ cd libpam-google-authenticator-1.0
4. $ make
5. $ make install
三:生成秘钥认证
1.如果你是iphone那么在app store下载
2.如果是Android 在因应用市场下载authenticatior
$ google-authenticator
你将看到一个QR码,它使用如下图形表示我们数字形态的密钥。一会我们要用到它在安卓设备上完成配置。
google认证器会问一些问题,如果你不确定,就回答"Yes"。这个应急备用验证码(图中 emergency scratch codes)可以在你由于丢失了绑定的安卓设备的情况下(所以不能得到生成的一次性密码)恢复访问。最好将应急备用验证码妥善保存。
在ISO设备上运行Google认证器
我们需要在ISO设备上安装Google Authenticator app才能完成双因子认证,到Google Play下载并安装一个。然后扫描我们上面的QP二维码
四为SSH服务器用Google认证器
最终我们需要修改两个文件来完成集成Google认证器和OpenSSH服务这临门一脚。
首先,修改PAM配置文件,命令和需添加的内容如下:
$ sudo vi /etc/pam.d/sshd
auth required pam_google_authenticator.so
然后打开SSH配置文件,找到参数ChallengeResponseAuthentication,并启用它。
$ sudo vi /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
最后,重启SSH服务。
sudo systemctl restart sshd
进行测试
[root@w ~]# ssh 127.0.0.1
Password:
Verification code:
#第一个是我们服务器的密码,第二个是我们认证的手机随机密码。这个就是双因子密码认证,提高我们系统的安全性。