中南大学信网中心

中南大学信网中心

发布于:2023-03-24

摘要:

守护网络安全
共建和谐校园
-网络安全小知识-

本学期,学校网络安全态势感知系统多次监测到针对Linux服务器的口令爆破流量,具有较大的安全风险。经过信息与网络中心实践,通过二次验证登录机制可有效防范口令失窃风险,建议具有Linux服务器的单位(机房、实验室等区域)启用二次验证登录。

Linux服务器可通过Google Authenticator实现二次验证,具体配置和操作流程如下。


基本概念
谷歌身份验证器:Google Authenticator,谷歌推出的基于时间的一次一密(Time-based One-time Password, TOTP)算法,其与SSH结合,可以在普通的密码验证之后进行TOTP二阶段验证,提高安全性。


Linux服务端管理员配置
(以CentOS7系统为例)
01
关闭Selinux

vim /etc/selinux/config 
#修改参数,将enforcing修改为disabled,保存,并重启服务器
SELINUX= "disabled"
02
安装谷歌身份验证器

#安装epel源
yum install epel-release
yum install pam-devel qrencode-libs google-authenticator
yum install mercurial
03
调整SSH登录方式

(1)更改/etc/ssh/sshd_config文件

#修改ssh配置
vim /etc/ssh/sshd_config
#修改参数,原本是no改为yes
ChallengeResponseAuthentication yes


(2)更改/etc/pam.d/sshd文件(若需选择性开启二次验证,跳过此步,进入下一步)

#ssh验证的文件
vim /etc/pam.d/sshd
#在编辑模式下第一句下加上这句并保存退出
auth required pam_google_authenticator.so


(3)选择性开启二次验证

若不想所有用户都使用二次验证,比如有些用户觉得每次登录需要看下手机输入验证码太过复杂,所以可设置成选择性开启二次验证,如下所示。

vim /etc/pam.d/sshd
#在/etc/pam.d/sshd最下面加上:
auth [success=done default=ignore] pam_succeed_if.so user = root
auth required pam_google_authenticator.so
第一行使用 "pam_succeed_if.so" 模块检查试图进行身份验证的用户名是否为 "root"。如果用户名为 "root",则认证成功("success=done"),身份验证过程结束。如果用户名不是 "root",则该行将被忽略("default=ignore"),身份验证过程将继续执行 PAM 配置中的下一行。因此,可通过该行设置root用户不进行二次验证。

(4)重启SSH服务

systemctl restart sshd


04
开启用户二次验证


开启服务器(node001)的用户(xieyiman)的二次验证,有两种方式,如下所示。

  • 方式一

在服务器上,以各个用户登录,运行google-authenticator按照提示(一般全选择y)将在用户家目录下生成.google_authenticator文件,以及二维码、安全密钥或紧急安全码等信息。

  • 方式二

root用户直接执行如下命令,无需进行其他操作即可开启用户(xieyiman)二次验证。

su - xieyiman -c 'google-authenticator -t -f -d -r 3 -R 30 -w 3'
#-t:基于TOTP生成验证码
#-f : 将配置保存到 ~/.google_authenticator
#-d : 不允许重复使用以前使用的令牌
#-r 3 -R 30 : 限速,每 30 秒允许 3 次登录
#-u:不限速
#-w 3 : 允许的令牌的窗口大小。默认情况下,令牌每 30 秒过期一次。窗口大小 3允许在当前令牌之前和之后使用令牌进行身份验证以进行时钟偏移。

开启后,管理员将生成的二维码发送给用户,用户即可根据二维码获取动态验证码进行登录。



用户登录操作流程

01
用户登录

(1)首次获取动态验证码

在首次获取验证码时,需先关联微信小程序数盾OTP(可直接在微信中搜索数盾OTP)。关联数盾OTP包括两种方式,扫描二维码、手动输入安全密钥。

用户打开小程序数盾OTP后,点击右下角的“+”,会出现“扫描二维码”和“输入提供的密钥”两个选项。

  • 扫描二维码

用户点击“扫描二维码”,扫描管理员发送的二维码,即可关联获取动态验证码。

  • 手动输入安全密钥

用户点击“输入提供的密钥”,根据收到的帐号和密钥进行输入,保存后即可关联获取动态验证码。

动态验证码每30秒更新一次,后续每次登录时,即可根据数盾OTP中对应帐户的动态验证码进行输入。


(2)登录服务器

用户登录时,当提示如下Verification code输入时,输入微信小程序对应帐号的动态验证码。若动态验证码不可用时,可输入紧急安全码。登录密码和验证码输入正确后,即可成功登录。(注意:用户使用Xshell、MobaXterm等登录软件时,需要修改登录方式,设置登录方式为 Keyboard Interactive)

02
配置文件说明


个人家目录下的.google_authenticator文件(不要泄露),里面含有安全密钥、紧急安全码等。若动态验证码不可用时,可输入紧急安全码,紧急安全码仅可使用一次,使用后作废。

同时,.google_authenticator文件不可删除,删除将导致无法登录;权限不要动(他人不得具有此文件的读权限等),有可能会导致无法登录。若将其误删,可联系管理员重新生成,或者运行google-authenticator,按照提示(一般全选择y)重新生成,并保存好生成的二维码、安全密钥、紧急安全码等信息。

 ——  信息与网络中心  ——

编辑 | 谢一曼

    审核 | 陈军、刘中宇、王新平

责编 | 邹有

-END-




本文内容来源于公众号: 中南大学信网中心 ,请扫码查看原文。

点此可查看原文