VPN: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
= | = VPN main objectives = | ||
* | * Connect remote hosts or networks "as if" they were in Grid'5000 network | ||
** No need for SSH gateway (ease life of Windows user, direct access to node Web server, ...) | |||
* | ** Interconnection with the outside world (servers, networks, ...) | ||
* | * Encrypt communication forwarded on public networks | ||
** | |||
= Configuration = | |||
== | == Summary == | ||
* Software used: OpenVPN | |||
* Layer 2 VPN | |||
** Ethernet frame encapsulation (L2) | |||
** Encapsulation within UDP packet: Most efficient | |||
** Fallback encapsulation within TCP packet: Most robust to cross firewall | |||
* Dedicated VLAN for VPN (600) | |||
** Implemented in south DMZ | |||
** VPN IP network: 172.20.0.0/16 | |||
** Every site routers need an additional route | |||
ip route 172.20.0.0 255.255.0.0 192.168.4.254 name vpn_viasouth | |||
== Network Equipment == | |||
=== On equipment hosting VPN === | |||
! | |||
interface GigabitEthernet0/3/4 | |||
description DMZ (to srv2.sophia) | |||
switchport trunk allowed vlan 1,600,666,1002-1005 | |||
switchport mode trunk | |||
no ip address | |||
! | |||
interface GigabitEthernet0/3/5 | |||
description DMZ (to srv2.sophia) | |||
switchport trunk allowed vlan 1,600,666,1002-1005 | |||
switchport mode trunk | |||
no ip address | |||
shutdown | |||
! | |||
interface GigabitEthernet0/3/6 | |||
description DMZ (to srv2.sophia) | |||
switchport trunk allowed vlan 1,600,666,1002-1005 | |||
switchport mode trunk | |||
no ip address | |||
shutdown | |||
! | |||
interface Vlan600 | |||
description DMZ: gw-south-vpn | |||
ip address 172.20.255.254 255.255.0.0 | |||
! | |||
=== On other sites' routers === | |||
ip route 172.20.0.0 255.255.0.0 192.168.4.12 | |||
== | == Dom0 == | ||
{| | {{Managed by Puppet|classes=networkg5k|note=Current Dom0 is srv2.sophia}} | ||
= | == DomU == | ||
== | === OpenVPN configuration === | ||
{{Managed by Puppet|classes=openvpn,openvpng5k|note=}} | |||
{| | |||
Configuration file explained (/etc/openvpn/server_{udp,tcp}.conf on vpn.grid5000.fr) | |||
# Server mode, using SSL/TLS authentication | |||
mode server | |||
tls-server | |||
port 1194 | |||
proto udp | |||
# VPN clients traffic comes from server's tap0 interface | |||
dev tap0 | |||
# SSL credentials | |||
## As with clients, the server cert is signed by the CA | |||
ca /etc/openvpn/keys/ca.api.grid5000.fr.crt | |||
cert /etc/openvpn/keys/vpn.grid5000.fr.crt | |||
dh /etc/openvpn/keys/dh2048.pem | |||
key /etc/openvpn/keys/vpn.grid5000.fr.key | |||
## This last file is share by g5k users. It avoids DoS attacks from outsiders | |||
tls-auth /etc/openvpn/keys/ta.key | |||
# The VPN pool of IP addresses that are assigned to client | |||
ifconfig-pool 172.20.100.0 172.20.255.253 255.255.0.0 | |||
# Route and DNS configuration sent to client | |||
## The VPN gateway to reach other G5K networks (it's a gw-south interface) | |||
push route-gateway 172.20.255.254 | |||
## Client can reach these networks through the VPN | |||
push route 172.16.0.0 255.255.0.0 | |||
push route 10.0.0.0 255.0.0.0 | |||
## DNS configuration to resolv Grid'5000 hostnames | |||
push dhcp-option DNS 172.16.143.101 | |||
push dhcp-option DOMAIN grid5000.fr | |||
# Use a certificate revocation list, for closed accounts or lost certificate | |||
crl-verify /var/local/ca.api.grid5000.fr.crl.pem | |||
# Implement a soft persistence between username and VPN IP address | |||
ifconfig-pool-persist /var/local/openvpn_ipp.txt | |||
# Drop privilege of openvpn daemon | |||
user nobody | |||
group nogroup | |||
=== Network interfaces configuration === | === Network interfaces configuration === | ||
Line 96: | Line 118: | ||
{{Managed by Puppet|classes=openvpn,openvpng5k|note=}} | {{Managed by Puppet|classes=openvpn,openvpng5k|note=}} | ||
=== OpenVPN SSL Certificates management | === Security === | ||
{{Managed by Puppet|classes=sanityg5k|note=}} | |||
== OpenVPN SSL Certificates management for UMS == | |||
{{Managed by Puppet|classes=openvpng5k::sll|note=Deployed on ums.grid5000.fr}} | {{Managed by Puppet|classes=openvpng5k::sll|note=Deployed on ums.grid5000.fr}} | ||
== | = Whislist = | ||
* ensure persistent client IP addreess | |||
** by certificate / login: {{Inprogress}}, not well tested | |||
* provide DNS name to client | |||
** Example <login>.vpn.grid5000.fr | |||
* Implement fail2ban rule for OpenVPN | |||
= VPN User Documentation {{ Inprogress }} = | = VPN User Documentation {{ Inprogress }} = |
Revision as of 14:49, 5 December 2014
VPN main objectives
- Connect remote hosts or networks "as if" they were in Grid'5000 network
- No need for SSH gateway (ease life of Windows user, direct access to node Web server, ...)
- Interconnection with the outside world (servers, networks, ...)
- Encrypt communication forwarded on public networks
Configuration
Summary
- Software used: OpenVPN
- Layer 2 VPN
- Ethernet frame encapsulation (L2)
- Encapsulation within UDP packet: Most efficient
- Fallback encapsulation within TCP packet: Most robust to cross firewall
- Dedicated VLAN for VPN (600)
- Implemented in south DMZ
- VPN IP network: 172.20.0.0/16
- Every site routers need an additional route
ip route 172.20.0.0 255.255.0.0 192.168.4.254 name vpn_viasouth
Network Equipment
On equipment hosting VPN
! interface GigabitEthernet0/3/4 description DMZ (to srv2.sophia) switchport trunk allowed vlan 1,600,666,1002-1005 switchport mode trunk no ip address ! interface GigabitEthernet0/3/5 description DMZ (to srv2.sophia) switchport trunk allowed vlan 1,600,666,1002-1005 switchport mode trunk no ip address shutdown ! interface GigabitEthernet0/3/6 description DMZ (to srv2.sophia) switchport trunk allowed vlan 1,600,666,1002-1005 switchport mode trunk no ip address shutdown ! interface Vlan600 description DMZ: gw-south-vpn ip address 172.20.255.254 255.255.0.0 !
On other sites' routers
ip route 172.20.0.0 255.255.0.0 192.168.4.12
Dom0
DomU
OpenVPN configuration
Configuration file explained (/etc/openvpn/server_{udp,tcp}.conf on vpn.grid5000.fr)
# Server mode, using SSL/TLS authentication mode server tls-server port 1194 proto udp # VPN clients traffic comes from server's tap0 interface dev tap0 # SSL credentials ## As with clients, the server cert is signed by the CA ca /etc/openvpn/keys/ca.api.grid5000.fr.crt cert /etc/openvpn/keys/vpn.grid5000.fr.crt dh /etc/openvpn/keys/dh2048.pem key /etc/openvpn/keys/vpn.grid5000.fr.key ## This last file is share by g5k users. It avoids DoS attacks from outsiders tls-auth /etc/openvpn/keys/ta.key # The VPN pool of IP addresses that are assigned to client ifconfig-pool 172.20.100.0 172.20.255.253 255.255.0.0 # Route and DNS configuration sent to client ## The VPN gateway to reach other G5K networks (it's a gw-south interface) push route-gateway 172.20.255.254 ## Client can reach these networks through the VPN push route 172.16.0.0 255.255.0.0 push route 10.0.0.0 255.0.0.0 ## DNS configuration to resolv Grid'5000 hostnames push dhcp-option DNS 172.16.143.101 push dhcp-option DOMAIN grid5000.fr # Use a certificate revocation list, for closed accounts or lost certificate crl-verify /var/local/ca.api.grid5000.fr.crl.pem # Implement a soft persistence between username and VPN IP address ifconfig-pool-persist /var/local/openvpn_ipp.txt # Drop privilege of openvpn daemon user nobody group nogroup
Network interfaces configuration
Iptables configuration
OpenVPN configuration
Security
OpenVPN SSL Certificates management for UMS
Whislist
- ensure persistent client IP addreess
- provide DNS name to client
- Example <login>.vpn.grid5000.fr
- Implement fail2ban rule for OpenVPN
VPN User Documentation
Grid'5000 Virtual Private Network (VPN) allows to connect to Grid'5000 network from your personal computer, while preserving security by encrypting your communications.
When connected to Grid'5000 VPN, your computer will be "inside" the Grid'5000 network thus you won't require to perform several SSH hops to access Grid'5000 nodes and frontends.
Grid'5000 VPN is based on OpenVPN http://openvpn.net.
Getting started
To start using Grid'5000 VPN, you first need to get a certificate. . You will download a ZIP archive including certificates and configuration file needed for VPN connexion. You must extract the archive content onto your computer. Choose a secure place to store those files, as an attacker could use them to steal your identity in Grid'5000.
Launch a connection
The procedure to start a connection to Grid'5000 VPN depends on your Operating System :
- Windows
If you have not done it yet, download and install OpenVPN for Windows (default installation options should be fine).
Then, from the folder where you extracted the ZIP archive, execute "Grid'5000 VPN for Windows" as an administrator (on most Windows system, you need to right click on "Grid'5000 VPN for Windows" file and select "Run as administrator").
- Linux (using command line)
From the folder where you extracted the ZIP archive, you only have to execute this as root:
openvpn <username>_vpnclient.conf
Note that OpenVPN linux client does not support DNS VPN configuration natively (see ??). In most distributions, installing resolvconf package and uncommenting last lines of <username>_vpnclient.conf file should enable automatic DNS VPN configuration.
- Linux (using network-manager)
You can also connect to Grid'5000 as normal user using the "Network Manager" applet (you may require to install packages like "network-manager-openvpn-gnome").
Refer to Grid'5000 VPN parameters to know how to configure it.
- MAC OS
Testing your connection
When your VPN connexion is established, you will be able to connect directly to any Grid'5000 node or frontend. Try it with:
ssh <username>@frontend.lyon.grid5000.fr
Grid'5000 VPN parameters
- Gateway: vpn.grid5000.fr
- Gateway port: 1194 UDP or 443 TCP
- Device type: tap (Ethernet Bridging / Layer 2 VPN)
- Authentication type: Certificate (TLS)
- User certificate: <username>.crt
- CA certificate: cavpn.crt
- User private key: <username>.key
- Additional TLS authentication file: ta.key (no direction)
- Grid'5000 VPN routes: 172.20.0.0/20 and 10.0.0.0/8 (use Grid'5000 VPN for these networks only)
- Grid'5000 VPN DNS: 172.16.143.101
Here is an example configuration file :
client remote vpn.grid5000.fr 1194 udp remote vpn.grid5000.fr 443 tcp dev tap ca cavpn.crt cert sdelamare.crt key sdelamare.key tls-auth ta.key # On Linux systems, you can uncomment following lines to automatically use Grid'5000 DNS (openresolv package needed) #script-security 2 #up /etc/openvpn/update-resolv-conf #down /etc/openvpn/update-resolv-conf