2011年的互联网密码泄露事件刚刚过去不久,最近又据某站点在微博中爆出《头条:疑上万服务器账号泄露》——部分汉化开源远程服务器管理软件Putty、WinSCP、SSH Secure等被爆内置后门,截至目前PuTTY后门服务器已有上万账户泄露,管理员手中的海量数据面临重大安全危机。
修改密码,亡羊补牢
每一次面对密码泄露事件之后,大凡给出的建议方案都是例如“建议尽快修改密码,策略加固”之类的,以此避免短时间内重复出现密码泄露情况,算是亡羊补牢方案,无法解决密码认证自身的静态属性,只要存在偷盗,静态密码认证机制即面临其固有的风险。由于各种盗窃技术五花八门,防不胜防,很多时候管理员无法控制服务器登陆密码被盗。
是否有一种方法,即使非法用户获取了账号密码之后,仍然无法成功访问我们管理的服务器资源?
尝试考虑一次性密码技术
一次性密码技术绝对不是一个新的概念,简而言之即根据特定算法计算出来随即变化的密码且一次使用有效,目前通行的是基于时间型的它每隔60/30秒变化一个密码,然而在服务器登陆认证场景下,它确实是最为合适的。
为什么这样说?目前服务器一次性密码认证解决方法是在账户密码认证技术之上,再增加一层一次性密码认证,从而形成双因子认证,后门Putty/ WinSCP/SSH Secure通过植入木马获取用户账户、密码、一次性密码信息并上传至其服务器中,非法用户利用盗窃的账号、密码、一次性密码进行非授权访问,由于该一次性密码已经使用失效,因此仍然成功访问服务器。
尤其像IDC、电信运营商、网游、大型企业、政府、互联网企业等,其服务器数量十分庞大,传统定期为服务器修改高强度密码方案可以减少猜测导致的非授权访问几率,但仍无法解决偷盗引起的非法登入,另一方面处理修改、遗忘而导致的重置密码相关的IT管理成本日益增加,采用一次性密码在提升服务器认证安全同时亦可减少以上开销。
在服务器管理上,目前通常采用硬件令牌作为一次性密码生成器,由于密码产生无需与服务器接触,因此适合远程访问服务器。
由于一次性密码认证借助Linux/UNIX内置的PAM认证,具体可参考宁盾的《用PAM结合动态密码提升Linux服务器访问安全》中提及的方案,需要增加的就是认证服务器软件,然后配置PAM认证即可,同时它可以与服务器证书机制并存,进一步提升访问安全,越来越多的企业在服务器管理中已经采用了一次性密码方案。
以上是笔者实施过多家企业服务器一次性密码认证的一点浅薄心得,欢迎批评指正。