Openconnect密码认证

上篇Openconnect服务部署配置文件当中,使用了最为便捷的pam方式验证。

而Openconnect支持丰富的验证类型甚至进行计费:

支持以下方式的密码认证

  • PAM
  • Radius
  • 密码文件
  • 基于时间的认证(HOTP / TOTP) password.jpg

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的用户

1
/usr/local/bin/ocpasswd kay -c /etc/ocserv/ocserv.passwd

而后输入密码即可。 此时查看文件

1
cat /etc/ocserv/ocserv.passwd

是这样的(用户:组:加密后的密码)

kay:*:$5$UNvJw6PfZdIITAZn$QFcenjsqKkwgFF9nsIUq5YdjwyIe/ly2JiHGA7PKv71

*代表没有进行分组

也可以加上用户组

1
/usr/local/bin/ocpasswd -g lvmoo kay -c /etc/ocserv/ocserv.passwd 

锁定用户 在某个时候,需要收回用户的登录权限可以进行账户锁定

1
/usr/local/bin/ocpasswd -l kay -c /etc/ocserv/ocserv.passwd 

此时用户状态的密码前面会加上一个!,用户无法进行认证登录了。

kay:lvmoo:!$5$TwNRYcJ1989e9Tjz$k1qPO0KrcFhblxAKEdeZ.DEdj0mXwt/Ze9OU4dL9WO2

解锁用户 用户得到了许可,又可以获得权限时,进行解锁:

1
/usr/local/bin/ocpasswd -u kay -c /etc/ocserv/ocserv.passwd 

删除用户 被告知用户永不再使用ocserv时,进行用户删除

1
/usr/local/bin/ocpasswd -d kay -c /etc/ocserv/ocserv.passwd 

这样记录文件会将用户所在行进行删除。

密码文件+二次认证

otp文件 使用上面的两种方式登录相对来说都是不安全的,一旦连接信息,账户密码泄露第三者也可以进行认证。

这里并不是指数据传输不安全或者ocserv是不安全的,因为泄露的账户密码对于任何系统都是不安全的。

但是加上基于时间的二次认证会让安全等级提升。

配置登录方式auth = "plain[passwd=./ocserv.passwd,otp=./ocserv.otp]"

ocserv.otp必须采用https://code.google.com/p/mod-authn-otp/中所述的“UsersFile”格式。

生成方法

1
echo "HOTP/T30 kay - $(head -c 16 /dev/urandom |xxd -c 256 -ps)" >>/etc/ocserv/ocserv.otp

如果指定了OTP文件,则允许’passwd’文件中的密码字段为空。在这种情况下,仅会提示用户输入OTP。

再使用以下命令打印5个救急密码(其中后面的KEY替换为上面生成的密钥)。

oathtool –totp -w 5 621d83e3f5334bb10bc4f77f0c6cf458

生成二维码 一般的otp工具可以进行扫描添加或者手动输入秘钥添加,这里进行二维码生成后便于直接扫描添加 使用以下命令将KEY转换为base32(在0x后面一样记得替换自己的KEY):

1
echo 0x621d83e3f5334bb10bc4f77f0c6cf458 | xxd -r -c 256 | base32

MIOYHY7VGNF3CC6E657QY3HULA======

然后使用qrencode创建一个二维码。

1
2
sudo apt-get install qrencode -y
echo "otpauth://totp/kay@example.com?secret=MIOYHY7VGNF3CC6E657QY3HULA&issuer=OpenConnect" | qrencode -o - -t UTF8

使用OTP标准的app扫描二维码即可。

更多双因素认证方式请查看官方文档 ocserv双因素身份验证

点击刷新🚌