tun
(para túneles a nivel de IP) y tap
(para túneles a nivel Ethernet). En la práctica, usualmente utilizará interfaces tun
excepto cuando los clientes VPN deban intengrarse a la red local del servidor a través de un puente Ethernet.
pki/ca.crt
) será almacenada en todas las máquinas (tanto el servidor como los clientes) como /etc/ssl/certs/Falcot_CA.crt
. Solo instalará el certificado del servidor en el servidor (pki/issued/vpn.falcot.com.crt
en /etc/ssl/certs/vpn.falcot.com.crt
y pki/private/vpn.falcot.com.key
en /etc/ssl/private/vpn.falcot.com.key
con permisos restringidos para que sólo el administrador pueda leerlo), con los parámetros Diffie-Hellman correspondientes (pki/dh.pem
) instalados en /etc/openvpn/dh.pem
. Instale los certificados de clientes en el cliente de VPN correspondiente de forma similar.
/etc/openvpn/*.conf
. Configurar un servidor VPN entonces es cuestión de almacenar el archivo de configuración correspondiente en este directorio. Un buen punto de partida es /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
que lleva a un servidor bastante estándar. Por supuesto necesitará adaptar algunos parámetros: ca
, cert
, key
y dh
describirán las ubicaciones seleccionadas para cada uno (respectivamente: /etc/ssl/certs/Falcot_CA.crt
, /etc/ssl/vpn.falcot.com.crt
, /etc/ssl/private/vpn.falcot.com.key
y /etc/openvpn/dh.pem
). La directiva server 10.8.0.0 255.255.255.0
define la subred utilizada por la VPN; el servidor utilizará la primera dirección IP en el rango (10.8.0.1
) y se asignarán a los clientes el resto de las direcciones.
tun0
. Sin embargo, normalmente se configuran los firewalls al mismo tiempo que las interfaces de red reales, lo que ocurre antes que inicie OpenVPN. La creación de una interfaz de red virtual persistente, y configurar OpenVPN para que la utilice, es una buena práctica recomendada. Esto además permite elegir el nombre de esta interfaz. A tal efecto, openvpn -mktun -dev vpn -dev-type tun
crea una interfaz de red virtual llamada vpn
de tipo tun
; puede integrar fácilmente esta orden en el script de configuración del firewall o en la directiva up
del archivo /etc/network/interfaces
, o se puede añadir para ese propósito una regla de udev. Debe actualizar también el archivo de configuración de OpenVPN de forma acorde, con las directivas dev vpn
y dev-type tun
.
10.8.0.1
. Para permitir a los clientes que accedan la red local (192.168.0.0/24) necesitará agregar una directiva push route 192.168.0.0 255.255.255.0
a la configuración de OpenVPN para que los clientes VPN automáticamente obtengan una ruta de red que les indique que esta red está disponible a través de la VPN. Lo que es más, los equipos en la red local también necesitarán ser informados que la ruta a la VPN es a través del servidor de VPN (esto funciona automáticamente cuando instala el servidor VPN en la puerta de enlace). Otra alternativa es configurar el servidor VPN para realizar enmascaramiento de IPs de forma que las conexiones que provengan de los clientes VPN parezcan provenir del servidor VPN en su lugar (revise la Sección 10.1, “Puerta de enlace”).
/etc/openvpn/
. Puede conseguir una configuración estándar utilizando /usr/share/doc/openvpn/examples/sample-config-files/client.conf
como punto de partida. La directiva remote vpn.falcot.com 1194
describe la dirección y puerto del servidor OpenVPN; también necesita adaptar ca
, cert
y key
para describir la ubicación de los archivos de llave.
AUTOSTART
como none
en el archivo /etc/default/openvpn
. Siempre es posible iniciar o detener una conexión VPN dada con los comandossystemctl start openvpn@nombre
y systemctl stop openvpn@nombre
(donde la conexión nombre coincide con aquella definida en /etc/openvpn/nombre.conf
).
tun*
) en ambos extremos de una conexión SSH y puede configurar estas interfaces virtuales exactamente como si fueran interfaces físicas. Primero debe activar el sistema de túneles configurando PermitTunnel
como «yes» en el archivo de configuración del servidor SSH (/etc/ssh/sshd_config
). Cuando se establece la conexión SSH debe solicitar explícitamente la creación del túnel con la opción -w any:any
(puede reemplaza any
con el número de dispositivo tun
deseado). Esto necesita que el usuario tenga permisos de administrador en ambos extremos para poder crear el dispositivo de red (en otras palabras, debe establecer la conexión como root).
/etc/ipsec.conf
del anfitrión contiene los parámetros para túneles IPsec (o Security Associations, asociaciones de seguridad, en la terminología de IPsec) de los que se ocupa el anfitrión. Hay muchos ejemplos de configuración en /usr/share/doc/libreswan/
, pero la documentación en línea de Libreswan tiene más ejemplos con explicaciones:
systemctl
; por ejemplo, systemctl start ipsec
iniciará el servicio IPsec.
/etc/ppp/options.pptp
, /etc/ppp/peers/falcot
, /etc/ppp/ip-up.d/falcot
y /etc/ppp/ip-down.d/falcot
.
Ejemplo 10.2. El archivo /etc/ppp/options.pptp
# opciones PPP utilizadas en una conexión PPTP lock noauth nobsdcomp nodeflate
Ejemplo 10.3. El archivo /etc/ppp/peers/falcot
# vpn.falcot.com es el servidor PPTP pty "pptp vpn.falcot.com --nolaunchpppd" # el usuario «vpn» identificará a la conexión user vpn remotename pptp # necesita cifrado require-mppe-128 file /etc/ppp/options.pptp ipparam falcot
pptpd
es el servidor PPTP para Linux. Necesitará cambiar pocas cosas de su archivo de configuración principal, /etc/pptpd.conf
: localip (dirección IP local) y remoteip (dirección IP remota). En el ejemplo a continuación el servidor PPTP siempre utiliza la dirección 192.168.0.199
y los clientes PPTP reciben una dirección IP desde 192.168.0.200
a 192.168.0.250
.
Ejemplo 10.6. El archivo /etc/pptpd.conf
[..] # TAG: localip # TAG: remoteip # Specifies the local and remote IP address ranges. # # These options are ignored if delegate option is set. # # Any addresses work as long as the local machine takes care of the # routing. But if you want to use MS-Windows networking, you should # use IP addresses out of the LAN address space and use the proxyarp # option in the pppd options file, or run bcrelay. # # You can specify single IP addresses seperated by commas or you can # specify ranges, or both. For example: # # 192.168.0.234,192.168.0.245-249,192.168.0.254 # # IMPORTANT RESTRICTIONS: # # 1. No spaces are permitted between commas or within addresses. # # 2. If you give more IP addresses than the value of connections, # it will start at the beginning of the list and go until it # gets connections IPs. Others will be ignored. # # 3. No shortcuts in ranges! ie. 234-8 does not mean 234 to 238, # you must type 234-238 if you mean this. # # 4. If you give a single localIP, that's ok - all local IPs will # be set to the given one. You MUST still give at least one remote # IP for each simultaneous client. # # (Recommended) #localip 192.168.0.1 #remoteip 192.168.0.234-238,192.168.0.245 # or #localip 192.168.0.234-238,192.168.0.245 #remoteip 192.168.1.234-238,192.168.1.245 localip 192.168.0.199 remoteip 192.168.0.200-250
/etc/ppp/pptpd-options
. Los parámetros importantes son el nombre del servidor (pptp
), el nombre del dominio (falcot.com
y la dirección IP para los servidores DNS y WINS.
Ejemplo 10.7. El archivo /etc/ppp/pptpd-options
# Enable connection debugging facilities. # (see your syslog configuration for where pppd sends to) #debug # Name of the local system for authentication purposes # (must match the second field in /etc/ppp/chap-secrets entries) name pptpd # Optional: domain name to use for authentication ## change the domainname to your local domain domain falcot.com # Authentication ## these are reasonable defaults for WinXXXX clients ## for the security related settings auth refuse-pap refuse-chap refuse-mschap # Require the peer to authenticate itself using MS-CHAPv2 [Microsoft # Challenge Handshake Authentication Protocol, Version 2] authentication. require-mschap-v2 # Require MPPE 128-bit encryption # (note that MPPE requires the use of MSCHAP-V2 during authentication) require-mppe-128 # Network and Routing ## Fill in your addresses ms-dns 192.168.0.1 ms-wins 192.168.0.1 ## Fill in your netmask netmask 255.255.255.0 ## some defaults nodefaultroute proxyarp lock
vpn
(y su contraseña asociada) en el archivo /etc/ppp/chap-secrets
. A diferencia de otras instancias en las que un asterisco («*
») funcionaría, aquí debe proveer explícitamente el nombre del servidor. Lo que es más, los clientes PPTP Windows se identifican a sí mismo en la forma DOMINIO\\USUARIO
en lugar de sólo proveer un nombre de usuario. Esto explica porqué el archivo también menciona el usuario FALCOT\\vpn
. También es posible especificar una dirección IP individual para los usuarios; un asterisco en este campo especifica que debe utilizar direcciones dinámicas.