configuracion vpn
TRANSCRIPT
Una red privada virtual, VPN es una tecnología de red que permite una extensión
segura de la red local (LAN) sobre una red pública o no controlada como Internet.
Permite que la computadora en la red envíe y reciba datos sobre redes compartidas o
públicas como si fuera una red privada con toda la funcionalidad, seguridad y
políticas de gestión de una red privada. Esto se realiza estableciendo una conexión
virtual punto a punto mediante el uso de conexiones dedicadas, cifrado o la
combinación de ambos métodos.
VPN
OpenVPN
Es una implementación de VPN SSL la cual usa las extensiones OSI layer 2 ó 3,
soporta diferentes medios de autenticación como certificados,
usuarios/contraseñas, y permite políticas de control de acceso para usuarios o
grupos usando reglas de firewall aplicadas a las interfaces virtuales de la VPN.
TIPOS DE CONFIGURACIÓN UTILIZANDO OPENVPN
1. Host a Host (Sitio a sitio)
Es el método más simple, nos permite encriptar la comunicación entre dos PC las
cuales deberán solamente tener conexión; es decir: ambas PC deben poderse
enviar paquetes directamente ya sea porque estén conectadas en la misma red
local, o porque ambas estén conectadas a la internet y sean alcanzables entre sí.
TIPOS DE CONFIGURACIÓN UTILIZANDO OPENVPN
2. Road Warrior (Sitio-Multisitio)
Es una de las formas más utilizadas. Es el permitir que una máquina de alguien
que esté fuera de nuestra red (de forma temporal o permanente) pueda
comunicarse con el servidor OpenVPN de nuestra red y una vez autenticado
pueda entrar a ver y acceder los recursos de nuestra red local. En verdad es un
caso especial de la conexión Red a Red.
TIPOS DE CONFIGURACIÓN UTILIZANDO OPENVPN
3. Red a Red
Uno de los métodos más usados. Mediante ésta forma dos redes separadas en el
espacio pueden comunicarse como si estuvieran unidas por un cable virtual, la
comunicación entre ambas redes viajará encriptada una vez salgan de los
servidores de openvpn y hasta que lleguen a su otro extremo.
PASO 1: Instalación del OpenVPN
Instalar Openvpn en nuestro Linux CentOS es realmente fácil. Previamente a
la instalación de Openvpn se debe tener instalado el Repositorio Epel.
#wgethttp://download.fedoraproject.org/pub/epel/6/i386/epelrelease68.n
oarch.rm
# rpm -ivh epel-release-6-8.noarch.rpm
Luego para la instalación de Openvpn emitimos el comando :
#yum install openvpn
PASO 2: Configuración del Servidor
Previamente se debe realizar las siguientes configuraciones de no serlo a si la vpn no hará ping hacia las redes internas.
En el servidor de openvpn se debe activar el ip_forwarding:
#vi /etc/sysctl.conf
Cambiar ip_forwarding a 1 (está normalmente en 0).
# net.ipv4.ip_forward = 0
Ejcutamos el comando
#sysctl –p
La versión de Openvpn 2.3 para CentOS 6, no incluye el paquete easy-rsa que esun conjunto de herramientas que me permitirán generar los certificados, por locual se debe instalar.
# yum install easy-rsa Contamos con una serie de scripts en el directorio /usr/share/easy-rsa/2.0/ los
cuales nos ayudarán mucho a ejecutar ésta tarea inicial.
Primero cambiamos al directorio.
# cd /usr/share/easy-rsa/2.0
Creando el CA
Una vez dentro de éste directorio procedemos a ejecutar los siguientes pasos:
#. Vars
#sh clean-all
# sh build-ca
Con ellos lo que haremos es:
Inicializar variables de ambiente para poder trabajar con los scripts de shellpara generar las variables
Inicializamos el directorio de las claves (borrando potenciales archivos viejos)
build-ca: procedemos a generar el certificado CA
En éste último paso se nos pedirá una serie de información sobre nuestra
red/empresa que debemos llenar lo más fielmente posible:
Se pone un nombre pero
debe estar seguido de ca
Ejemplo
openvpn ca
Generación del certificado y de la clave de encriptación para el servidor Siguiente ala generación del Certificado de autoridad, procedemos a crear el certificado delservidor y de su clave de encriptación:
#sh build-key-server server
No repetir el nombre del
certificado anterior
Generación de certificados y claves privadas para los clientes
Cada cliente debe tener su propio certificado y clave de seguridad, para cada clienteque tengamos deberemos repetir el siguiente paso.
#sh build-key client1
Debemos notar que al ejecutar el programa sh build-key, le pasamos comoparámetro el nombre del cliente (client1 en el ejemplo anterior) el cual debe serdiferente para cada cliente. En el common name ponemos el nombre del cliente(client1 en éste ejemplo) tal y como le pasamos de parámetro.
Se puede crear el número de claves que sean necesarias de acuerdo al número declientes:
#sh build-key client2#sh build-key client3
Generando parámetros de Diffie-Hellman
El parámetro de Diffie-Hellman debemos generarlo de la siguiente manera:
#sh build-dh
[root@servidor 2.0]# sh build-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
..............+........................+..............................................................................+.............
............+.........................................................................................................................
...............................................+......................................................................................
.......................................................................................................................................
.................+.......................................................+.............................................
Archivos a copiar al servidor
Con los comandos ejecutados anteriormente se generan los siguientes archivos que
deberán se copiados al servidor hacia el directorio /etc/openvpn del servidor .
ca.crt
ca.key
server.key
server.crt
dh2048.pem
Estos archivos están presentes en: /usr/share/easy-rsa/2.0/keys/
# cd /usr/share/easy-rsa/2.0/keys/# cp -a ca.crt ca.key server.key server.crt dh2048.pem /etc/openvpn
NOTA: Fijarse en el número que se genera en los certificados para la trasferencia
del archivo dh2048.pem ya que puede variar.
[root@servidor 2.0]# sh build-dhGenerating DH parameters, 2048 bit long safe prime, generator 2This is going to take a long time
Archivos a copiar al cliente
Hacia el directorio /etc/openvpn de cada cliente copiamos los siguientes archivos:
ca.crt clientX.crt clientX.key
Tenga en cuenta que X es un número que se corresponde con el cliente (para el cliente1 sería: client1.crt y client1.key por ejemplo).
# cd /usr/share/easy-rsa/2.0/keys/# scp ca.crt client1.crt client1.key [email protected]:/etc/openvpn
Ejecutamos el siguiete commando.
# vi /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
#Direcciones que se asignaran a los
#clientes, el server es .1
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
#Aquí debe especificarse la LAN detrás de tu servidor
#En este ejemplo supongo que TU LAN es 192.168.1.0/24
#Cambiala a la verdadera LAN de tu servidor
push "route 192.168.89.0 255.255.255.192"
push "redirect-gateway def1 bypass-dhcp"
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 4
PASO 3 Configuración del cliente
En el caso del cliente, así quedaría el archivo de configuración:
#vi /etc/openvpn/client1.conf
clientdev tunproto udp#Aqui debo especificar la IP de la WAN de tu servidor OpenVPNremote 192.168.89.128 1194resolv-retry infinitenobind#Las dos siguientes opciones no van en windowsuser nobodygroup nobodypersist-keypersist-tunca ca.crtcert client1.crtkey client1.keycomp-lzoverb 4
SE DEBE CAMBIAR DE ACUERDO AL
NUEMRO DE CLIENTES
PASO 4 Iniciar openVPN
Iniciamos con los siguientes comandos
#service openvpn start
#chkconfig --level 2345 openvpn on
PASO 5 Comprobación del funcionamiento
Una vez iniciado en ambos lados podemos comprobar la creación del túnel con elcomando ifconfig
Servidor
eth0 Link encap:Ethernet HWaddr 08:00:27:46:36:62
inet addr:192.168.89.128 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe46:3662/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:604 errors:0 dropped:0 overruns:0 frame:0
TX packets:100 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:44166 (43.1 KiB) TX bytes:14434 (14.0 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-
00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Clienteeth0 Link encap:Ethernet HWaddr 08:00:27:BE:25:49
inet addr:192.168.89.129 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:febe:2549/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:537 errors:0 dropped:0 overruns:0 frame:0
TX packets:387 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:52177 (50.9 KiB) TX bytes:50170 (48.9 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-
00-00-00-00
inet addr:10.8.0.6 P-t-P:10.8.0.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Para comprobar podemos hacer ping hacia el tun
Desde el cliente
ping 10.8.0.1
Desde el servidor
ping 10.8.0.6
En caso de que falle la configuración se podría desactivar los firewall
service iptables stop
chkconfig iptables off
chkconfig ip6tables off
service ip6tables stop
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERAD
service iptables save
service iptables restart