第一步:在Linux上安装和配置OTPW
在Debian、Ubuntu或Linux Mint上:
用apt-get安装OTPW程序包。
$ sudo apt-get install libpam-otpw otpw-bin
使用文本编辑工具,打开SSH的PAM配置文件(/etc/pamd/sshd),注释掉下面这行代码(以禁用密码验证)。
#@include common-auth
然后添加下面两行代码(以启用一次性密码验证):
auth required pam_otpwso
session optional pam_otpwso
在Fedora或CentOS/RHEL上:
在基于红帽的系统上,没有作为预制程序包的OTPW。于是,我们通过从源代码来构建的方法,安装OTPW。
首先,安装基本组件:
$ sudo yum git gcc pam-devel
$ git clone >
使用文本编辑工具打开Makefile,编辑以“PAMLIB=”开头的这一行,如下所示。
在64位系统上:
PAMLIB=/usr/lib64/security
在32位系统上:
PAMLIB=/usr/lib/security
编译后安装。请注意:安装环节会自动重启SSH服务器。所以如果你使用SSH连接,就要准备好断开。
$ make
$ sudo make install
现在你需要更新SELinux策略,因为/usr/sbin/sshd试图写入到用户的主目录,而默认的SELinux策略不允许这个 *** 作。下面这些命令可以起到更新策略的作用。如果你不使用SELinux,跳过这一步好了。
$ sudo grep sshd /var/log/audit/auditlog | audit2allow -M mypol
$ sudo semodule -i mypolpp
下一步,用文本编辑工具打开SSH的PAM配置文件(/etc/pamd/sshd),注释掉下面这行代码(以禁用密码验证)。
#auth substack password-auth
然后添加下面两行代码(以启用一次性密码验证):
auth required pam_otpwso
session optional pam_otpwso
第二步:针对一次性密码配置SSH服务器
下一步是配置SSH服务器,以接受一次性密码。
用文本编辑工具打开/etc/ssh/sshd_config,设置下列三个参数。确保你没有不止一次地添加这几行,因为那会引起SSH服务器失效。
UsePrivilegeSeparation yes
ChallengeResponseAuthentication yes
UsePAM yes
你还需要禁用默认的密码验证。可以视情况,禁用公密验证,那样万一你没有一次性密码,就可以恢复到基于密钥的验证。
PubkeyAuthentication yes
PasswordAuthentication no
现在,重启SSH服务器。
在Debian、Ubuntu或Linux Mint上:
$ sudo service ssh restart
在Fedora或CentOS/RHEL 7上:
$ sudo systemctl restart sshd
第三步:用OTPW生成一次性密码
如前所述,你需要事先创建一次性密码,并将它们存储在远程SSH服务器主机上。为此,以你登录时所用的用户身份运行otpw-gen工具。
$ cd ~
$ otpw-gen > temporary_passwordtxt
它会要求你设置一个前缀密码。你以后登录时,就需要输入这个前缀密码以及一次性密码。实际上前缀密码是另一层保护机制。即使密码表落到了不法分子手里,前缀密码也会迫使对方采用蛮力攻击。
一旦前缀密码设置完毕,命令会生成280个一次性密码,并将它们存储在输出文本文件(比如temporary_passwordtxt)中。每个密码(默认情况下长度是8个字符)的前面是三位数的索引号。你可以将文件打印在纸张上,随身携带。
你还会看到~/otpw文件已创建,这些密码的密码散列就存储在其中。每一行的头三位表明了将用于SSH登录的密码的索引号。
$ more ~/otpw
OTPW1
280 3 12 8
191ai+:ENwmMqwn
218tYRZc%PIY27a
241ve8ns%NsHFmf
055W4/YCauQJkr:
102ZnJ4VWLFrk5N
2273Xww55hteJ8Y
1509d4b5=A64jBT
168FWBXY%ztm9j%
000rWUSdBYr%8UE
037NvyryzcI+YRX
122rEwA3GXvOk=z
测试用于SSH登录的一次性密码
现在,不妨像平常那样登录到SSH服务器:
$ ssh user@remote_host
如果OTPW成功设置,你会看到略有不同的密码提示符:
Password 191:
现在打开密码表,寻找密码表中的索引号“191”。
023 kBvp tq/G 079 jKEw /HRM 135 oW/c /UeB 191 fOO+ PeiD 247 vAnZ EgUt
据上面密码表显示,编号“191”的一次性密码是“fOO+PeiD”。你需要在前面加上前缀密码。比如说,如果你的前缀密码是“000”,那么需要输入的实际的一次性密码是“000fOO+PeiD”。
一旦你成功登录,所使用的密码会自动作废。如果你查看~/otpw,就会注意到第一行被换成了“---------------”,这意味着密码“191”已经无效。
OTPW1
280 3 12 8
---------------
218tYRZc%PIY27a
241ve8ns%NsHFmf
055W4/YCauQJkr:
102ZnJ4VWLFrk5N
2273Xww55hteJ8Y
1509d4b5=A64jBT
168FWBXY%ztm9j%
000rWUSdBYr%8UE
037NvyryzcI+YRX
122rEwA3GXvOk=z
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)