account required pam_nologin.so
account include system-auth
password include system-auth
session include system-auth
session required pam_loginuid.so
添加WiKID服务器到/etc/raddb/server文件,使用WiKID服务器的外部IP地址以及在网络客户端创建页面输入的共享密码:
# server[:port] shared_secret timeout (s)
127.0.0.1 secret 1
xxx.xxx.xxx.xx wikidserver_secret 3
这里也需要向SSH配置增加一些安全性,打开/etc/ssh/sshd_config(不是附近的ssh_config文件),添加这些配置选项:
#Protocol 2,1
#检查只有协议2被允许: Protocol 2
#禁用root登录:
PermitRootLogin no
#禁用没有密码的帐号:
PermitEmptyPasswords no
现在网关已经设置为使用WiKID一次性密码来进行SSH验证,所有用户必须注册到WiKID服务器,没有人可以作为root登录。下面我们将做点小变动,让用户可以在网关创建自己的RSA密钥,只要用户在WiKID注册后,就能创建自己的密钥:
class="command">ssh-keygen -t rsa
其实,这些密钥的密码短语是多余的,我们必须确保用户不能访问其他密钥。
配置目标服务器
显然,我们需要将这些服务器配置为仅接受来自网关的SSH请求,这可以通过限制端口22对内部地址的访问来实现,编辑/etc/sysconfig/iptables或者端口22的SSH这行:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
允许WiKID软件令牌
启动WiKID令牌,选择与SSH网关相关的域名,然后输入密码,就能获得一次性密码,这个密码是有时间限制的,可以在WiKID服务器任意设置密码的有效时间。
当SSH框弹出时用户只需输入一次性密码
令牌同样也可以从命令行运行,这对于SSH很便捷:
java -cp jWiKID-3.1.3.jar:jwcl.jar com.wikidsystems.jw.JWcl domainid
domainid是12位域标识符
结论
很多企业都面临着合规和监管的问题,网络环境也变得越来越复杂和危险,同时,用户也需要更多的远程访问,这些都给企业的安全部门带来不小挑战。
本文主要探讨的是向SSH添加双因素验证,我们选择Radius作为网络验证标准,这是个不错的选择。大部分VPN、远程桌面系统、网络服务器和其他远程访问服务都支持Radius,当大家在考虑添加双因素验证时,只需要考虑系统是否支持Radius即可,然后可以将Radius指向NPS服务器,就可以实现双因素验证。