76 FreeBSD连载:设置基本系统( 四 )


更改S/key种子仍然还需要使用keyinit命令,然而此时有了一次性口令,就不需要在安全的终端上进行了,需要使用-s参数,使得keyinit使用一次性口令来获得S/key口令短语,而不必直接输入S/key口令短语 。只要保证S/key口令短语的安全,就能保证整个S/key一次性口令序列不会被再现 。
bash-2.02$ keyinit -sUpdating wb:Old key: de415502Reminder you need the 6 english words from the key command.Enter sequence count from 1 to 9999: 100Enter new key [default de415503]:s/key 100 de415503s/key access password: GAS SAM RUSK BASH NEWS WAITID wb s/key is 100 de415503GAS SAM RUSK BASH NEWS WAITkeyinit -s命令中,需要输入一次性口令序列中口令的数量,以及新种子的值 。而用于认证的S/key一次性口令为提示的一次性口令,这里为de415503,序列号为100 。
需要注意的是,缺省情况下即使使用S/key认证,原有的Unix口令认证方式仍然有效,如果S/key认证不成功,系统就接下来使用原有的老Unix口令认证方式 。对于一些图形界面的应用程序,不能提示S/key口令的序列号,那么用户也无法输入正确的一次性口令,此时使用老口令就有必要了 。
然而,也能限制用户必须使用S/key口令,不能使用普通Unix明文口令,以更大程度上增强安全性 。为了强制用户使用S/key口令,需要创建一个/etc/skey.access文件 。
# touch /etc/skey.access当存在这个文件时,S/key认证系统就不再调用标准Unix认证系统 。然而这个文件中可以设置一些例外的情况,允许使用Unix认证系统,例如在内部网络中允许使用Unix明文认证系统,等等 。针对IP地址、用户和终端来设置可以使用Unix明文认证系统的权力 。针对用户打开这个设置的情况一般是因为该用户不需要特别安全的情况,针对终端打开这个设置的情况通常发生在拨号访问FreeBSD系统的情况,由于认证口令不通过网络,因此也不需要S/key加密 。
permit internet 198.162.0.0 255.255.0.0permit user aaapermit port ttyd0对于一些需要自动进行认证的应用程序,需要将口令暂时保存起来,定时自动进行认证工作,但由于S/key的口令是一次性方式的,而客户软件不能根据S/key的提示,输入正确的口令,此时使用老口令也是必要的 。如有些使用POP3协议的客户端能定时从邮件服务器中下载邮件,这样就必须使用标准Unix口令 。显然这明显是一个非常严重的安全漏洞,特别是明文口令不但是在网络上传输,而且是定时、多次传输的时候,问题更为明显 。对于这样的情况,最好立即转换为支持加密口令的协议,对POP3来讲可以使用APOP协议 。
FreeBSD下使用的另一种安全认证方式为Kerberos方式,这是一种安全的认证模式,然而它需要客户和服务器都支持这个认证方式才行 。当前流行的Kerberos为Kerberos V,而FreeBSD下使用的为Kerberos IV,因此与其他Kerberos客户存在兼容的问题,使得这个认证系统大部分情况下用于多台FreeBSD系统之间进行认证 。这里就不再介绍其使用方法了,需要使用这个能力的用户可以查看FreeBSD Handbook,以获得相关的内容 。
FreeBSD下也可以安装Kerberos V认证系统,它位于Posts Collecion中的security部分中 。
可加载认证模块PAM
3.1-release之后的FreeBSD版本支持可加载的认证方式模块PAM,这种机制能使得系统能非常灵活的支持多种认证方式,具备非常大的可扩展性 。PAM的设置文件为/etc/pam.conf,这里定义了各种条件下使用的认证方式 。
# Configuration file for Pluggable Authentication Modules (PAM).## This file controls the authentication methods that login and other# utilitIEs use.See pam(8) for a description of its format.## Note: the final entry must say "required" -- otherwise, things don"t# work quite right.If you delete the final entry, be sure to change# "sufficient" to "required" in the entry before it.## $FreeBSD: src/etc/pam.conf,v 1.1 1998/11/20 23:20:01 jdp Exp $# If the user can authenticate with S/Key, that"s sufficient.login auth sufficient pam_skey.so# Check skey.access to make sure it is OK to let the user type in# a cleartext password.If not, then fail right here.login auth requisite pam_cleartext_pass_ok.so# If you want KerberosIV authentication, uncomment the next line:#login auth sufficient pam_kerberosIV.sotry_first_pass# Traditional getpwnam() authentication.login auth required pam_unix.sotry_first_pass这是系统缺省的pam.conf文件,这里定义了三个认证过程,按照顺序系统将首先使用pam_skey.so,然后pam_cleartext_pass_ok.so,最后是标准unix认证pam_unix.so 。第一个是用于使用S/key系统认证,第二个不是一个认证,而是用于限制用户访问的,它检查/etc/skey.access,以禁止非许可的节点、用户登录,因此其第三个参数为requisite,而非pam_skey.so对应的sufficient,如果第二个设置许可,才能进入第三项定义的标准Unix认证方式 。

推荐阅读