引言
Linux系统管理员(System Administrator,SA)经常碰到的问题就是放在公网的服务器经常被人猜测密码,每天都可以从系统日志里看到探测密码的信息,再加上最近很多厂商泄露了包含用户密码的数据库,撞库的行为也逐步开始转移到SSH上。
最初SA的防御手段一般是限制IP地址、修改SSH端口、部署失败一定次数就锁定或者封IP的程序或者脚本,更有极客想出了敲门3次端口才开放的办法,可谓无所不用其极。但是这些办法很多都不是很方便,改了端口,连接时需要指定端口;限制了IP地址,发现在家上网就登录不了了,封锁脚本可能把自己也锁定了。
在大公司里一般是采用的“RSA SecurID”方案,或者类似的技术。我们称其为双因子认证或者多因子认证(Two Factor Authentication;MFA,Multi Factor Authentication),在输入密码的同时需要输入一个一次性口令(OTP,One Time Password)。这种方案也有软件实现和硬件实现,软件例如google authenticator、Symantec Validation and ID Protection (VIP) ;硬件例如 RSA SecurID、飞天诚信的密保产品。
使用RSA SecurID的方案看起来虽然很好,但是他需要独立部署RSA Server,需要占用一台服务器,并且Server端软件是收费的,RSA SecurID密保也是收费的。
有没有免费的办法?
有啊,今天就来介绍一个。
实现方法
最简单的实现的方式,用户登录时需要输入用户名+PIN+密码方式才能登录。
这里的PIN是一个字符串,例如”ipcpu.com”,固定死的,不会变。
[root@IPCPU-0 security]# ssh root@192.168.110.11
Enter Your PIN:
Password:
Last login: Mon Mar 21 00:44:26 2016 from 192.168.110.11
安装pam_python模块
pam_python &#x