Inspired by Gert Doering (but don't blame him for any of my bad ideas
: ), I'm considering adding a feature to Tunnelblick (a FOSS GUI for
OpenVPN on OS X) that would allow a standard user on a Mac to install
"safe" OpenVPN client configurations without requiring administrator
credentials. This would simplify administration of small VPN networks:
an user could download a new configuration and install it without
being an administrator of his/her computer. My question is: what would
a "safe" configuration file look like?

Background: Tunnelblick launches OpenVPN as root and it usually stays
running as root. To make sure that a standard user cannot use OpenVPN
to obtain root access, Tunnelblick requires an administrator to
authorize the "installation" of configurations. That installation
involves creating a protected (writable only by root) copy of the
configuration file and other files it references. At that point, the
user cannot modify the configuration, so they can't get root access
by, for example, adding or changing an --up script.

The idea is to allow installation of a configuration file as long as
it doesn't contain certain options that could give the user access
they should not have. Here is my initial list:

     --up
     --tls-verify
    --ipchange
    --client-connect
    --client-disconnect
    --route-up
    --route-pre-down
    --client-disconnect
    --down
    --learn-address
    --auth-user-pass-verify
    --config
    --write-pid
    --status
    --log
    --log-append
    --tmp-dir

(I created the above list from the 2.3 man page; I'll have to
double-check it with the git-master code that processes options for
the final list.)

Typical client configuration files do not contain any of those
options. (Tunnelblick includes some scripts that are "safe" and are
executed at the user's option. These --up and --down scripts do such
things as process DNS changes and make it unnecessary to have --up and
--down scripts in the client configuration file.)

I briefly considered using a "white list" of allowed options, and I
may return to that, but there are so many options that would be a lot
more typing : ) Using a blacklist is trickier, though, because I'd
have to keep up with new options and add them to the blacklist as
needed and failing to do so would result in a security vulnerability.

I'm not sure if I should also prohibit networking options such as:
    --ifconfig*
    --route
    --iroute
but am inclined to consider them "unsafe", too. They are usually
"pushed" to the client, so that shouldn't affect many users.

Tunnelblick already enforces restrictions on the use of options such
as --key and --ca to ensure that they do not access anything the user
shouldn't; that would of course be done for these "safe"
configurations, too.

Thoughts?

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

Reply via email to