在ubuntu14.04 LTS上用Google Authenticator保护ssh

时间:2019-08-20 17:58:28  来源:igfitidea点击:

google authenticator是一个实现基于时间的一次性密码(TOTP)安全令牌的安全应用程序。通常也被称为“两个步骤”。

安装了Google Authenticator的服务器需要用户名、密码和密钥(由googleauthenticator应用程序生成)才能通过ssh访问该服务器。

我们将在ubuntu14.04lts服务器上使用googleauthenticator保护ssh。

  1. 安装Google authenticator包。
  2. 配置PAM sshd配置文件。
  3. 配置ssh服务器。
  4. 创建系统用户并设置密码。
  5. 为新创建的用户生成二维码、密钥和验证码。
  6. 谷歌认证程序在你的移动,桌面(Linux或者Ubuntu)应用程序的参考。
  7. 使用用户名通过ssh访问服务器

1. 安装Google authenticator包

登录Ubuntu服务器并安装googleauthenticator包。

sudo apt-get update
sudo apt-get install libpam-google-authenticator

2. 配置PAM sshd配置文件

我们将编辑PAM的sshd配置文件。我们将首先备份此文件。

sudo cp -pvf /etc/pam.d/sshd ~/sshd.original.pam.`date +%F`

现在编辑pamsshd文件并在其中配置googleauthenticator模块。

vi /etc/pam.d/sshd

## Add the below given line in top of /etc/pam.d/sshd file
auth required pam_google_authenticator.so

参考:

ubuntu@ip-172-31-62-100:~$ egrep -v '^#|^$' /etc/pam.d/sshd
@include common-auth
auth required pam_google_authenticator.so
account    required     pam_nologin.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_keyinit.so force revoke
@include common-session
session    optional     pam_motd.so  motd=/run/motd.dynamic noupdate
session    optional     pam_motd.so # [1]
session    optional     pam_mail.so standard noenv # [1]
session    required     pam_limits.so
session    required     pam_env.so # [1]
session    required     pam_env.so user_readenv=1 envfile=/etc/default/locale
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so open
@include common-password
ubuntu@ip-172-31-62-100:~$

3. 配置ssh服务器

现在我们正在配置ssh服务器并编辑sshd_config文件。这也是一个重要的步骤,以便它可以与我们在PAM中设置的googleauthenticator模块一起工作。

像往常一样,备份sshd_config文件。

sudo cp -pv /etc/ssh/sshd_config sshd_config.orig.`date +%F`

现在要让它与google authenticator一起工作,编辑sshd_config文件并按照下面的部分设置参数

sudo vi /etc/ssh/sshd_config

# edit the below given parmaters
ChallengeResponseAuthentication yes
PasswordAuthentication yes
UsePAM yes

保存sshd_配置文件后。重新启动ssh服务器

sudo service ssh restart

3. 创建系统用户并设置密码

现在我们将创建一个用户并在服务器中设置其密码。然后我们将生成该用户用于登录服务器的二维码和密钥。

例如,我们正在创建一个名为Hyman的用户并设置其密码。

sudo useradd -m -d /home/Hyman Hyman
sudo passwd Hyman

5. 为新创建的用户生成二维码、密钥和验证码

正如我们在上面的第4步中看到的,我们创建了一个名为Hyman的用户。现在我们将生成二维码及其密钥。
生成二维码和密钥是一种非常简单的方法。

用户使用su命令登录服务器。(注意:我们仍在服务器中)

sudo su -l Hyman

现在我们将从用户的shell中使用下面给定的命令生成代码和密钥。

google-authenticator

它将生成二维码和密钥。

6. 谷歌认证程序在你的移动,桌面(Linux或者Ubuntu)应用程序的参考

为了生成验证码,我们必须在我们的手机或者系统中安装谷歌认证程序。

有了这个Google验证器应用程序验证码将生成。

我们将讨论如何在你的系统上使用googleauthenticator应用程序在新的即将发布的帖子中提供更多细节。

7. 使用用户名通过ssh访问服务器

现在使用我们创建并生成二维码和密钥的用户访问服务器。

它将要求我们在服务器中设置的密码和我们将从Google authenticator应用程序生成的验证码。

参考以下系统:

Hyman@linuxworld:~$ ssh [email protected]
Password: 
Verification code: 
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-44-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Sun Mar  1 15:25:29 UTC 2015

  System load:  0.0               Processes:           109
  Usage of /:   10.2% of 7.74GB   Users logged in:     1
  Memory usage: 7%                IP address for eth0: 172.31.62.251
  Swap usage:   0%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud


Last login: Sun Mar  1 15:25:29 2015 from 49.205.123.226
$ 
$ 
$ 
Connection to ec2-52-1-130-111.compute-1.amazonaws.com closed.
Hyman@linuxworld:~$