Instalación_de_Openvpn Tabla de contenidos • 1 Instalación de OpenVPN • 2 Generar los Certificados • 3 Configuración • 4 Configuración de un Servidor Openvpn en modo Router • 5 Configuración de cliente Openvpn en modo Router • 6 Referencias Instalación de OpenVPN • La instalación de OpenVPN en Debian Etch es bastante simple,usando el gestor de paquetes de Debian, instalamos un paquete llamado OpenVPN aptitude install openvpn • Luego que se instala el paquete, crea un directorio en /etc/openvpn, que inicialmente se encuentra vacio, y en este directorio se deben colocar los ficheros de configuración y los respectivos certificados. • En el directorio de la documentación /usr/share/doc, tenemos un directorio para openvpn, donde se encuentran ejemplos de configuración, y una carpeta llamada easy-rsa bolivar:/usr/share/doc/openvpn# ls AUTHORS changelog.gz examples changelog.Debian.gz copyright PORTS README README.auth-pam README.Debian README.down-root Generar los Certificados • Antes que nada, hay que instalar el paquete openssl. bolivar:~# aptitude install openssl • Copiamos la carpeta 2.0 que se encuentra en /usr/share/doc/openvpn/examples/easy-rsa/ a /etc/openvpn/easy-rsa bolivar:~# cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa -R -v «/usr/share/doc/openvpn/examples/easy-rsa/2.0/» -> «/etc/openvpn/easy-rsa/2.0» «/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-inter» -> «/etc/openvpn/easy-rsa/2.0/buil «/usr/share/doc/openvpn/examples/easy-rsa/2.0/Makefile» -> «/etc/openvpn/easy-rsa/2.0/Makefil «/usr/share/doc/openvpn/examples/easy-rsa/2.0/pkitool» -> «/etc/openvpn/easy-rsa/2.0/pkitool» «/usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl.cnf» -> «/etc/openvpn/easy-rsa/2.0/open «/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-req» -> «/etc/openvpn/easy-rsa/2.0/build«/usr/share/doc/openvpn/examples/easy-rsa/2.0/clean-all» -> «/etc/openvpn/easy-rsa/2.0/clean«/usr/share/doc/openvpn/examples/easy-rsa/2.0/sign-req» -> «/etc/openvpn/easy-rsa/2.0/sign-re «/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key-pkcs12» -> «/etc/openvpn/easy-rsa/2.0 «/usr/share/doc/openvpn/examples/easy-rsa/2.0/inherit-inter» -> «/etc/openvpn/easy-rsa/2.0/in «/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-dh» -> «/etc/openvpn/easy-rsa/2.0/build-d Generar los Certificados 1 Instalación_de_Openvpn «/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key-pass» -> «/etc/openvpn/easy-rsa/2.0/b «/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key» -> «/etc/openvpn/easy-rsa/2.0/build«/usr/share/doc/openvpn/examples/easy-rsa/2.0/list-crl» -> «/etc/openvpn/easy-rsa/2.0/list-cr «/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-req-pass» -> «/etc/openvpn/easy-rsa/2.0/b «/usr/share/doc/openvpn/examples/easy-rsa/2.0/whichopensslcnf» -> «/etc/openvpn/easy-rsa/2.0/ «/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key-server» -> «/etc/openvpn/easy-rsa/2.0 «/usr/share/doc/openvpn/examples/easy-rsa/2.0/revoke-full» -> «/etc/openvpn/easy-rsa/2.0/revo «/usr/share/doc/openvpn/examples/easy-rsa/2.0/README.gz» -> «/etc/openvpn/easy-rsa/2.0/README «/usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl-0.9.6.cnf.gz» -> «/etc/openvpn/easy-rsa «/usr/share/doc/openvpn/examples/easy-rsa/2.0/vars» -> «/etc/openvpn/easy-rsa/2.0/vars» «/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-ca» -> «/etc/openvpn/easy-rsa/2.0/build-c • Entramos a la carpeta /etc/openvpn/easy-rsa para generar los certificados. bolivar:~# cd /etc/openvpn/easy-rsa/ • Editamos el fichero vars que se encuentra en esta carpeta, en este archivo se definen las variables que usa easy-rsa. + Detalles: * * * * * export export export export export KEY_COUNTRY="US", Nuestro Pais. KEY_PROVINCE="CA", Nuestro Estado KEY_CITY="SanFrancisco", Nuestra Ciudad. KEY_ORG="Fort-Funston", Nombre de la Organización. KEY_EMAIL="me@myhost.mydomain", Correo por defecto. bolivar:/etc/openvpn/easy-rsa# cat vars export EASY_RSA="`pwd`" export OPENSSL="openssl" export PKCS11TOOL="pkcs11-tool" export GREP="grep" export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` export KEY_DIR="$EASY_RSA/keys" echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR export KEY_SIZE=1024 export CA_EXPIRE=3650 export KEY_EXPIRE=3650 export KEY_COUNTRY="VE" export KEY_PROVINCE="TA" export KEY_CITY="San Cristobal" export KEY_ORG="COVETEL" export KEY_EMAIL="info@covetel.com.ve" • Usando la herramienta pkitool, vamos a generar los certificados. o Antes de poder usar pkitool hay que cargar las variables de configuración. bolivar:/etc/openvpn/easy-rsa# . vars NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys o Luego solo la primera vez, cuando se esta gerando la CA, hay que correr el script ./cle bolivar:/etc/openvpn/easy-rsa# ./clean-all o Primero Construimos la CA. bolivar:/etc/openvpn/easy-rsa# ./pkitool --initca Generar los Certificados 2 Instalación_de_Openvpn Using CA Common Name: COVETEL CA Generating a 1024 bit RSA private key ................................................................++++++ .........++++++ writing new private key to 'ca.key' ----o Creamos un certificado para el servidor. bolivar:/etc/openvpn/easy-rsa# ./pkitool --server servidor Generating a 1024 bit RSA private key ...++++++ .....................++++++ writing new private key to 'servidor.key' ----Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'VE' stateOrProvinceName :PRINTABLE:'TA' localityName :PRINTABLE:'San Cristobal' organizationName :PRINTABLE:'COVETEL' commonName :PRINTABLE:'servidor' emailAddress :IA5STRING:'info@covetel.com.ve' Certificate is to be certified until Dec 1 14:26:09 2018 GMT (3650 days) Write out database with 1 new entries Data Base Updated o Generamos el archivo DH. bolivar:/etc/openvpn/easy-rsa# ./build-dh Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time .................................+.+........................................+...+...... • Luego generamos el certificado para un cliente bolivar:/etc/openvpn/easy-rsa # ./pkitool cliente Generating a 1024 bit RSA private key .++++++ .............................++++++ writing new private key to 'cliente.key' ----Using configuration from /etc/openvpn/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'VE' stateOrProvinceName :PRINTABLE:'TA' localityName :PRINTABLE:'San Cristobal' organizationName :PRINTABLE:'COVETEL' commonName :PRINTABLE:'cliente' Generar los Certificados 3 Instalación_de_Openvpn emailAddress :IA5STRING:'info@covetel.com.ve' Certificate is to be certified until Dec 1 14:27:53 2018 GMT (3650 days) Write out database with 1 new entries Data Base Updated Configuración • El paso mas sencillo para crear un fichero de configuración, es copiar el fichero de ejemplo que se encuentra en /usr/share/doc/openvpn/examples/samples-config-files/server.conf.gz a /etc/openvpn/ bolivar:~# cd /etc/openvpn/ bolivar:/etc/openvpn# zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz • Luego editamos el fichero de configuración dependiendo si necesitamos una VPN en modo Router o en modo Bridge. Configuración de un Servidor Openvpn en modo Router • El fichero de configuración para una VPN en modo router, debe quedar como sigue: tls-server port 1194 proto udp dev tun ca ca.crt cert servidor.crt key servidor.key dh dh1024.pem server 10.10.10.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo # Lista de Revocación. #crl-verify crl.pem chroot /etc/openvpn user nobody group nogroup persist-key persist-tun status openvpn-status.log log openvpn.log verb 3 mute 20 client-to-client # Carpeta donde estan las configuraciones individuales por cliente: client-config-dir clientes • Detalles Importantes: o dev, indica el dispositivo de red a utilizar, en este caso como es una VPN en modo Rout se esta usando TUN, ya que de lo contrario, si fuera en modo Bridge, se debe usar TAP. o ca, ruta al certificado público de la CA. Configuración de un Servidor Openvpn en modo Router 4 Instalación_de_Openvpn o o o o o o o cert, ruta al certificado público del servidor. key, ruta al clave privada del servidor. dh, fichero DH (Diffie-Hellman), necesario para el intercambio secreto de claves entre server, indica el rango de la subred VPN. comp-lzo, activa la compresión. chroot, enjaula el demonio. client-config-dir, directorio donde se guardan los fichero de configuración individuale • Creamos el directorio para guardar las configuraciones individuales por cliente bolivar:/etc/openvpn# mkdir /etc/openvpn/clientes • Copiamos los certificados necesarios a la carpeta /etc/openvpn. bolivar:/etc/openvpn# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/ bolivar:/etc/openvpn# cp /etc/openvpn/easy-rsa/keys/servidor.crt /etc/openvpn/ bolivar:/etc/openvpn# cp /etc/openvpn/easy-rsa/keys/servidor.key /etc/openvpn/ • Luego de que tenemos el fichero de configuración listo, iniciamos el demonio openvpn. bolivar:/etc/openvpn# invoke-rc.d openvpn start • Luego podemos mirar los logs en /etc/openvpn/openvpn.log bolivar:/etc/openvpn# tail -f openvpn.log covetel:/home/elsanto# tail -f /etc/openvpn/openvpn.log Wed Dec 3 15:31:34 2008 bolivar/150.188.112.78:55795 PUSH: Received control message: 'PUSH_R Wed Dec 3 15:31:34 2008 bolivar/150.188.112.78:55795 SENT CONTROL [bolivar]: 'PUSH_REPLY,rou topology net30,ping 10,ping-restart 120,ifconfig 10.10.10.34 10.10.10.33' (status=1) Wed Dec 3 15:34:58 2008 lexotanil/150.188.112.78:41561 TLS: soft reset sec=0 bytes=37381/0 p Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 VERIFY OK: depth=1, /C=VE/ST=Tachira/ San_Cristobal/O=Cooperativa_Venezolana_de_Tecnolog_xC3_xACas_Libres/OU=Sistemas/emailAddress= Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 VERIFY OK: depth=0, /C=VE/ST=Tachira/ Cooperativa_Venezolana_de_Tecnolog_xC3_xACas_Libres/OU=lexotanil/CN=lexotanil/emailAddress=je Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 Data Channel Encrypt: Cipher 'BF-CBC' Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 Data Channel Encrypt: Using 160 bit m Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 Data Channel Decrypt: Cipher 'BF-CBC' Wed Dec 3 15:35:01 2008 lexotanil/150.188.112.78:41561 Data Channel Decrypt: Using 160 bit m Wed Dec 3 15:35:02 2008 lexotanil/150.188.112.78:41561 Control Channel: TLSv1, cipher TLSv1/ • En el momento en que la VPN esta arriba, debemos tener una interfaz tunX, donde X es un numero de 0 a N. bolivar:/etc/openvpn# ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.10.10.1 P-t-P:10.10.10.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:168 (168.0 b) TX bytes:252 (252.0 b) covetel:/home/elsanto# route Configuración de un Servidor Openvpn en modo Router 5 Instalación_de_Openvpn Kernel IP routing table Destination Gateway 10.10.10.2 * 216.75.63.0 * 10.10.10.0 10.10.10.2 default 216.75.63.1 Genmask 255.255.255.255 255.255.255.128 255.255.255.0 0.0.0.0 Flags UH U UG UG Metric 0 0 0 0 Ref 0 0 0 0 Use 0 0 0 0 Iface tun0 eth2 tun0 eth2 Configuración de cliente Openvpn en modo Router • Luego de instalar el paquete openvpn, siguiendo los pasos de instalación descritos en este documento, se deben seguir los siguientes pasos: o Obtener los certificados necesarios y copiarlos dentro de una carpeta en /etc/openvpn, ponerle el nombre de la vpn a la que se va a conectar: o Certificado Público de la CA. o Certificado Público del cliente. o Llave privada del cliente. o Crear el fichero de configuración dentro de la carpeta /etc/openvpn, se sugiere ponerle el nombre de la vpn a la que se va a conectar, seguido de .conf bolivar:/etc/openvpn# vim covetel.conf client dev tun proto udp remote covetel.com.ve 1194 resolv-retry infinite nobind user nobody group nogroup persist-key persist-tun mute-replay-warnings ca covetel/ca.crt cert covetel/bolivar.crt key covetel/bolivar.key ns-cert-type server comp-lzo verb 3 mute 20 status openvpn-status.log log openvpn.log o Detalles: + client, le indica a openvpn que corra en modo cliente + proto, define el protocolo, que puede ser udp o tcp + remote, aqui ponemos la dirección ip o el nombre de domino del servidor a donde nos vamos a conectar. + ca, apunta al certificado público de la CA. + cert, apunta al certificado público del Cliente. + key, apunta a la llave privada del Cliente. + log, fichero donde se van a guardar los logs de conexión a la vpn. • Luego que tenemos los certificados y el fichero de configuración listo, solo es necesario iniciar el servicio Openvpn. bolivar:/etc/openvpn# /etc/init.d/openvpn start covetel Configuración de cliente Openvpn en modo Router 6 Instalación_de_Openvpn Starting virtual private network daemon: covetel(OK). • Podemos mirar los logs de la conexión en /etc/openvpn/openvpn.log bolivar:/etc/openvpn# tail -f openvpn.log Wed Dec 3 12:15:56 2008 OPTIONS IMPORT: --ifconfig/up options modified Wed Dec 3 12:15:56 2008 OPTIONS IMPORT: route options modified Wed Dec 3 12:15:56 2008 TUN/TAP device tun1 opened Wed Dec 3 12:15:56 2008 ifconfig tun1 10.10.10.34 pointopoint 10.10.10.33 mtu 1500 Wed Dec 3 12:15:56 2008 route add -net 10.10.10.0 netmask 255.255.255.0 gw 10.10.10.33 Wed Dec 3 12:15:56 2008 GID set to nogroup Wed Dec 3 12:15:56 2008 UID set to nobody Wed Dec 3 12:15:56 2008 Initialization Sequence Completed • Probamos que el servidor de Openvpn sea alcanzable por la red de la interfaz tun. bolivar:/etc/openvpn# ping 10.10.10.1 -c 1 PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data. 64 bytes from 10.10.10.1: icmp_seq=1 ttl=62 time=153 ms --- 10.10.10.1 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 153.837/153.837/153.837/0.000 ms Referencias • OpenVPN en Wikipedia • Página Principal de Openvpn. Volver Referencias 7