Google author.jpg

主理人说

还记得前几天博主发的文章吗?:Google/Microsoft 身份验证器 (Google/Microsoft Authenticator) ,转念一想,是不是给SSH登录时也开启两步认证,就算对方真的hack成功,也没办法攻破2FA(两步认证)不是?

虽然我也部署了 fail2ban,但两步认证这个似乎真靠谱;

资料参考

How To Configure Multi-Factor Authentication on Ubuntu 18.04

支持

按理说Linux 各版本 server 均支持;Ubuntu/Debian/CentOS/Redhat等,
以下以Ubuntu 18.0.4为例,为Linux server开启登录两步认证;

详细步骤

手机安装谷歌身份验证器
由于该技术是开源的,所以也有很多身份验证器被开发出来的:较为出名的便是 Google/Microsoft 身份验证器 两种;

Google Authenticator - Apps on Google Play
Google Authenticator on the App Store
Microsoft Authenticator Microsoft Authenticator - 支持iCloud数据备份(谷歌身份验证器不支持)

*各大应用市场亦可下载安装,搜索下载即可(大陆地区也有的);

更新软件源

$ apt-get update

安装谷歌两步验证包 Google PAM Module

$ apt-get install libpam-google-authenticator

配置Google PAM Module的配置文件

$ google-authenticator

提示及回复
1.基于系统时间,选择是(Google authenticator 就是基于时间产生token的);

Do you want authentication tokens to be time-based (y/n) y 

2.是否更新你的 "~/.google_authenticator" 文件?

Do you want me to update your "~/.google_authenticator" file (y/n) y #更新

3.您是否要禁止多次使用同一身份验证令牌?这样一来,您每30秒只能登录一次,但这种情况会增加您有机会注意到甚至阻止中间人攻击?

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

4.一般而言系统时间不会有误差,建议不要开启;

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) n

5.30秒内两步认证失误则将该登录者的IP进行限制,30秒内不能重复尝试(错误)登录超过3次;

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y

然后会生成二维码或一串数字代码,你可以*使用 Google authenticator 或 Microsoft authenticator 扫码获取token(用于下次登录),或手动输入代码;

激活 2FA in Ubuntu

$ nano /etc/pam.d/common-auth

编辑common-auth,在末尾添加一句auth required pam_google_authenticator.so nullok

/etc/pam.d/common-auth
...
# and here are more per-package modules (the "Additional" block)
session required    pam_unix.so
session optional    pam_systemd.so
# end of pam-auth-update config
auth required pam_google_authenticator.so nullok

此行告诉Ubuntu身份验证系统在通过Google PAM模块登录时要求2FA。使用nullok选项,即使现有用户尚未为其帐户配置2FA身份验证,也可以登录系统。换句话说,已配置2FA的用户将需要在下次登录时输入身份验证代码,而未运行google-authenticator命令的用户将只能使用其用户名和密码登录,直到他们进行配置2FA。

保存,然后退出。

要求必须使用2FA用于登录

$ sudo nano /etc/pam.d/common-session

文件的末尾添加一句auth required pam_google_authenticator.so nullok

# # and here are more per-package modules (the "Additional" block)
session required    pam_unix.so
session optional    pam_systemd.so
# end of pam-auth-update config
auth required pam_google_authenticator.so nullok

注意事项

配置PC SSH 软体时,记得把认证方法由之前的密码修改为Keyboard Interactive
Keyboard Interactive.jpg

以上。

联系主理人

1.关注频道 https://t.me/limboprossr 不失联;
2.毒奶粉们(我管我的Fans)可联系 TG机器人 或发送 邮件 获取帮助;

3.或点击本页面右下角的聊天按钮联系;

最后修改:2020 年 01 月 17 日 12 : 48 PM