Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Servidor VPN en Linux - Bilal Jebari

301 views

Published on

Manual de instalación de Servior VPN en Linux con OpenVPN.
http://bilaljebari.gq
https://bilaljebari.blogspot.com.es/

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Servidor VPN en Linux - Bilal Jebari

  1. 1. Servidor VPN en Linux con OPENVPN Bilal Jebari www.bilaljebari.gq www.bilaljebari.blogspot.com
  2. 2. Bilal Jebari | Servidor VPN con OPENVPN Página 1 de 9 Introducción Esta pequeña guía nos servirá de utilidad para ayudarnos a instalar y configurar un Servidor VPN en nuestro sistema operativo Linux independientemente de la distribución. En mi caso ha sido creado en una máquina virtual Debian8.6 Espero que les sirva de utilidad y si tienen alguna duda, contacten conmigo, les intentaré ayudar lo máximo posible.
  3. 3. Bilal Jebari | Servidor VPN con OPENVPN Página 2 de 9 En primer es aconsejable tener el Servidor/Host con IP fija. Voy a usar la IP 10.10.10.220 en el ServidorVPN Para editar la configuración usaremos la siguiente orden: $ nano /etc/network/interfaces Estos son los valores que debe tener el archivo interfaces (en su caso cambiará dependiendo de la IP de su red). auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.10.10.220 netmask 255.255.255.0 network 10.10.10.0 broadcast 10.10.10.255 gateway 10.10.10.1 Guardamos los cambios. Si estamos usando una versión antigua de Linux, se recomienda actualizar los paquetes. $ apt-get update $ apt-get upgrade Después procedemos a instalar el paquete OpenVPN. $ apt-get install openvpn Durante la instalación debemos aceptar la confirmación pulsando S. Después de la instalación vamos a copiar el contenido que hay en la carpeta easy-rsa que se encuentra en /etc/share a nuestro directorio easy-rsa dentro del directorio openvpn. La copia la haremos de forma recursiva. $ cp -r /etc/share/easy-rsa /etc/openvpn/easy-rsa En caso de error a la hora de copiar la carpeta, es posible que tengamos que instalar easy-rsa. Para corregir este error, tenemos que hacer lo siguiente: $ apt-get install easy-rsa Después de la instalación creamos la carpeta junto con los ficheros de configuración: $ make-cadir /etc/openvpn/easy-rsa
  4. 4. Bilal Jebari | Servidor VPN con OPENVPN Página 3 de 9 Nos situamos en el directorio /etc/openvpn/easy-rsa y editamos el archivo vars. $ cd /etc/openvpn/easy-rsa $ nano vars Modificamos las variables export EASY_RSA y export KEY_SIZE por los siguientes valores consecutivamente. export EASY_RSA = "/etc/openvpn/easy-rsa" export KEY_SIZE = 1024 Guardamos los cambios El siguiente paso es generar los certificados CA. Para ello, estando situados en el directorio easy-rsa ejecutamos los siguientes comandos. $ source ./vars $ ./clean-all $ ./build-ca Este último es para generar la entidad certificadora. Podemos dejar los valores por defectos o cambiarlos. Debemos tener especial atención al common ya que es nuestro nombre del servidor VPN. Es importante porque en el siguiente paso crearemos el certificado del servidor y debe tener el mismo nombre. Después de crear el certificado anterior, vamos a crear un certificado para nuestro Servidor VPN. Debemos prestar atención y dejar los campos por defecto y verificar que el nombre de nuestro servidor es el que hemos puesto anteriormente. $ ./build-key-server [Nombre_Servidor]  $ ./build-key-server ServerVPN Después vamos a crear la clave para el usuario con el nombre que queramos. En mi caso pondré [bilal] $ ./build-key-pass [Usuario]  $ ./build-key-pass bilal Nos volverán a aparecer los campos a rellenar, los dejamos en blanco salvo cuando nos pida una contraseña, ahí debemos poner una que será necesaria para poder conectarse posteriormente mediante OpenVPN a nuestro servidor VPN.
  5. 5. Bilal Jebari | Servidor VPN con OPENVPN Página 4 de 9 Esta última operación la podemos hacer las veces que se quiera, dependiendo de los usuarios que queramos crear. Bien, después de crear el usuario vamos protegerlo mediante la encriptación des3. Para ello usamos la siguiente orden dentro del directorio keys. $ cd keys $ openssl rsa -in bilal.key -des -out bilal.3des.key Volvemos al directorio anterior, easy-rsa. $ cd /etc/openvpn/easy-rsa Ahora vamos a proceder a generar el intercambio de claves Diffie-Hellman, esto permite que dos entidades permitan intercambio de las claves a través de un servidor público. $ ./build-dh El siguiente paso es proteger nuestro servidor de posibles ataques de DDoS. $ openvpn --genkey --secret keys/ta.key
  6. 6. Bilal Jebari | Servidor VPN con OPENVPN Página 5 de 9 Ahora creamos el fichero de configuración del servidor VPN. Este fichero tendrá las diferentes rutas de los certificados, las IP´s, puertos, interfaz, etc. $ nano /etc/openvpn/server.conf A continuación os dejo la configuración que tengo yo, podéis usar esta misma reemplazando los valores que os interese dev tun proto udp port 1194 ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/[Poner_Nombre_CERT_Servidor].crt key /etc/openvpn/easy-rsa/keys/[Poner_Nombre_KEY_Servidor].key dh /etc/openvpn/easy-rsa/keys/dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig 10.8.0.1 10.8.0.2 push "route 10.8.0.1 255.255.255.255" push "route 10.8.0.0 255.255.255.0" push "route 10.10.10.220 255.255.255.0" #Sustituir la IP 10.10.10.220 por la vuestra X.X.X.X push "dhcp-option DNS 8.8.8.8" push "redirect-gateway def1" client-to-client duplicate-cn keepalive 10 120 tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 cipher AES-128-CBC comp-lzo user nobody group nogroup persist-key persist-tun status /var/log/openvpn-status.log 20 log /var/log/openvpn.log verb 1 Guardamos los cambios. Ahora vamos a activar la redirección del tráfico de internet. $ nano /etc/sysctl.conf Descomentamos la siguiente línea y ponemos el valor 1. Quedaría de la siguiente manera. net.ipv4.ip_forward=1
  7. 7. Bilal Jebari | Servidor VPN con OPENVPN Página 6 de 9 Guardamos los cambios. El siguiente comando es para ejecutar los cambios que acabamos de hacer. $ sysctl -p Ya tenemos nuestro servidor configurado. El siguiente paso es permitir el tráfico por nuestro túnel VPN, y que los clientes VPN puedan acceder a redes externas públicas y otras subredes dentro de la red VPN. nano /etc/rc.local Añadimos las siguientes reglas en nuestro firewall: iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 1ª regla: Permitimos el tráfico por el dispositivo virtual. 2ª regla: Permitimos que los paquetes provenientes de 10.8.0.0/24 pueden enviarse o salir por la interfaz de salida eth0. 3ª regla: Permitimos al servidor OpenVPN que cuando reciba una petición de cualquiera de los clientes, proceda el mismo a resolverla y enviarla en representación del cliente. Guardamos los cambios y reiniciamos nuestro sistema $ reboot Hasta aquí la configuración completa del Servidor VPN
  8. 8. Bilal Jebari | Servidor VPN con OPENVPN Página 7 de 9 Procedemos a configurar el cliente para cada usuario que hemos creado anteriormente, en mi caso será para cliente bilal. Para facilitarnos la tarea vamos a hacer uso de un script desarrollado por Eric Jodoin que se encargará de crear el fichero .ovpn con los ficheros de configuración correspondientes. Enlace: https://gist.github.com/laurenorsini/10013430 Para ello tenemos que crear un fichero de texto del cual el script leerá la configuración y generará el usuario .ovpn. $ nano /etc/openvpn/easy-rsa/keys/Default.txt Copiamos la siguiente configuración client dev tun proto udp remote [IP local, pública o nombre DNS] 1194 resolv-retry infinite nobind persist-key persist-tun mute-replay-warnings ns-cert-type server key-direction 1 cipher AES-128-CBC comp-lzo verb 1 mute 20 Dónde pone [IP local, pública o nombre DNS], podemos poner la ip privada, pública, o nombre dns (eso sí debemos tener abierto el puerto 1194 en nuestro router).
  9. 9. Bilal Jebari | Servidor VPN con OPENVPN Página 8 de 9 Ahora vamos a crear el Script de Eric Jodoin $ nano /etc/openvpn/easy-rsa/keys/MakeOVPN.sh Pegamos el Script desde la web del autor. #!/bin/bash # Default Variable Declarations DEFAULT="Default.txt" FILEEXT=".ovpn" CRT=".crt" KEY=".3des.key" CA="ca.crt" TA="ta.key" #Ask for a Client name echo "Please enter an existing Client Name:" read NAME #1st Verify that client’s Public Key Exists if [ ! -f $NAME$CRT ]; then echo "[ERROR]: Client Public Key Certificate not found: $NAME$CRT" exit fi echo "Client’s cert found: $NAME$CR" #Then, verify that there is a private key for that client if [ ! -f $NAME$KEY ]; then echo "[ERROR]: Client 3des Private Key not found: $NAME$KEY" exit fi echo "Client’s Private Key found: $NAME$KEY" #Confirm the CA public key exists if [ ! -f $CA ]; then echo "[ERROR]: CA Public Key not found: $CA" exit fi echo "CA public Key found: $CA" #Confirm the tls-auth ta key file exists if [ ! -f $TA ]; then echo "[ERROR]: tls-auth Key not found: $TA" exit fi echo "tls-auth Private Key found: $TA" #Ready to make a new .opvn file - Start by populating with the default file cat $DEFAULT > $NAME$FILEEXT
  10. 10. Bilal Jebari | Servidor VPN con OPENVPN Página 9 de 9 #Now, append the CA Public Cert echo "<ca>" >> $NAME$FILEEXT cat $CA >> $NAME$FILEEXT echo "</ca>" >> $NAME$FILEEXT #Next append the client Public Cert echo "<cert>" >> $NAME$FILEEXT cat $NAME$CRT | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> $NAME$FILEEXT echo "</cert>" >> $NAME$FILEEXT #Then, append the client Private Key echo "<key>" >> $NAME$FILEEXT cat $NAME$KEY >> $NAME$FILEEXT echo "</key>" >> $NAME$FILEEXT #Finally, append the TA Private Key echo "<tls-auth>" >> $NAME$FILEEXT cat $TA >> $NAME$FILEEXT echo "</tls-auth>" >> $NAME$FILEEXT echo "Done! $NAME$FILEEXT Successfully Created." #Script written by Eric Jodoin No newline at end of file Guardamos los cambios. Ahora asignamos los permisos de ejecución al Script. $ cd /etc/openvpn/easy-rsa/keys $ chmod 700 MakeOVPN.sh Ejecutamos el Script $ ./MakeOVPN.sh Al ejecutar el Script nos pedirá el nombre del usuario creado anteriormente, después nos aparecerá el siguiente mensaje: Done! [usuario].ovpn Successfully Created. Ya podemos copiar el fichero .ovpn del usuario y probar conectarnos a la VPN

×