Debian GNU/Linux の OpenVPN (server) を 2.4.0-6+deb9u2 から 2.4.4-2~bpo9+1 に version up したらユーザー認証ができなくなった./etc/default/openvpn
は以下のとおり(抜粋).
AUTOSTART="vpn_server"
/etc/openvpn/vpn_server.conv
で以前は以下で password 認証(というかLDAP)ができていた.
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
client-cert-not-required
まずclient-cert-not-required
については以下のように怒られるので,verify-client-cert optional
ぐらいに変更.See https://community.openvpn.net/openvpn/wiki/DeprecatedOptions#a--client-cert-not-required . client-cert-not-required
は OpenVPN 2.5 で削除される様子.
DEPRECATED OPTION: --client-cert-not-required, use --verify-client-cert instead
/usr/lib/openvpn/openvpn-plugin-auth-pam.so
はまず path が /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so
に変更になっている.パスの変更については,full path を書かなければ良いらしく以下で対応.
plugin openvpn-plugin-auth-pam.so openvpn
ただし,これだと,以下のようなエラーで認証できない(client の IP Address が 127.0.0.1 なのは SSH でポートフォワードしているから).
myserver openvpn[XXXXX]: AUTH-PAM: BACKGROUND: user 'myn' failed to authenticate: System error
myserver ovpn-vpn_server[XXXXX]: 127.0.0.1:XXXXX PLUGIN_CALL: POST /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so/PLUGIN_AUTH_USER_PASS_VERIFY status=1
myserver ovpn-vpn_server[XXXXX]: 127.0.0.1:XXXXX PLUGIN_CALL: plugin function PLUGIN_AUTH_USER_PASS_VERIFY failed with status 1: /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so
調べてみたところ,/lib/systemd/system/openvpn@.service
の CapabilityBoundingSet
に CAP_AUDIT_WRITE
を追加する必要があるらしい.
参考:
- https://dustri.org/b/solving-openvpn-authentication-failure-on-debian-buster.html
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=868806