上篇Openconnect服务部署配置文件当中,使用了最为便捷的pam方式验证。
而Openconnect支持丰富的验证类型甚至进行计费:
支持以下方式的密码认证
- PAM
- Radius
- 密码文件
- 基于时间的认证(HOTP / TOTP)
PAM
一般的,只需要取消注释使auth = "pam"
生效即可
而auth = "pam[gid-min=1000]"
则身份验证限制为特定的一组用户。
Radius
因为没有这类需也没有进行尝试,当选择这样方式时理论上应该这样进行配置
auth = "radius[config=/etc/radiusclient/radiusclient.conf,groupconfig=true]"
密码文件
显然这种方式也是简而易用的。通过添加auth = "plain[passwd=./ocserv.passwd]"
使其生效。
密码文件可以通过ocpasswd
进行管理,使用ocserv --help
查看使用方法。
添加用户 添加一个名为kay的用户
|
|
而后输入密码即可。 此时查看文件
|
|
是这样的(用户:组:加密后的密码)
kay:*:$5$UNvJw6PfZdIITAZn$QFcenjsqKkwgFF9nsIUq5YdjwyIe/ly2JiHGA7PKv71
*代表没有进行分组
也可以加上用户组
|
|
锁定用户 在某个时候,需要收回用户的登录权限可以进行账户锁定
|
|
此时用户状态的密码前面会加上一个!
,用户无法进行认证登录了。
kay:lvmoo:!$5$TwNRYcJ1989e9Tjz$k1qPO0KrcFhblxAKEdeZ.DEdj0mXwt/Ze9OU4dL9WO2
解锁用户 用户得到了许可,又可以获得权限时,进行解锁:
|
|
删除用户 被告知用户永不再使用ocserv时,进行用户删除
|
|
这样记录文件会将用户所在行进行删除。
密码文件+二次认证
otp文件 使用上面的两种方式登录相对来说都是不安全的,一旦连接信息,账户密码泄露第三者也可以进行认证。
这里并不是指数据传输不安全或者ocserv是不安全的,因为泄露的账户密码对于任何系统都是不安全的。
但是加上基于时间的二次认证会让安全等级提升。
配置登录方式auth = "plain[passwd=./ocserv.passwd,otp=./ocserv.otp]"
ocserv.otp
必须采用https://code.google.com/p/mod-authn-otp/中所述的“UsersFile”格式。
生成方法
|
|
如果指定了OTP文件,则允许’passwd’文件中的密码字段为空。在这种情况下,仅会提示用户输入OTP。
再使用以下命令打印5个救急密码(其中后面的KEY替换为上面生成的密钥)。
oathtool –totp -w 5 621d83e3f5334bb10bc4f77f0c6cf458
生成二维码 一般的otp工具可以进行扫描添加或者手动输入秘钥添加,这里进行二维码生成后便于直接扫描添加 使用以下命令将KEY转换为base32(在0x后面一样记得替换自己的KEY):
|
|
MIOYHY7VGNF3CC6E657QY3HULA======
然后使用qrencode
创建一个二维码。
|
|
使用OTP标准的app扫描二维码即可。
更多双因素认证方式请查看官方文档 ocserv双因素身份验证