SSH通过“运维密码”小程序实现 SSH 双因子认证

本文详细介绍了如何在Linux系统上部署Google身份验证器作为双因子认证的一部分,包括安装依赖、配置服务器、生成动态口令及整合SSH服务的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是双因子认证

GitHub:https://github.com/LCTT/WeApp-Password
双因子认证(即 2FA),是一种通过组合两种不同的验证方式进行用户身份验证的机制。
在这种多重认证的系统中,用户需要通过两种不同的认证程序:
(1)提供他们知道的信息(如用户名/密码)
(2)再借助其他工具提供用户所不知道的信息(如用手机生成的一次性密码)

二、目的

实现登录Linux 服务器时,除了输入用户名密码外,需要输入一次性的动态口令才能验证成功。

三、在 Linux 系统中安装 Google 身份验证器服务器端组件

生成动态口令的其中一个因素是时间,需要保持终端设备和服务器的系统时间一致,才能生成同一的动态口令
简单说下chrony:chrony 是网络时间协议的(NTP)的另一种实现,与网络时间协议后台程序(ntpd)不同,它可以更快地更准确地同步系统始终。

三、安装前准备

3.1、安装依赖

yum -y nstall gcc make pam-devel libpng-devel libtool wget git

3.2、添加阿里云epel源:

RHEL 6/Centos 6
wget O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
RHEL 7/Centos 7
wget O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

在 CentOS 上安装 Google 身份验证器服务器端组件,启用epel 之后,运行:

yum install google-authenticator

3.3、安装依赖

yum -y install gcc make pam-devel libpng-devel libtool wget git

3.4、安装Qrencode,谷歌身份验证器需要调用该程序生成二维码并显示

yum install -y qrencode

3.5、安装谷歌身份验证器

wget https://github.com/google/google-authenticator-libpam/archive/1.04.tar.gz
 #解压
tar zxvf 1.04.tar.gz
cd google-authenticator-libpam-1.04
 # 进行编译和安装
./bootstrap.sh && ./configure && make && make install

如果构建成功,你会在目录中看到 pam_google_authenticator. 和 和 google-authenticator 两个二进制文件。
在这里插入图片描述
3.6、使用以下命令生成验证密钥
google-authenticator
在这里插入图片描述
生成的二维码:
在这里插入图片描述
**3.7、**在二维码和密钥字符串后面,接着显示了一个当前的校验码和几个紧急密钥。紧急密钥你可以另行保存的一个安全的地方,以防你在无法使用 Google 身份验证器应用或“运维密码”时使用(紧急密钥是 8 位的,不同于普通的 6 位密钥,也是一次性使用的)。
在这里插入图片描述
保存 Google 服务器端组件的配置文件,Google 身份验证器虽然运行了,但是相关设置还没有保存,接下来会提示保存:
在这里插入图片描述
意思是:你想将配置文件更新到 /root/.google_authenticator 保存吗?输入 y 回车。

禁止同一令牌多次登录:
在这里插入图片描述
意思是:你是否要禁用同一密钥多次登录,这将限制你每 30 秒只能使用该密钥登录一次,但这能够让你可以更多地被提醒受到了中间人攻击,甚至能够防止这种攻击。输入 y 回车。

时间容错设置:
在这里插入图片描述
这个可根据实际情况进行配置,一般一分钟就足够了。输入 y回车。

暴力破解防护:
在这里插入图片描述
意思是:为了避免暴力破解,可以启用速率限制,默认情况下,每 30 秒只能尝试 3 次。输入 y回车

配置完成:
配置完成后会在home目录下生成一个权限为 400 的隐藏文件,如下图所示:
在这里插入图片描述
3.8、打开微信小程序:
打开微信,依次点击“发现”,“小程序”,输入“运维密码”并搜索。
点击“运维密码”进入应用,然后点击列表下方的“添加场景”。 这会调起“扫一扫”功能,请扫描配置 google-authenticator 时所生成的二维码,然后会识别出该场景信息,你可以根据需要修改场景信息,点击确定添加场景。
这样 Google 身份验证器就和“运维密码”匹配上了。下面我们要使 SSH 服务可以支持该验证。
3.9、配置SSH服务
添加认证模块
使用如下命令在 /etc/pam.d/sshd 文件添加认证模块
在这里插入图片描述
在 Centos 6.6 或更低的版本中如果遇到无法进行 google-authenticator 验证的情况,请将 auth required pam_google_authenticator.so放在 /etc/pam.d/sshd 文件的最顶端进行测试一下。

配置挑战式密码认证:
在这里插入图片描述

vim /etc/ssh/sshd_config
passwordAuthentication yes
ChallengeResponseAuthentication yes #配置挑战式密码认证 
UsePAM yes
systemctl restart sshd #重启 sshd 服务

切记:服务器时间都得一致,因为这个错误浪费了一些时间。
本文档在centos7-7.2上都测试成功了,不同的环境可能有些小的误差。
参考博客:http://blog.youkuaiyun.com/weifangan/article/details/73332029

### 运维项目中堡垒机的最佳实践 #### 堡垒机的作用与意义 在运维项目中,堡垒机是一种集中化访问管理和审计的安全设备。它能够有效提升企业的安全性并简化合规性需求。通过堡垒机,可以实现对服务器和其他 IT 资产的统一管理、身份认证以及行为记录。 #### 部署配置方案 对于 JumpServer 堡垒机的具体部署流程,可以通过 Docker 来快速搭建环境。以下是其核心要点: - 使用官方镜像构建容器实例,确保基础架构稳定运行。 - 将必要的服务组件(如 Redis 和 MySQL 数据库)集成到同一网络空间下以便于数据交互[^2]。 ```bash docker run --name jms -d \ -p 2222:2222 -p 8080:8080 jumpserver/jumpserver-all-in-one:v2.9.0 ``` 此命令启动了一个包含所有必要功能模块的一体化版本 JumpServer 实例,并开放了 Web 控制台端口 (8080) 及 SSH 登录转发端口 (2222)。 #### 用户角色定义及权限划分 为了满足不同人员的工作职责,在 JumpServer 中设置了多种预设好的用户类别——管理员账户负责整体系统的维护;普通工程师仅限执行日常任务而无修改配置的能力;第三方供应商则被严格限制只能接触特定范围内的目标主机资源[^4]。 此外还支持多因子验证(MFA),进一步增强了登录过程中的安全保障措施。如果遇到忘记绑定手机或者丢失硬件令牌等情况,则需按照既定规程申请解除当前关联状态后再重新设定新的二次校验方式[^3]。 #### 安全策略制定 建立完善的安全管理制度至关重要,这不仅涉及技术层面的操作规范,还包括组织内部的文化建设和员工培训等方面的内容。具体来说: 1. **强密码规则**: 强制要求每位使用者设立复杂度较高的个人专属密钥组合; 2. **定期轮换凭证信息**: 对长期有效的静态凭据实行周期性的更换计划; 3. **细粒度授权机制**: 根据实际业务场景灵活调整各组别的可操作对象列表; 4. **详尽日志保留期限规定**: 明确指出各类事件发生后的追踪时限长度及其存储位置等细节描述。 以上这些方面共同构成了一个全方位防护体系框架下的重要组成部分之一 —— 即所谓的 “纵深防御”。 ### 结论 综上所述,采用合适的工具配合科学合理的管理办法可以帮助企业在保障网络安全的同时提高工作效率。JumpServer 提供了一套完整的解决方案来应对上述挑战,从最初的安装调试到最后上线投入使用都给出了清晰易懂的操作指导手册。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值