如何用privacyidea-pam模块实现SFTP手机认证2FA?

FTP & SFTP & FTPS

1 前言

一个问题,一篇文章,一出故事。
笔者想实现SFTP的2FA以便增强SFTP服务的安全性,于是便整理此文。
本章实现的验证流程,
– Step1,打开手机“Google Authenticator”APP获取一次TOTP验证码
– Step2,在FileZilla中使用交互模式第一次输入SFTP用户名和密码验证通过
– Step3,在FileZilla中根据提示输入TOTP一次性密码完成2FA认证
另外,需要提醒阅读者的是,使用privacyidea-pam认证模块与privacyidea集成的项目,只能为10000个用户提供2FA服务。详细请参阅如下连接,
https://github.com/privacyidea/privacyidea

2 最佳实践

2.1 环境信息

2.1.1 部署SFTP环境

Host Name = sftp.cmdschool.org
OS = RHEL 8.x x86_64
IP Address = any
如果你尚未准备SFTP环境,请参阅如下文档配置,

如何配置独立的SFTP服务?

2.1.2 部署privacyIDEA认证服务

Host Name = privacyidea.cmdschool.org
OS = RHEL 9.x x86_64
IP Address = any
如果你尚未准备PrivacyIDEA认证服务环境,请参阅如下文档配置,

如何基于RHEL 8.x部署PrivacyIDEA?

2.1.3 安装手机的“Google Authenticator”APP

如果是安卓系统,请直接从谷歌的应用市场下载并安装“Google Authenticator”APP,另外如果是鸿蒙OS的手机需要先安装Gspace,详细请参阅如下章节,

如何实现鸿蒙安装Google Play应用?

2.1.4 加载sftp的用户源到PrivacyIDEA服务器

详细请参阅如下章节,

如何加载privacyIDEA非本地的passwd文件用户源?

2.2 配置sftp用户的TOTP一次性密码

如上图所示,
单击【Tokens】->【Enroll Token】
选择“TOTP: Time based One Time Passwords”
填写“Realm”,范例中填写“sftp.cmdschool.org”
填写“Username”,范例中填写“sftpUser01”
单击【Enroll Token】即可创建用户令牌

界面显示如下,

如上图所示,
手机中打开“Google Authenticator”APP
点击【已验证ID】->【扫描QR码】扫描上面的二维码
点击【Authenticator】->【privacyIDEA】即可查看一次性密码密码(后面sftp用户登录需要使用)

2.3 配置SFTP的2FA认证模块

In sftp,

2.3.1 安装认证插件

wget https://github.com/privacyidea/privacyidea-pam/releases/download/v1.0.0/pam_privacyidea.so
mv pam_privacyidea.so /usr/lib64/security/

2.3.2 修改PAM的sftpd配置

cp /etc/pam.d/sftpd /etc/pam.d/sftpd.default
vim /etc/pam.d/sftpd

加入如下配置,

auth       substack     password-auth
auth       required     pam_privacyidea.so url=https://privacyidea.cmdschool.org realm=sftp.cmdschool.org debug
#...

2.3.3 修改sftpd配置

vim /etc/ssh/sftpd_config 

加入如下配置,

#ChallengeResponseAuthentication no
ChallengeResponseAuthentication yes

重启服务使配置生效,

systemctl restart sftpd.service

2.4 使用FileZilla测试SFTP的2FA认证

打开“FileZilla”中单击【文件】->【站点管理】

如上图所示,
单击【新建站点】
选择“协议”,范例中选择“SFTP-SSH File Transfer Protocol”
填写“主机”,范例中填写“sftp.cmdschool.org”
选择“登录类型”,范例中选择“交互式”
填写“用户”,范例中填写“sftpUser01”
单击【连接】即开始测试

界面显示如下,

如上图所示,
填写“密码”
单击【确定】

界面显示如下,

如上图所示,
手机中打开“Google Authenticator”APP
点击【Authenticator】->【privacyIDEA】中取得一次性OTP密码
并填入上图的“OTP密码”中
单击【确定】

界面显示如下,

如上图所示,
状态信息显示成功即可正常使用。

参阅文档
===============

官方GitHub
———————
https://github.com/privacyidea/privacyidea-pam

软件下载页面
———————
https://github.com/privacyidea/privacyidea-pam/releases

配置文档
———————-
https://www.privacyidea.org/ssh-keys-and-otp-really-strong-two-factor-authentication/

其他参阅连接
———————-
https://github.com/privacyidea/pam_python

没有评论

发表回复

FTP & SFTP & FTPS
如何基于Oracle Linux 9.x实现SFTP邮件认证2FA?

1 前言 一个问题,一篇文章,一出故事。 笔者想实现SFTP的2FA以便增强SFTP服务的安全性,于 …

FTP & SFTP & FTPS
如何基于配置SFTP集成AD域?

1 前言 1 前言 一个问题,一篇文章,一出故事。 笔者最近接到需要在SFTP集成AD的任务,于是整 …

FTP & SFTP & FTPS
如何基于Oracle Linux 9.x配置独立的SFTP服务?

1 基础知识 1.1 概念 sftp是Secure File Transfer Protocol的缩 …