Linux系统使用OTPW实现双因子认证

简介: otpw主要有以下几个优点: 1、前缀密码+一次性随机码,相当于双重加密。就算随机码列表泄露,没有前缀密码也是无用 2、如果一次没登录成功,会启用三重随机码,要破解那是非常困难 3、用户目录下保存密码的文件可通用,适合批量部署

otpw主要有以下几个优点:

1、前缀密码+一次性随机码,相当于双重加密。就算随机码列表泄露,没有前缀密码也是无用
2、如果一次没登录成功,会启用三重随机码,要破解那是非常困难
3、用户目录下保存密码的文件可通用,适合批量部署

step1:安装otpw
环境:Oracle Linux Server release 6.4
2.6.39-400.17.1.el6uek.x86_64

# yum git gcc pam-devel
# git clone https://www.cl.cam.ac.uk/~mgk25/git/otpw
或者
# wget –no-check-certificate https://www.cl.cam.ac.uk/~mgk25/download/otpw-1.5.tar.gz
# cd otpw

打开 Makefile 文件,编辑以“PAMLIB=”开头的那行配置:

PAMLIB=/lib64/security

如果不确定要放在哪个目录,可以打开/etc/pam.d/sshd,用find查找一下里面的so文件在哪个目录,上面就填哪个目录

#make
#make install

安装后会自动重启ssh服务,会断开连接。

step2: 启用otpw

我们这里只限制SSH登录,并不限制本地登录。
只编辑/etc/pam.d/sshd
在最上面添加两行:

auth sufficient pam_otpw.so
session optional pam_otpw.so

添加这两句,原密码还是可以登录的。
原密码可以设一个复杂的,只有管理员自己有。

如果只想让otpw一次性密码登录,第一句需改成:

auth required pam_otpw.so

如果是要限制root用户,最好是保留原密码也可以登录。
如果是限制其它普通用户,则可以设置只让otpw一次性密码登录。

step3: 配置sshd_config

编辑/etc/ssh/sshd_config

UsePrivilegeSeparation yes
ChallengeResponseAuthentication yes
UsePAM yes

如果需要设置原密码不能登录,还需要设置:

PasswordAuthentication no

#service sshd restart

step4: 生成一次性密码

#/root/otpw/otpw-gen >passwd_list
生成一次性密码并保存到passwd_list文件中

会提示你两次输入密码前缀(方便自己记忆的),以后登录输密码的时候,一次性密码前都需要加上这个前缀作为完整密码登录。

这样做是怕这份一次性密码泄露了,没有前缀密码,是不能登录的。

#cat passwd_list

8c86f6e594de3bcb778530745882b5df999007bc

产生了 280 个一次性密码,每个密码(默认是 8 个字符)由一个 3 位十进制数索引。

再用户主目录下,会有一份根据根一次性密码对应的HASH值密码文件。用来登录时进行匹配,并且登录过的密码会进行删除,保证密码的一次性。

#cat ~/.otpw

05afa8b30519d4fa5013951a4f5c1bd986daca78

————虚线处即表示原先这个密码已经被使用丢弃。

step5:用一次性密码登录
在别的电脑上用ssh远程登录
#ssh 172.31.1.132
Password 175/197/122:

如果“Password”后带有数字,即表示otpw起效了。如果没带数字,就要检查一下配置了

输入密码:
password后跟的数字,即一次性密码的排列序号数,找到对应的密码,再结合前缀密码,组成完整密码。
假如前缀密码是bing
ssh远程时出现: Password 001:
完整密码即:bingAIoJ o/xF (中间的空格可有可无)
AIoJ o/xF即前面生成的一次性密码表中的第二个值

如果密码输入错误,就会显示三组数字,密码就需要输入三组数字对应 的密码,加上前缀密码,组合成完整的密码输入。

可以定期生成密码列表,然后发送给各相关管理员即可。

otpw主页:https://www.cl.cam.ac.uk/~mgk25/otpw.html

相关文章
|
3天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
17 3
|
3天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
15 2
|
24天前
|
Linux
Linux系统之expr命令的基本使用
【10月更文挑战第18天】Linux系统之expr命令的基本使用
72 4
|
13天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
35 5
linux系统服务二!
|
13天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
34 3
linux系统服务!!!
|
21天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
168 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
23天前
|
Linux 测试技术 网络安全
Linux系统之安装OneNav个人书签管理器
【10月更文挑战第19天】Linux系统之安装OneNav个人书签管理器
40 5
Linux系统之安装OneNav个人书签管理器
|
22天前
|
运维 监控 Linux
Linux系统之部署Linux管理面板1Panel
【10月更文挑战第20天】Linux系统之部署Linux管理面板1Panel
69 3
Linux系统之部署Linux管理面板1Panel
|
3天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
18 3
|
6天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
23 6