Está en la página 1de 11

Gua Instalacin y Configuracin de OpenVPN Administracin de Plataformas y Seguridad Anabel Muoz Juan Camilo Narvez Marcofi Andretti Torres

Objetivos: Utilizar OpenVPN en un ambiente corporativo Site to Site, con el fin de interconectar dos redes privadas a travs de una red pblica.

Requerimientos: Mquina virtual Fedora Core 9 x2 Mquina virtual WinXp x2 2 Mquinas reales.

Pasos Previos: La mquina virtual de Linux debe tener dos tarjetas de red antes de arrancar, una en modo bridge y otra en modo host only. Las maquinas de WinXP deben tener solo una interfaz en modo host only. El Kernel de los equipos Linux deben tener activado el ip forward, para poder permitir el envo de paquetes desde las maquinas con Windows XP hacia la red privada.

Montaje a realizar:

Cliente

Servidor

Equipo 1

Equipo 2

Ilustracin 1 Montaje.

A continuacin se va a suponer que la interfaz eth1 es la interfaz que esta en modo host only y que la eth2 es la que esta en modo bridge. Tambin se asume que la gua se realizar en el laboratorio, en caso de no ser as, considere que las direcciones IP del DNS y de las subredes pueden variar. Servidor:
1. Configure las direcciones ip eth1 a. Dir IP: 192.168.1.1/24 2. Configure las direcciones ip eth2 a. Dir IP: 192.168.130.1X/24 b. DNS: 192.168.100.23 c. Default Gateway: 192.168.130.1 3. habilitar el ip forward

Cliente:
1. Configure las direcciones ip eth1 a. Dir IP: 10.0.3.1/24 2. Configure las direcciones ip eth2 a. Dir IP: 192.168.130.1Y/24 b. DNS: 192.168.100.23 c. Default Gateway: 192.168.130.1 3. habilitar el ip forward

Para habilitar ip forward se debe modificar la lnea net.ipv4.ip_forward=0 en el archivo /etc/sysctl.conf asignndole un valor igual 1. Podemos comprobar que el ip-forward est activo, cuando al ejecutar el siguiente comando sysctl net.ipv4.ip_forward sale con valor 1. Configuracin en los equipos Windows. Equipo 1.
1. Configure las direcciones ip eth1 a. Dir IP: 10.0.3.10/24 b. Default Gateway: 10.0.3.1/24

Equipo 2.
1. Configure las direcciones ip eth1 a. Dir IP: 192.168.1.10/24 b. Default Gateway: 192.168.1.1/24

Primero se configurar el servidor, para eso es necesario que inicie la mquina virtual de Fedora como usuario root con la contrasea Password1 (En caso de trabajar con una maquina del laboratorio). Lo primero que debe hacer es descomprimir el OpenVPN para su posterior compilacin e instalacin. mkdir vpn cd vpn wget http://openvpn.net/release/openvpn-2.1.1.tar.gz tar xvzf openvpn-2.1.1.tar.gz Como se va a realizar la instalacin manual es necesario descargar todas las dependencias antes de empezar. yum install lzo-devel Con este comando se descargaron los headers Lempel Ziv Oberhumer, que sirven para comprimir en tiempo real los paquetes que se van a transmitir. Ahora configuramos y compilamos OpenVPN cd openvpn-2.1.1 ./configure make make install Hasta aqu ya tiene instalado OpenVPN, ahora vamos a crear los certificados y claves necesarias para establecer una conexin segura sitio a sitio. Esta estructura es conocida como PKI (public key infrastructure). La PKI consiste en: Un certificado y llave aparte para el servidor y cada cliente. Una entidad Maestra emisora de certificados y una llave la cual es usada para firmar cada uno de los certificados en el cliente y en el servidor.

Para que OpenVPN funcione, ambos lados deben tener los certificados y adems deben estar firmados por la misma CA (Certifcate Authority) [1]. Este certificado permite combinar la firma digital con su llave pblica y algo particular que los identifique, por ejemplo el nombre de una persona en la vida real. Este certificado se utiliza para permitir que los usuarios puedan demostrar que son propietarios de las claves pblicas. Estos certificados resuelven el problema de suplantacin que se puede dar con el intercambio de llaves pblicas debido a que este permite verificar que se ha establecido la comunicacin con la persona adecuada y utilizando la llave pblica correcta [2]. A continuacin copiaremos los programas necesarios para crear estos certificados, en el directorio de OpenVPN cp -R easy-rsa/ /etc/openvpn/

Ahora se generar un (CA) Certificado/clave maestro, una clave/certificado para el servidor, y una clave/certificado para el cliente, usando los scripts que vienen con OpenVPN. cd /etc/openvpn/2.0/ source ./vars ./vars ./clean-all ./build-ca Editando el vars se pueden configurar varias opciones del CA, como por ejemplo El pas, la provincia, la ciudad, el correo, de la autoridad certificadora. En este caso estos valores se dejan por defecto. Con el comando clean-all lo que se hace es un rm ef a la carpeta /etc/openvpn/easyrsa/2.0/keys/ donde se encuentran todos los certificados/claves emitidos con anterioridad, esto se hace con el fin de generar unos nuevos. Finalmente con el comando build-ca se procede a construir el certificado de la entidad certificadora invocando un comando interactivo de openssl. En el comando ./build-ca se deben llenar una informacin del dn o distinguished name, que es el nombre de la entidad certificadora privada que estamos creando. La mayora de la informacin se puede dejar por defecto si se quiere (presionar la tecla ENTER). Est es la salida:
ai:easy-rsa # ./build-ca Generating a 1024 bit RSA private key ............++++++ ...........++++++ writing new private key to 'ca.key' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [KG]: State or Province Name (full name) [NA]: Locality Name (eg, city) [BISHKEK]: Organization Name (eg, company) [OpenVPN-TEST]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:OpenVPN-CA Email Address [me@myhost.mydomain]:

Ahora se generaran las claves y certificados para el servidor: ./build-key-server server

Como en el paso anterior, despus de este comando se pueden dejar por defecto los parmetros requeridos, menos el password y se debe escribir y cuando se pide crear el certificado y cuando se pide firmar el certificado, son los ltimos dos pasos. Esta es la salida:
[root@FC9X 2.0]# ./build-key-server server Generating a 1024 bit RSA private key ..................++++++ ...............................++++++ writing new private key to 'server.key' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [US]: State or Province Name (full name) [CA]: Locality Name (eg, city) [SanFrancisco]: Organization Name (eg, company) [Fort-Funston]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [server]: Name []: Email Address [me@myhost.mydomain]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:Password1 An optional company name []: Using configuration from /etc/openvpn/2.0/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'US' stateOrProvinceName :PRINTABLE:'CA' localityName :PRINTABLE:'SanFrancisco' organizationName :PRINTABLE:'Fort-Funston' commonName :PRINTABLE:'server' emailAddress :IA5STRING:'me@myhost.mydomain' Certificate is to be certified until Apr 24 16:11:09 2020 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated

Ahora haremos lo mismo para el cliente. ./build-key client1 Se debe tener mucho cuidado cuando se especifica el Common Name , ya que este se usa posteriormente para identificar la configuracin de enrutamiento de cada cliente, lo mejor es dejarlo por defecto en client1. Se debe obtener la siguiente salida
[root@FC9X 2.0]# ./build-key client1 Generating a 1024 bit RSA private key .............++++++ ..................................++++++ writing new private key to 'client1.key' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [US]: State or Province Name (full name) [CA]: Locality Name (eg, city) [SanFrancisco]: Organization Name (eg, company) [Fort-Funston]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [client1]: Name []: Email Address [me@myhost.mydomain]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:Password2 An optional company name []: Using configuration from /etc/openvpn/2.0/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'US' stateOrProvinceName :PRINTABLE:'CA' localityName :PRINTABLE:'SanFrancisco' organizationName :PRINTABLE:'Fort-Funston' commonName :PRINTABLE:'client1' emailAddress :IA5STRING:'me@myhost.mydomain' Certificate is to be certified until Apr 24 16:17:52 2020 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated

Con el anterior comando se construyo la llave que necesitara el cliente para ingresar.

A continuacin se generaran los parmetros de Diffie Hellman ./build-dh Obtendr la siguiente salida:
[root@FC9X 2.0]# ./build-dh Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time

El protocolo de acuerdo de claves Diffie Hellman, permite a dos usuarios intercambiar una clave secreta por un medio inseguro sin secretos previos. Despus de haber generado todas estas claves es necesario colocarlas en las respectivas mquinas (en la realizacin de la gua puede copiarlos usando una usb, enviarlos al correo electrnico, con winscp, etc.1), a continuacin se muestra una tabla sacada de la pgina oficial de OpenVPN [3]. Los archivos de las claves se encuentran en /etc/openvpn/2.0/keys/. Las claves deben estar en el mismo directorio de donde se crearan los archivos de configuracin de OpenVPN (/etc/openvpn/).

Filename ca.crt ca.key dh{n}.pem server.crt server.key client1.crt client1.key

Needed By server + all clients key signing machine only server only server only server only client1 only client1 only

Purpose Root CA certifcate Root CA key Diffie Hellman parameters Server Certificate Server Key Client1 Certificate Client1 Key

Secret NO YES NO NO YES NO YES

Tabla 1 Ubicacin de los Certificados y Claves.

La ilustracin 2 muestra la ubicacin de los archivos creados anteriormente.

Tener en cuenta el riesgo que puede implicar un medio de estos a nivel corporativo

Ilustracin 2 Ubicacin de los Certificados y Claves.

Gua de configuracin: En el Equipo Servidor En la carpeta de openvpn vamos crear un archivo de configuracin llamado server.conf cd /etc/openvpn vi server.conf
#Comienza archivo server.conf #especificamos el puerto por el cual queremos escuchar, por defecto es el 1194 port 1194 #especificamos el protocolo proto udp #con este comando se especifica que usaremos, openvpn en modo routing #podemos escoger dev tap para especificar bridge, pero este no es el caso dev tun #se especifica la ubicacin de los certificado de la entidad certificadora, el certificado del #servidor y la llave del servidor, como estos archivos estn en la misma ruta del archivo .conf #solo es necesario poner el nombre. ca ca.crt cert server.crt key server.key # Se especifica la ubicacin de los parmetros Diffie Hellman

dh dh1024.pem #se configura la red vpn, al servidor se le reserva la primer direccin de esta red server 10.8.0.0 255.255.255.0 #con este comando, si se asigno una direccin ip al cliente, esta se mantendr para la siguiente #sesin ifconfig-pool-persist ipp.txt #se manda un ping keepalive cada 10 segundos, si no se recibe un ping en 120 segundos #se asume que el tnel se cay. keepalive 10 120 #se habilita la compresin comp-lzo # Hasta ahora hemos configurado la VPN para que se interconecten el cliente y el servidor. #para que el cliente pueda ver otros equipos en la red del servidor, es necesario ensearle la # red a los clientes con el siguiente comando push route 192.168.1.0 255.255.255.0 #para que el servidor pueda ver los equipos de la red del cliente se debe hacer lo siguiente cliente-config-dir ccd #en el anterior directiva se especific la carpeta donde se encuentran los archivos de # Configuracin de la conexin de cada cliente. route 10.0.3.0 255.255.255.0 #con esto se le ensea la red del cliente al kernel. #fin del archivo

Ahora en la consola ejecutamos lo siguiente: mkdir /etc/openvpn/ccd/ echo iroute 10.0.3.0 255.255.255.0 > /etc/openvpn/ccd/client1 El anterior comando es una redundancia a la directiva route 10.0.3.0 255.255.255.0 pero es necesario porque route controla el enrutamiento desde el kernel al servidor OpenVPN y iroute controla el enrutamiento desde el servidor OpenVPN hacia los clientes remotos. Ahora verifique que las claves necesarias estn en la misma carpeta que el archivo de configuracin. Una vez creado el archivo corremos OpenVPN. openvpn server.conf

En el Equipo cliente Se debe instalar OpenVPN tal cual como se hizo anteriormente pero no es necesario crear de nuevo los certificados, solo se deben copiar en la carpeta /etc/openvpn/ tal cual como lo explica la tabla 1 y la ilustracin 2. Ahora vamos a crear el archivo cliente.conf cd /etc/openvpn/ vi cliente.conf
#Comienza el archivo cliente.conf #se especifica que es el cliente client #con este comando se especifica que usaremos, openvpn en modo routing #podemos escoger dev tap para especificar bridge, pero este no es el caso dev tun #especificamos el protocolo proto udp #ahora especificamos la ip del servidor (la direccin del segmento del laboratorio) y el puerto remote 192.168.130.X 1194 #la mayora de los clientes no necesitan salir por un puerto fijo, por eso el siguiente comando #para no usar el servicio por un puerto especifico. nobind #se especifica la ubicacin de los certificado de la entidad certificadora, el certificado del #servidor y la llave del servidor, como estos archivos estn en la misma ruta del archivo .conf #solo es necesario poner el nombre. ca ca.crt cert client1.crt key client1.key #se habilita la compresin comp-lzo

Ahora verifique que las claves necesarias estn en la misma carpeta que el archivo de configuracin. Finalmente se corre el servicio con el comando: openvpn cliente.conf Ahora puede hacer ping al servidor. ping 10.8.0.1 Si todo est bien debera hacer un ping exitoso.

Ahora probaremos que los equipos en el segmento de red 10.0.3.0/24 puedan alcanzar a los de la red 192.168.1.0/24 para eso desde el equipo que tiene la ip 10.0.3.10/24 haremos ping al 192.168.1.10/24. ping 192.168.1.10 Si todo est bien debera hacer un ping exitoso, lo cual comprueba el funcionamiento en ambas direcciones.

Bibliografa [1] Gua de instalacin de OpenVPN [en lnea], certificados PKI. Disponible en, http://openvpn.net/index.php/open-source/documentation/howto.html#install [2] PKI Certifcate [en lnea]. Disponible en, http://www.topbits.com/es/pki-certificate.html [3] OpenVPN http://www.openvpn.net

También podría gustarte