Changes between Initial Version and Version 1 of PrivilegeSeparation


Ignore:
Timestamp:
03/12/12 09:43:10 (12 years ago)
Author:
Samuli Seppänen
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PrivilegeSeparation

    v1 v1  
     1= Introduction =
     2
     3Much of this text is adapted from Alon Bar-Lev's [http://thread.gmane.org/gmane.network.openvpn.devel/5755 emails] to the openvpn-devel list, with many useful additions from James Yonan and other people.
     4
     5= Use-cases =
     6
     7== Standalone workstations ==
     8
     9Standalone workstations and their VPN clients are controlled by the end-user.
     10
     11== Enterprise workstations ==
     12
     13Enterprise workstations and their VPN clients are controlled by the enterprise system administrator(s). The goal is to lock down client workstations as much as possible, so that a compromised client does not allow access to the enterprise network; this access could otherwise be exploited by malware or a remote, active human attacker.
     14
     15For the VPN client this translates to a few important requirements
     16
     17 * Non-privileges users can't read, copy or modify the VPN configuration
     18 * Workstations can't have simultaneous access to an untrusted network (e.g. the public Internet) and the VPN network. If they did, malware could spread from the untrusted network to the enterprise network
     19
     20
     21= Privilege separation in different contexts =
     22
     23OpenVPN consists of several different, interacting components:
     24
     25 * ''TUN/TAP device:'' a virtual Ethernet interface
     26 * ''OpenVPN:'' a tunneling daemon
     27 * ''OpenVPN configuration files''
     28 * ''Network utilities:'' ifconfig, route, etc.
     29 * ''OpenVPN GUI'': used by the interactive user to control OpenVPN
     30
     31Each component can be isolated to run as an ''operating system user'' with varying levels of privileges. Here we use the following split:
     32
     33 * ''Interactive user:'' a real human user with minimal privileges, should only run end-user applications (such as OpenVPN-GUI)
     34 * ''OpenVPN user:'' the user OpenVPN is running as (e.g. "nobody" on many Linuxes)
     35 * ''Privileged user:'' the user doing privileged operations (e.g. adding routes or bringing up the TUN/TAP interface)
     36
     37Depending on the use-case, different levels of privileges are needed to satisfy all the requirements:
     38
     39||'''Component'''||'''Standalone'''||'''Enterprise'''||
     40||TUN/TAP||Access by the interactive user||Accessed by the OpenVPN user||
     41||OpenVPN||Run by the interactive user||Run by the OpenVPN user||
     42||OpenVPN configuration||Read/write by the interactive user||Read by OpenVPN, read/write by administrator||
     43||Network utilities||Run by a privileged user||Run by a privileged user||
     44||OpenVPN GUI||Run by the interactive user||Run by the interactive user||
     45
     46= External links =
     47
     48 * [http://thread.gmane.org/gmane.network.openvpn.devel/5755 OpenVPN privilege separation (Windows)] (mailing list thread)