User Tools

Site Tools


informatica:linux:openvpn

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:linux:openvpn [2015/02/02 11:03] javiinformatica:linux:openvpn [2018/01/05 14:20] (current) – [Autenticación LDAP] javi
Line 1: Line 1:
-====== OpenVPN ======+======= OpenVPN =======
  
  
  
-===== Routed VPN =====+====== Routed VPN ======
  
-==== Instalacion y configuracion ====+===== Instalacion y configuracion =====
  
 Esta configuración nos permite conectividad punto a punto entre los distintos clientes y el servidor VPN Esta configuración nos permite conectividad punto a punto entre los distintos clientes y el servidor VPN
Line 22: Line 22:
  
 <code> <code>
-cd /usr/share/doc/openvpn/examples/easy-rsa/2.0+cd /usr/share/easy-rsa
 sudo su sudo su
 vim vars vim vars
Line 44: Line 44:
 ./clean-all ./clean-all
 ./build-ca ./build-ca
 +</code>
 +
 +Error:
 +
 +<code>
 +grep: /usr/share/easy-rsa/openssl.cnf: No such file or directory
 +pkitool: KEY_CONFIG (set by the ./vars script) is pointing to the wrong
 +version of openssl.cnf: /usr/share/easy-rsa/openssl.cnf
 +The correct version should have a comment that says: easy-rsa version 2.x
 +</code>
 +
 +Solución:
 +
 +  ln -s openssl-1.0.0.cnf openssl.cnf
 +
 +Y volver a intentar:
 +
 +  ./build-ca
 +  
 +Error:
 +
 +<code>
 +unable to find 'distinguished_name' in config
 +problems making Certificate Request
 +1995425184:error:0E06D06A:configuration file routines:NCONF_get_string:no conf or environment variable:../crypto/conf/conf_lib.c:272:
 +</code>
 +
 +Desconozco el motivo, pero se resuleve editando las lineas en las que se le asigna un valor a la variable "subjectAltName", en mi caso 2 veces:
 +
 +  vim openssl.cnf
 +  
 +Y cambio los valores:
 +
 +<code>
 +# anyadido
 +#subjectAltName=$ENV::KEY_ALTNAMES
 +subjectAltName=email:copy
 +</code>
 +
 +Y volver a intentar:
 +
 +  ./build-ca
 +
 +Ahora a contestar las preguntas y pulsar "enter" al final de cada una:
 +
 +<code>
 +Country Name (2 letter code) [US]:ES
 +State or Province Name (full name) [BC]:
 +Locality Name (eg, city) [Barcelona]:
 +Organization Name (eg, company) [Contrabanda FM]:
 +Organizational Unit Name (eg, section) [Tècnica]:
 +Common Name (eg, your name or your server's hostname) [ContrabandaFM]:
 +Name [EasyRSA]:
 +Email Address [admin@example.com]:
 </code> </code>
  
Line 51: Line 105:
  
   ./build-key-server server   ./build-key-server server
 +
 +Ahora a contestar las preguntas y pulsar "enter" al final de cada una:
 +
 +<code>
 +Country Name (2 letter code) [US]:ES
 +State or Province Name (full name) [BC]:
 +Locality Name (eg, city) [Barcelona]:
 +Organization Name (eg, company) [Contrabanda FM]:
 +Organizational Unit Name (eg, section) [Tècnica]:
 +Common Name (eg, your name or your server's hostname) [ContrabandaFM]:
 +Name [EasyRSA]:
 +Email Address [admin@example.com]:
 +</code>
 +
 +Las contraseñas las dejo en blanco:
 +
 +  A challenge password []:
 +  An optional company name []:
 +
 +Y aquí hay que pulsar "y" más "enter":
 +
 +  Sign the certificate? [y/n]:
 +  1 out of 1 certificate requests certified, commit? [y/n]
  
 4.2. Generate Diffie Hellman parameters 4.2. Generate Diffie Hellman parameters
  
 +**OJO**: puede llevar mucho tiempo, unos 15 minutos:
 + 
   ./build-dh   ./build-dh
  
-4.3. Mover llaves+4.3. Mover llaves (revisar, no estoy seguro de que haya que mover en lugar de copiar nada):
  
   mkdir -p /etc/openvpn/keys/server   mkdir -p /etc/openvpn/keys/server
Line 79: Line 158:
 cert /etc/openvpn/keys/server/server.crt cert /etc/openvpn/keys/server/server.crt
 key /etc/openvpn/keys/server/server.key  key /etc/openvpn/keys/server/server.key 
-dh /etc/openvpn/keys/server/dh1024.pem+dh /etc/openvpn/keys/server/dh2048.pem
 server 172.16.0.0 255.255.255.0 server 172.16.0.0 255.255.255.0
 ifconfig-pool-persist ipp.txt ifconfig-pool-persist ipp.txt
Line 102: Line 181:
 Hay muchas opciones ("port", "proto" y "dev" por ejemplo) que tienen que concordar con las que se especifiquen en el archivo de configuracion del cliente. Hay muchas opciones ("port", "proto" y "dev" por ejemplo) que tienen que concordar con las que se especifiquen en el archivo de configuracion del cliente.
  
-==== Generar claves de los clientes ====+===== Generar claves de los clientes =====
  
-=== Migracion a openvpn >=2.3 === 
  
-**IMPORTANTE**: realizar los siguientes pasos **UNA** sola vez, en caso de migrar a openvpn >=2.3 
  
-0. Instalar paquete, ahora ya NO es parte de openvpn +==== Procedimiento generico ====
- +
-  sudo aptitude install easy-rsa +
-   +
-1. **IMPORTANTE**: mover certificados de la CA, lista de revocados, etc... a nueva ubicacion: +
- +
-  cd /usr/share/easy-rs +
-  mv keys keys.old +
-  sudo mv /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ /usr/share/easy-rsa +
- +
-=== Procedimiento generico ===+
  
 Para cada nuevo cliente se tiene que repetir este proceso completo. Para cada nuevo cliente se tiene que repetir este proceso completo.
- 
  
 1. Convertirse en root y entrar en el directorio: 1. Convertirse en root y entrar en el directorio:
  
   sudo su   sudo su
-  cd /usr/share/doc/openvpn/examples/easy-rsa/2.0 
- 
-Openvpn >=2.3: 
- 
   cd /usr/share/easy-rsa   cd /usr/share/easy-rsa
  
Line 139: Line 201:
  
   ./build-key client1   ./build-key client1
 +
 +Contestar las preguntas, presionar "enter" para aceptar los valores propuestos:
 +
 +<code>
 +Country Name (2 letter code) [US]:ES
 +State or Province Name (full name) [BC]:
 +Locality Name (eg, city) [Barcelona]:
 +Organization Name (eg, company) [Contrabanda FM]:
 +Organizational Unit Name (eg, section) [Tècnica]:
 +Common Name (eg, your name or your server's hostname) [client1]:
 +Name [EasyRSA]:
 +Email Address [admin@example.com]:
 +</code>
 +
 +Las contraseñas las dejo en blanco:
 +
 +  A challenge password []:
 +  An optional company name []:
 +
 +Y aquí hay que pulsar “y” más “enter”:
 +
 +  Sign the certificate? [y/n]:
 +  1 out of 1 certificate requests certified, commit? [y/n]
 +
  
 4. Mover las llaves y copiar la clave publica de la CA a un directorio: 4. Mover las llaves y copiar la clave publica de la CA a un directorio:
  
   mkdir -p ~/openvpn/client1   mkdir -p ~/openvpn/client1
-  user="client1"cp keys/ca.crt ~/openvpn/$user; mv keys/$user.crt keys/$user.key ~/openvpn/$user +  user="client1" && cp keys/ca.crt ~/openvpn/$user/ && cp keys/$user.crt keys/$user.key ~/openvpn/$user/
-  rm -fr keys/client1.csr+
  
 5. Crear el archivo de configuracion del cliente (hay un ejemplo en /usr/share/doc/openvpn/examples/sample-config-files 5. Crear el archivo de configuracion del cliente (hay un ejemplo en /usr/share/doc/openvpn/examples/sample-config-files
 ): ):
  
-  vim ~/openvpn/client1/client1.conf+  user="client1" && vim ~/openvpn/$user/$user.conf
      
 Con el siguiente contenido: Con el siguiente contenido:
Line 305: Line 390:
  
   sudo service openvpn start   sudo service openvpn start
-===== Acceso desde el cliente a la LAN del servidor VPN (gateway de la LAN y servidor VPN son distintos) =====+   
 +==== Migracion a openvpn >=2.3 ==== 
 + 
 +**IMPORTANTE**: realizar los siguientes pasos **UNA** sola vez, en caso de migrar a openvpn >=2.3 
 + 
 +0. Instalar paquete, ahora ya NO es parte de openvpn 
 + 
 +  sudo aptitude install easy-rsa 
 + 
 +1. **IMPORTANTE**: mover certificados de la CA, lista de revocados, etc... a nueva ubicacion: 
 + 
 +  cd /usr/share/easy-rs 
 +  mv keys keys.old 
 +  sudo mv /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ /usr/share/easy-rsa 
 + 
 +====== Acceso desde el cliente a la LAN del servidor VPN (gateway de la LAN y servidor VPN son distintos) ======
  
 Queremos que desde el cliente se llegue no solo al servidor VPN, sino también a la LAN de ese servidor. La particularidad es que el servidor VPN es una máquina virtual detrás de un Hipervisor KVM. Además el Hipervisor KVM está detrás de un router ADSL casero en modo DMZ, de forma que TODO el tráfico lo redirige hacia el Hipervisor. Queremos que desde el cliente se llegue no solo al servidor VPN, sino también a la LAN de ese servidor. La particularidad es que el servidor VPN es una máquina virtual detrás de un Hipervisor KVM. Además el Hipervisor KVM está detrás de un router ADSL casero en modo DMZ, de forma que TODO el tráfico lo redirige hacia el Hipervisor.
Line 458: Line 558:
   ping 10.0.0.12   ping 10.0.0.12
  
-===== Configurar DNS en el cliente =====+====== Configurar DNS en el cliente ======
  
 Para que el cliente reciba del servidor VPN parámetros como servidor DNS o Dominio de búsqueda necesitamos configuración tanto en el servidor como en el cliente, y un script en el lado cliente. Si la máquina es Windows el script no es necesario. Para que el cliente reciba del servidor VPN parámetros como servidor DNS o Dominio de búsqueda necesitamos configuración tanto en el servidor como en el cliente, y un script en el lado cliente. Si la máquina es Windows el script no es necesario.
Line 581: Line 681:
 </code> </code>
  
-===== Revocar certificados =====+====== Revocar certificados ======
  
 http://openvpn.net/index.php/open-source/documentation/howto.html#revoke http://openvpn.net/index.php/open-source/documentation/howto.html#revoke
Line 638: Line 738:
 </code> </code>
  
-====== Receta 2 (parcialmente incompleta) ======+======= Receta 2 (parcialmente incompleta) =======
  
-===== Instalar OPENVPN =====+====== Instalar OPENVPN ======
   # apt-get install openvpn   # apt-get install openvpn
-===== Crear certificados =====+====== Crear certificados ======
  
-==== Generar la CA para firmar los certificados ====+===== Generar la CA para firmar los certificados =====
 Copiamos el directorio de ejemplo en la carpeta de configuración de OpenVPN: Copiamos el directorio de ejemplo en la carpeta de configuración de OpenVPN:
   #/usr/share/doc/openvpn/examples# cp -R easy-rsa/ /etc/openvpn/   #/usr/share/doc/openvpn/examples# cp -R easy-rsa/ /etc/openvpn/
Line 691: Line 791:
   -rw-r--r-- 1 root root    3 Nov  6 21:20 serial   -rw-r--r-- 1 root root    3 Nov  6 21:20 serial
  
-===== Creación de Certificado y llaves para Servidor =====+====== Creación de Certificado y llaves para Servidor ======
  
  
Line 740: Line 840:
  
  
-===== Generar Certificado para los clientes =====+====== Generar Certificado para los clientes ======
  
   ./build-key client1   ./build-key client1
Line 770: Line 870:
   Please enter the following 'extra' attributes   Please enter the following 'extra' attributes
   to be sent with your certificate request   to be sent with your certificate request
-  A challenge password []:fermin99+  A challenge password []:mysecretpassword
   An optional company name []:   An optional company name []:
   Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf   Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf
Line 793: Line 893:
  
  
-===== Generate Diffie Hellman parameters =====+====== Generate Diffie Hellman parameters ======
 Diffie Hellman parameters must be generated for the OpenVPN server. On Linux/BSD/Unix: Diffie Hellman parameters must be generated for the OpenVPN server. On Linux/BSD/Unix:
  
Line 799: Line 899:
  
  
-===== Ficheros de configuración =====+====== Ficheros de configuración ======
   donquixot:/etc/openvpn# cp -R /usr/share/doc/openvpn/examples/sample-config-files/ config-files   donquixot:/etc/openvpn# cp -R /usr/share/doc/openvpn/examples/sample-config-files/ config-files
  
  
-===== Habilitar para máquinas virtuales contenedores openvz =====+====== Habilitar para máquinas virtuales contenedores openvz ======
   vzctl set 101 --devnodes net/tun:rw --save   vzctl set 101 --devnodes net/tun:rw --save
  
Line 861: Line 961:
 Y la ruta 10.8.0.0/24 -> 10.139.67.103 (ip del servidor vpn) Y la ruta 10.8.0.0/24 -> 10.139.67.103 (ip del servidor vpn)
  
-===== Autenticación LDAP =====+====== Autenticación LDAP ======
  
   /etc/openvpn/auth/auth-ldap.conf   /etc/openvpn/auth/auth-ldap.conf
Line 889: Line 989:
   </Authorization>   </Authorization>
  
 +
 +====== IPs estáticas ======
 +
 +http://dnaeon.github.io/static-ip-addresses-in-openvpn/
 +
 +1. Una sola vez
 +
 +1.1. Crear directorios y archivos:
 +
 +  sudo mkdir /etc/openvpn/ccd
 +  sudo touch /etc/openvpn/ipp.txt
 +  
 +1.2. Editar arhcivo de configuración del servidor VPN:
 +
 +  sudo vim /etc/openvpn/server.conf
 +  
 +Y añadir las lineas:
 +
 +  client-config-dir /etc/openvpn/ccd
 +  ifconfig-pool-persist /etc/openvpn/ipp.txt
 +
 +1.3. Reiniciar el servicio:
 +
 +  sudo service openvpn restart
 +  
 +2. Para cada cliente
 +
 +2.1. Crear un archivo con el nombre del certificado que se ha creado:
 +
 +  sudo vim /etc/openvpn/ccd/client1
 +
 +Y especificar tanto la IP como la IP del servidor VPN:
 +
 +  ifconfig-push 172.16.0.50 172.16.0.1
 +
 +2.2. Reservar esa IP para ese certificado, para no asignársela a otro cliente:
 +
 +  client1,172.16.0.50
 +
 +2.3. (Cliente) Reiniciar el servicio VPN:
 +
 +  sudo service openvpn restart
 +  
 +2.4. (Cliente) Comprobar que la IP es la especificada en los pasos 2.1. y 2.2:
 +
 +  sudo ifconfig
 +
 +  
 +  
 +  
informatica/linux/openvpn.1422875032.txt.gz · Last modified: 2015/04/13 20:19 (external edit)