如何用privacyidea-pam模块实现SFTP邮件认证2FA?
- By : Will
- Category : 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环境,请参阅如下文档配置,
2.1.2 部署privacyIDEA认证服务
Host Name = privacyidea.cmdschool.org
OS = RHEL 9.x x86_64
IP Address = any
如果你尚未准备PrivacyIDEA认证服务环境,请参阅如下文档配置,
2.1.3 加载sftp的用户源到PrivacyIDEA服务器
详细请参阅如下章节,
2.1.4 创建sftp用户邮件Token
2.1.5 修改Token的邮件模板(可选)
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
没有评论