某某茶叶有限公司欢迎您!
金沙棋牌在线 > 服务器&运维 > Linux 下如何为登录和 sudo 设置双因子认证

Linux 下如何为登录和 sudo 设置双因子认证

时间:2020-04-06 15:14

安全就是一切。我们生活的当今世界,数据具有令人难以置信的价值,而你也一直处于数据丢失的风险之中。因此,你必须想尽办法保证你桌面系统和服务器中数据的安全。结果,管理员和用户就会创建极其复杂的密码、使用密码管理器甚至其它更复杂的东西。但是,如果我告诉你你可以只需要一步,至多两步就能登录到你的 Linux 服务器或桌面系统中呢?多亏了 Google 身份验证器,现在你可以做到了。并且,配置也极其简单。

参考:http://blog.sina.com.cn/s/blog_6561ca8c0102vb0d.html

最近,安装pam和登录过程,一些经验总结如下:

有时候我们希望不用每次登录linux服务器都要输入密码,那么这个时候可以选择ssh密钥登录,就是rsa公钥放到服务器上,私钥放在客户端上,每次登录的时候,用密钥登录;这样更方便也更安全

我会给你简要介绍为登录和 sudo 设置双因子认证的步骤。我基于 Ubuntu 16.04 桌面系统进行介绍,但这些步骤也适用于其它服务器。为了实现双因子认证,我会使用 Google 身份验证器。

密钥对生成使用小结:

  1. 服务器/客户端均需在用户目录下创建 .ssh 目录 ,设置目录权限为700,生成的公钥/私钥分别放在各自的.ssh 目录下

cd /home/username
mkdir .ssh
chmod -R 700 .ssh

  1. 在客户端生成密钥对

ssh-keygen -t dsa/rsa

  • id_dsa
  • id_dsa.pub
  1. 服务器端.ssh目录中新建一个文件,名为:authorized_keys,将公钥内容拷贝到这个文件中,设置权限600

touch authorized_keys
cat id_rsa.pub >> authorized_keys
金沙棋牌在线,chmod -R 600 authorzied_keys

  1. authorized_keys 和 私钥文件的权限均设置为 600
  2. 密钥验证登录

ssh –l 用户名 服务器IP

Linux系统登录过程简述如下:

  • 先生成一个rsa密钥对

这里有个非常重要的警告:一旦你设置了认证,没有一个从认证器中获得的由 6 个数字组成的验证码你就不可能登录账户(或者执行 sudo 命令)。这也给你增加了一步额外的操作,因此如果你不想每次登录到 Linux 服务器(或者使用 sudo)的时候都要拿出你的智能手机,这个方案就不适合你。但你也要记住,这额外的一个步骤也给你带来一层其它方法无法给予的保护。

远程登录系统两种认证方式

       read /etc/inittab                    get username in tty             get password
init ---------------------> mingetty ---------------------------> login ------------------
                                            /etc/pam.d
-----> call PAM modules -------------> act/rej

话不多说,开始吧。

1. 密码认证

  1. 传统的安全策略。相对复杂的密码能起到一定的防护作用。
  2. 面临的问题诸如:
  • 密码暴力破解
  • 密码泄露
  • 密码丢失
  • 过于复杂的密码也会对运维工作造成一定的负担

Linux PAM 是一个通用认证机制。为库的形式。

[root@VM_57_158_centos ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
7e:7a:29:07:e5:4f:05:b5:8f:98:66:b3:1b:77:71:1b root@VM_57_158_centos
The key's randomart image is:
+--[ RSA 2048]----+
|             ..  |
|            .  . |
|             ..  |
|          .  o.o |
|        So  *..Eo|
|       .. .o.o  =|
|        ...+o ...|
|        .o+ .+ . |
|        .+  .    |
+-----------------+

安装必要的组件

安装Google 身份验证器(Google Authenticator),首先要解决两个问题。一是安装智能机应用。下面是如何从 Google 应用商店安装的方法:

  1. 在你的安卓设备中打开 Google 应用商店
  2. 搜索 google 身份验证器(Google Authenticator)
  3. 找到并点击有 Google Inc. 标识的应用
  4. 点击安装
  5. 点击“接受”
  6. 等待安装完成

接下来,我们继续在你的 Linux 机器上安装这个认证器。步骤如下:

  1. 打开一个终端窗口
  2. 输入命令 sudo apt-get install google-authenticator
  3. 输入你的 sudo 密码并敲击回车
  4. 如果有弹窗提示,输入 y 并敲击回车
  5. 等待安装完成

接下来配置使用 google-authenticator 进行登录。

2. 密钥认证

  1. 新型的认证方式。这种认证方式避免了被暴力破解的危险,只要保存在本地的专用密钥不被黑客盗用,攻击者一般无法通过密钥认证方式进入系统。
  2. 密钥认证的方法:公用密钥放在远程服务器上,专用密钥放在本地,当需要登录时,远程公钥和本地密钥进行配对,认证成功,就可成功登录系统。
    个人觉得在客户端生成密钥对,远程将pub 上传到服务器比较安全,就算被拦截了,也没法访问服务器。

配置文件放在/etc/pam.conf或/etc/pam.d/ . 配置文件可以使用include指令包含其它配置文件。当支持Linux-PAM的客户程序调用PAM api. PAM首先根据客户程序的类别,检查配置文件中的PAM在此类别中的堆叠模块数以及相应的堆叠模块名。依次调用这些模块进行认证检查。对于每一种模块的所需的配置文件放在/etc/security/目录中。

默认生成的密钥文件在root/.ssh目录下