OpenVPN: Difference between revisions
No edit summary |
No edit summary |
||
Line 61: | Line 61: | ||
{{Portal|Cryptography|Crypto_key.svg}} |
{{Portal|Cryptography|Crypto_key.svg}} |
||
* [[UDP hole punching]], a technique for establishing UDP "connections" between firewalled/NATed network nodes |
* [[UDP hole punching]], a technique for establishing UDP "connections" between firewalled/NATed network nodes |
||
* [[AlwaysVPN]], a free, hosted vpn that utilizes open vpn software. |
* [[AlwaysVPN]], a free, hosted vpn that utilizes open vpn software.[http://alwaysvpn.com/index.html] |
||
== External links == |
== External links == |
||
* [http://openvpn.net/ OpenVPN project homepage] |
* [http://openvpn.net/ OpenVPN project homepage] |
||
* [http://www.archive.org/details/HantsLUG_openvpn openvpn presentation and demonstration video] |
* [http://www.archive.org/details/HantsLUG_openvpn openvpn presentation and demonstration video] |
||
* [http://alwaysvpn.com/index.html/ Always VPN homepage] |
|||
{{VPN}} |
{{VPN}} |
Revision as of 15:54, 20 November 2008
Original author(s) | James Yonan |
---|---|
Developer(s) | OpenVPN Technologies, Inc. |
Stable release | |
Preview release | 2.1_rc15
/ November 19, 2008 |
Repository | |
Platform | Cross-platform |
Type | VPN |
License | GNU GPL |
Website | http://openvpn.net/ |
OpenVPN is a free and open source virtual private network (VPN) program for creating point-to-point or server-to-multiclient encrypted tunnels between host computers. It is capable of establishing direct links between computers that are behind NAT firewalls without requiring reconfiguration. It was written by James Yonan and is published under the GNU General Public License (GPL).
Introduction
OpenVPN allows peers to authenticate to each other using a pre-shared secret key, certificates, or username/password. When used in multiclient-server configuration allows server to release authentication certificate for every client, using signature and Certificate authority. It uses the OpenSSL encryption library extensively, as well as the SSLv3/TLSv1 protocol. It is available on Solaris, Linux, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Windows 2000/XP/Vista. It contains many security and control features. It is not a "web-based" VPN, and is not compatible with IPsec or any other VPN package. The entire package consists of one binary for both client and server connections, an optional configuration file, and one or more key files depending on the authentication method used. It is sometimes used by computer gamers as a way of accessing LAN games over the internet.
Encryption
OpenVPN uses the OpenSSL library to provide encryption of both the data and control channels. It lets OpenSSL do all the encryption and authentication work, allowing OpenVPN to use all the ciphers available in the OpenSSL package. It can also use the HMAC packet authentication feature to add an additional layer of security to the connection (referred to as an "HMAC Firewall" by the creator). It can also use hardware acceleration to get better encryption performance.
Authentication
OpenVPN has several ways to authenticate peers to one another. OpenVPN offers pre-shared secret key, certificate-based, and username/password-based authentication. Preshared secret key is the easiest, with certificate based being the most robust and feature-rich. The username/password is a new feature (version 2.0) that can be used with or without a client certificate (the server still needs a certificate). The source tarball includes a sample Perl script to verify the username/password with PAM and a C auth-pam plugin.
Networking
OpenVPN can run over UDP (preferred, and default) or TCP. It multiplexes all communications over a single TCP/UDP port. It has the ability to work through most proxy servers (including HTTP) and is good at working through NAT and getting out through firewalls. The server configuration has the ability to "push" certain network configuration options to the clients. These include IP addresses, routing commands, and a few connection options. OpenVPN offers two types of interfaces for networking via the Universal TUN/TAP driver. It can create either a layer-3 based IP tunnel (TUN), or a layer-2 based Ethernet TAP that can carry any type of Ethernet traffic. OpenVPN can optionally use the LZO compression library to compress the data stream. Port 1194 is the official IANA assigned port number for OpenVPN. Newer versions of the program now default to that port. A feature in the 2.0 version allows for one process to manage several simultaneous tunnels, as opposed to the original "one tunnel per process" restriction on the 1.x series.
OpenVPN's use of common network protocols (TCP and UDP) makes it a desirable alternative to IPsec in situations where an ISP may block specific VPN protocols in order to force users to subscribe to a higher-priced, "business grade," service tier.
Security
OpenVPN offers several internal security features. It runs in userspace, instead of requiring IP stack (and therefore kernel) operation. OpenVPN has the ability to drop root privileges, use mlockall to prevent swapping sensitive data to disk, and enter a chroot jail after initialization.
OpenVPN offers support of smart cards via PKCS#11 based cryptographic tokens.
GUI Clients
GNU/Linux
Compare to
- OpenSSH, which also implements a level-2/3 "tun"-based VPN
- stunnel encrypt any TCP connection (single port service) over SSL
- Socialvpn, a p2p virtual network program
See also
- UDP hole punching, a technique for establishing UDP "connections" between firewalled/NATed network nodes
- AlwaysVPN, a free, hosted vpn that utilizes open vpn software.[1]