If anyone's got any good suggestions on how to do VPNs with 2FA
on an OpenBSD gateway for non-technical users to access (iOS, Android,
Windows clients) I'd love to hear them.

I could bodge something together with openvpn and TOTP but it doesn't
exactly spark joy.

Ideally the VPN server would be using a strong form of public-key cryptography 
(e.g., X25519) over other forms (e.g., password). Fortunately this is forced 
upon you by WireGuard. This means using TOTP would not count as 2FA since it's 
the same kind of factor (i.e., something you have), albeit weaker due to the 
shared nature of the TOTP key. Additionally most OSes force users to log in via 
password or biometrics (e.g., fingerprint); so using WireGuard as a VPN server 
provides an indirect form of 2FA—since to connect you must have the private key 
(first factor), but to get access to the key on the device you need to log into 
it via password or biometrics (second factor).

I am sure this is all information you already know though, so I suppose I would 
go with Janne Johanssons's approach of setting up something that requires one 
to input a password upon successfully connecting to WireGuard before allowing 
traffic to continue through the network. It is more likely one can bypass 
password authentication, so it would be better that happens after connecting to 
WireGuard as opposed to before to avoid an attacker from knowing if they have 
the correct password.

Reply via email to