Am 06.12.2020 um 14:51 schrieb Michael Kress:
Hi list,

Problem: OpenVPN Clients have to be reconfigured from time to
time because e.g.
- CA certificate changed

- client certificates/keys should get updated
Pusdhing that over the control channel only works in some environment.
- client destination address to server should be changed
That is normally handled by DNS.

For these and others eighter
a) a human must take action and execute commands, store files etc.
b) some external mechanism uses the existing data channel and triggers
     services outside of OpenVPN. This means, that on client side
     another process has to be started, which comes with complications
     like addressing, privileges and so on.

Could you imagine a mechanism in OpenVPN, where the control channel
could be used for generic messages between server and client? This
control channel would acts like a websocket, is encrypted and secure.

A huge advantage to b) would be, that no external service has to exist
on the client side and the addressing works via common name.
You talk here about a generic socket like mechansim but also want no external service. For openvpn itself implementing a socket like mechanism that isn't exposed to external programs doesn't make sense. For internal messages we can just use the control channel itself. And for external programs you can just use a normal socket+DNS after the VPN is established. The performance of the control channel is also not very good compared to modern TCP variants as it never needed to transfer more than a few kilobytes.

Looking at check_incoming_control_channel_dowork() makes me think, if
there could exist another PUSH_command that could be very generic and
address code in a loaded plugin? Such a plugin could rewrite the local
configuration file of the client.

For limited communiction we already have --echo and push-peer-info with UV_* variables.

On server side one could fire up the management interface and initiate
this PUSH command - similar to "kill cn", that causes the server to
tell the client that it should disconnect.

There is an architectural implication though: Secrets (like
certificates) are transfered over the same transportation channel. Is
this a huge DON'T in the art of crypto?
You are assuming a simple setup where openvpn doesn't drop privileges after reading the certifcates and private keys. And that there are even files. Setups can also have the key/files on smartcards or other external storage like Android/Ios keystore. And that config files can even managed by OpenVPN is also a big uncertainity.

This won't be a 100% solution for everybody, e.g.
- there is no config file, OpenVPN gets started via network manager
- write privileges for config or key material is not granted
- plugin is not there because the user installed a standard OpenVPN
   packet

This could help admins, that have to maintain a bigger VPN installation.

To be honest I don't see the target audience like you do. Big central adminstrated setup will use their existing management software for managing client configuration and small admin will want to avoid to setup a mechanism like this. Also you are assuming a trust model ("client has ulimited trust of server") that is generally not there.

Also since we have script setup etc and openpvn is often run with evelated privileges, a config file can be used to gain these evalated privilges. So this mechanism will be a potential security problem.

And finally adding file management/config management feels like adding functionality to OpenVPN that is really outside its scope. I also not aware of any other TLS or certificate based protocol that offers anything like this.

Arne



_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to