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

FTP & SFTP & FTPS

1 前言

一个问题,一篇文章,一出故事。
笔者想实现SFTP的2FA以便增强SFTP服务的安全性,于是便整理此文。
本章实现的验证流程,
– Step1,在FileZilla中使用交互模式第一次输入SFTP用户名和密码验证通过,此时界面提示应用邮箱中取得一次性验证密码
– Step1,在邮箱中取得一次性验证密码
– Step3,在FileZilla中根据提示输入一次性密码完成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 加载sftp的用户源到PrivacyIDEA服务器

详细请参阅如下章节,

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

2.1.4 创建sftp用户邮件Token

如何创建PrivacyIDEA的邮件2FA Token?

2.1.5 修改Token的邮件模板(可选)

如何修改代码自定义PrivacyIDEA的OTP邮件模板?

2.2 配置SFTP的2FA认证模块

In sftp,

2.2.1 安装认证插件

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

2.2.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 sendEmptyPass debug
#...

2.2.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”
单击【连接】即开始测试

界面显示如下,

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

界面显示如下,

如上图所示,
从邮件中获取OTP密码
并填入上图的“Password”中
单击【确定】

界面显示如下,

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

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

官方GitHub
———————
https://github.com/privacyidea/privacyidea-pam
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
如何解决Windows SFTP命令的权限提示?

1 前言 一个问题,一篇文章,一出故事。 今天笔者使用windows系统如下命令连接sftp服务器时 …

Bash
如何实现SFTP自动上传下载?

1 前言 一个问题,一篇文章,一出故事。 笔者最近需要实现sftp自动上传下载,于是整理此文。 以下 …

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

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