Ingresar  \/ 
x
 Use Facebook account  Use Google account  Use Microsoft account  Use LinkedIn account
o
x

Configurar un Servidor OpenVPN en Debían 8

configurar un servidor openvpn en debian 8

Introducción

Configurar un Servidor OpenVPN en Debían 8. OpenVPN es una aplicación VPN de código abierto que le permite crear y unirse a una red privada de forma segura a través de Internet público. En resumen, esto permite al usuario final enmascarar las conexiones y navegar de forma más segura por una red que no es de confianza.

Dicho esto, en este tutorial te mostramos cómo configurar OpenVPN, una solución VPN de Capa de sockets seguros (SSL) de código abierto, en Debian 8.

Prerrequisitos

Este tutorial asume que tienes lo siguiente:

  • Una nueva versión de Debian 8.1
  • Un usuario con privilegios root
  • Opcional. Una vez completo este tutorial, use una cuenta no root habilitada para sudo para mantenimiento general; puede configurar uno siguiendo los pasos 2 y 3 del tutorial Configuración inicial del servidor Debían 8

 

Paso 1. Instalar OpenVPN

Antes de instalar cualquier paquete, actualice el índice del paquete apt.

apt-get update

Ahora, podemos instalar el servidor OpenVPN junto con easy-RSA para el cifrado.

apt-get install openvpn easy-rsa

 

Paso 2. Configurar OpenVPN

El archivo de configuración del servidor VPN de ejemplo debe extraerse a /etc/openvpn para que podamos incorporarlo a nuestra configuración. Esto se puede hacer con un comando:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

Una vez extraído, abra el archivo de configuración del servidor usando nano o su editor de texto favorito.

nano /etc/openvpn/server.conf

En este archivo, necesitaremos hacer cuatro cambios (cada uno se explicará en detalle):

  1. Servidor seguro con cifrado de nivel superior
  2. Reenviar tráfico web a destino
  3. Evite que las solicitudes DNS se filtren fuera de la conexión VPN
  4. Permisos de configuración

Primero, doblaremos la longitud de la clave RSA utilizada al generar las claves del servidor y del cliente. Después el bloque de comentario principal y varios fragmentos más, ahora busca la línea que dice:

/etc/openvpn/server.conf
# Diffie hellman parameters.
# Generate your own with:
#   openssl dhparam -out dh1024.pem 1024
# Substitute 2048 for 1024 if you are using
# 2048 bit keys.
dh dh1024.pem

Cambie dh1024.pem a dh2048.pem , de modo que la línea ahora lea:

/etc/openvpn/server.conf
dh  dh2048.pem

En segundo lugar, nos aseguraremos de redirigir todo el tráfico a la ubicación correcta. Aún en server.conf , desplace más bloques de comentarios y busque la siguiente sección:

/etc/openvpn/server.conf
# If enabled, this directive will configure
# all clients to redirect their default
# network gateway through the VPN, causing
# all IP traffic such as web browsing and
# and DNS lookups to go through the VPN
# (The OpenVPN server machine may need to NAT
# or bridge the TUN/TAP interface to the internet
# in order for this to work properly).
;push "redirect-gateway def1 bypass-dhcp"

Descomprimir push "redirect-gateway def1 bypass-dhcp" para que el servidor VPN pase el tráfico web de los clientes a su destino. Debería verse así cuando haya terminado:

/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"

En tercer lugar, le diremos al servidor que use OpenDNS para la resolución de DNS cuando sea posible. Esto puede ayudar a evitar que las solicitudes DNS se filtren fuera de la conexión VPN. Inmediatamente después del bloque previamente modificado, edite lo siguiente:

/etc/openvpn/server.conf
# Certain Windows-specific network settings
# can be pushed to clients, such as DNS
# or WINS server addresses.  CAVEAT:
# http://openvpn.net/faq.html#dhcpcaveats
# The addresses below refer to the public
# DNS servers provided by opendns.com.
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"

Descomprimir push "dhcp-option DNS 208.67.222.222" y push "dhcp-option DNS 208.67.220.220" . Debería verse así cuando haya terminado:

/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

En cuarto lugar, definiremos los permisos en server.conf :

/etc/openvpn/server.conf
# You can uncomment this out on
# non-Windows systems.
;user nobody
;group nogroup

Descomente tanto user nobody como group nogroup . Debería verse así cuando haya terminado:

/etc/openvpn/server.conf
user nobody
group nogroup

De forma predeterminada, OpenVPN se ejecuta como el usuario root y, por lo tanto, tiene privilegios y acceso de root completo al sistema. En su lugar, limitaremos OpenVPN al usuario nobody y group nogroup . Este es un usuario sin privilegios, sin capacidades de inicio de sesión predeterminadas, a menudo reservadas para ejecutar aplicaciones que no son de confianza, como servidores orientados a la web.

Ahora guarde sus cambios y salga.

 

Paso 3. Habilitar el Reenvío de Paquetes

En esta sección, le diremos al núcleo del servidor que reenvíe el tráfico de los servicios del cliente a Internet. De lo contrario, el tráfico se detendrá en el servidor.

Habilite el reenvío de paquetes durante el tiempo de ejecución ingresando este comando:

echo 1 > /proc/sys/net/ipv4/ip_forward

A continuación, tendremos que hacer que esto sea permanente para que esta configuración persista después de reiniciar el servidor. Abra el archivo de configuración sysctl usando nano o su editor de texto favorito.

nano /etc/sysctl.conf

Cerca de la parte superior del archivo sysctl , verá:

/etc/openvpn/server.conf
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Uncomment net.ipv4.ip_forward. Debería verse así cuando haya terminado:

/etc/openvpn/server.conf
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Guarde sus cambios y salga.

 

Paso 4. Instalar y Configurar UFW

UFW es un front-end para IPTables. Solo necesitamos hacer algunas reglas y ediciones de configuración. Luego, activaremos el firewall. Como referencia para más usos de UFW, consulte Cómo configurar un Firewall con UFW en Ubuntu y Debìan Cloud Server

Primero, instale el paquete ufw .

apt-get install ufw

Segundo, configure UFW para permitir SSH:

ufw allow ssh

Este tutorial usará OpenVPN sobre UDP, por lo que UFW también debe permitir el tráfico UDP a través del puerto 1194 .

ufw allow 1194/udp

También se debe establecer la política de reenvío de UFW. Lo haremos en el archivo de configuración principal.

nano /etc/default/ufw

Busque la siguiente línea:

/etc/default/ufw
DEFAULT_FORWARD_POLICY="DROP"

Esto debe cambiarse de DROP a ACCEPT . Debería verse así cuando haya terminado:

/etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

Guardar y Salir

A continuación, agregaremos reglas UFW adicionales para la traducción de direcciones de red y el enmascaramiento de IP de clientes conectados.

nano /etc/ufw/before.rules

A continuación, agregue el área en rojo para las REGLAS DE OPENVPN :

/etc/ufw/before.rules
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

# Don't delete these required lines, otherwise there will be errors
*filter

Guardar y Salir

Con los cambios realizados en UFW, ahora podemos habilitarlo. Ingrese en el símbolo del sistema:

ufw enable

Habilitar UFW devolverá el siguiente mensaje:

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

Responda y . El resultado será este resultado:

Firewall is active and enabled on system startup

Para verificar las reglas de firewall primario de UFW:

ufw status

El comando de estado debe devolver estas entradas:

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
1194/udp                   ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
1194/udp (v6)              ALLOW       Anywhere (v6)

 

Paso 5. Configurar y Crear la Autoridad de Certificación

OpenVPN usa certificados para cifrar el tráfico.

En esta sección, configuraremos nuestra propia Autoridad de certificación (CA) en dos pasos: (1) variables de configuración y (2) generar la CA.

OpenVPN admite la autenticación bidireccional basada en certificados, lo que significa que el cliente debe autenticar el certificado del servidor y el servidor debe autenticar el certificado del cliente antes de que se establezca la confianza mutua. Utilizaremos los scripts de Easy RSA para hacer esto.

Primera copia sobre los scripts de generación Easy-RSA.

cp -r /usr/share/easy-rsa/ /etc/openvpn

Luego, crea un directorio para albergar la clave.

mkdir /etc/openvpn/easy-rsa/keys

A continuación, estableceremos los parámetros para nuestro certificado. Abra el archivo de variables usando nano o su editor de texto favorito.

nano /etc/openvpn/easy-rsa/vars

Las siguientes variables marcadas en rojo deben cambiarse según su preferencia.

/etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="US"
export KEY_PROVINCE="TX"
export KEY_CITY="Dallas"
export KEY_ORG="My Company Name"
export KEY_EMAIL="Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo."
export KEY_OU="MYOrganizationalUnit"

En el mismo archivo vars , también edite esta línea que se muestra a continuación. Para simplificar, usaremos el server como nombre clave. Si desea utilizar un nombre diferente, también deberá actualizar los archivos de configuración de OpenVPN que hacen referencia a server.key y server.crt .

A continuación, en el mismo archivo, especificaremos el certificado correcto. Busque la línea, justo después del bloque modificado previamente que lee

/etc/openvpn/easy-rsa/vars
# X509 Subject Field
export KEY_NAME="EasyRSA"

Cambiar KEY_NAME valor por defecto 's de EasyRSA al nombre del servidor deseado. Este tutorial usará el server nombres.

/etc/openvpn/easy-rsa/vars
# X509 Subject Field
export KEY_NAME="server"

Ahora Guarda y Salga...

A continuación, generaremos los parámetros de Diffie-Helman utilizando una herramienta OpenSSL dhparam llamada dhparam ; Esto puede tomar varios minutos.

El indicador -out especifica dónde guardar los nuevos parámetros.

openssl dhparam -out /etc/openvpn/dh2048.pem 2048

Nuestro certificado ahora se genera y es hora de generar una clave.

Primero, easy-rsa directorio easy-rsa .

cd /etc/openvpn/easy-rsa

Ahora, podemos comenzar a configurar la CA en sí. Primero, inicialice la infraestructura de clave pública (PKI).

Presta atención al punto (.) Y al espacio delante del comando ./vars . Eso significa el directorio de trabajo actual (fuente).

. ./vars

La siguiente advertencia será impresa. No se preocupe, ya que el directorio especificado en la advertencia está vacío. NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys.

A continuación, borraremos todas las otras claves que puedan interferir con nuestra instalación.

./clean-all

Finalmente, construiremos la CA usando un comando OpenSSL. Este comando le solicitará una confirmación de las variables de "Nombre distinguido" que se ingresaron anteriormente. Presione ENTER para aceptar los valores existentes.

./build-ca

Presione ENTER para pasar a través de cada aviso ya que acaba de establecer sus valores en el archivo vars .

La autoridad de certificación ahora está configurada.

 

Paso 6. Genera un Certificado y Clave para el Servidor

En esta sección, configuraremos e iniciaremos nuestro servidor OpenVPN.

Primero, siga trabajando desde /etc/openvpn/easy-rsa , construya su clave con el nombre del servidor. Esto se especificó anteriormente como KEY_NAME en su archivo de configuración. El valor predeterminado para este tutorial es server .

./build-key-server server

Nuevamente, el resultado pedirá la confirmación del Nombre Distinguido. Presione ENTER para aceptar los valores predeterminados definidos. Esta vez, habrá dos indicaciones adicionales.

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Ambos deben dejarse en blanco, así que simplemente presione ENTER para pasar a través de cada uno.

Dos consultas adicionales al final requieren una respuesta positiva ( y ):

Sign the certificate? [y/n]
1 out of 1 certificate requests certified, commit? [y/n]

A continuación, se le solicitará lo siguiente y verás que tu trabajo fue todo un exito.

Output
Write out database with 1 new entries Data Base Updated

 

Paso 7. Mueva los Certificados y Claves del Servidor

Ahora copiaremos el certificado y la clave a /etc/openvpn , ya que OpenVPN buscará en ese directorio la CA, el certificado y la clave del servidor.

cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn

Puede verificar que la copia fue exitosa con:

ls /etc/openvpn

Debería ver el certificado y los archivos de claves para el servidor.

En este punto, el servidor OpenVPN está listo para funcionar. Comience y verifique el estado.

service openvpn start
  • service openvpn status
  • El comando de estado devolverá algo con el siguiente efecto:

    Output
    * openvpn.service - OpenVPN service Loaded: loaded (/lib/systemd/system/openvpn.service; enabled) Active: active (exited) since Thu 2015-06-25 02:20:18 EDT; 9s ago Process: 2505 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 2505 (code=exited, status=0/SUCCESS)

    Lo más importante, a partir del resultado anterior, debe encontrar Active: active (exited) since... lugar de Active: inactive (dead) since...

    Su servidor OpenVPN ahora está operativo. Si el mensaje de estado indica que la VPN no se está ejecutando, eche un vistazo al archivo /var/log/syslog para /var/log/syslog errores tales como:

    Options error: --key fails with 'server.key': No such file or directory
    

    Ese error indica que server.key no se ha copiado a /etc/openvpn correctamente. Vuelve a copiar el archivo y vuelve a intentarlo.

     

    Paso 8. Generar Certificados y Claves para los Usuarios

    Hasta ahora, hemos instalado y configurado el servidor OpenVPN, creado una Autoridad de certificación y creado el certificado y la clave del servidor. En este paso, usamos la CA del servidor para generar certificados y claves para cada dispositivo cliente que se conectará a la VPN.

    Edificio clave y certificado

    Es ideal para cada cliente que se conecta a la VPN tener su propio certificado y clave únicos. Esto es preferible a generar un certificado general y una clave para usar entre todos los dispositivos del cliente.

    Nota. De forma predeterminada, OpenVPN no permite conexiones simultáneas al servidor desde clientes que usan el mismo certificado y clave. (See duplicate-cn in /etc/openvpn/server.conf.)

    Para crear credenciales de autenticación separadas para cada dispositivo que desee conectar a la VPN, debe completar este paso para cada dispositivo, pero cambie el nombre de client1 continuación a algo diferente, como client2 o iphone2 . Con credenciales separadas por dispositivo, pueden ser desactivadas posteriormente en el servidor individualmente, de ser necesario. Los ejemplos restantes en este tutorial utilizarán client1 como el nombre de nuestro dispositivo cliente de ejemplo.

    Como hicimos con la clave del servidor, ahora construimos uno para nuestro ejemplo de client1 . Deberías seguir trabajando en /etc/openvpn/easy-rsa .

    ./build-key client1
    

    Una vez más, se le pedirá que cambie o confirme las variables de Nombre distinguido y estas dos indicaciones que deben dejarse en blanco. Presione ENTER para aceptar los valores predeterminados.

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    

    Como antes, estas dos confirmaciones al final del proceso de compilación requieren una respuesta ( y ):

    Sign the certificate? [y/n]
    1 out of 1 certificate requests certified, commit? [y/n]
    

    A continuación, recibirá la siguiente salida, confirmando la construcción exitosa de la clave.

    Write out database with 1 new entries.
    Data Base Updated
    

    Luego, copiaremos la clave generada en el directorio de keys Easy-RSA que creamos anteriormente. Tenga en cuenta que cambiamos la extensión de .conf a .ovpn . Esto es para coincidir con la convención.

    cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn
    

    Puede repetir esta sección nuevamente para cada cliente, reemplazando client1 con el nombre del cliente apropiado en todo momento.

    Nota: El nombre de su client.ovpn duplicado no necesita estar relacionado con el dispositivo cliente. La aplicación OpenVPN del lado del cliente usará el nombre de archivo como un identificador para la conexión VPN. En su lugar, debe duplicar client.ovpn a lo que desee que sea la etiqueta de nombre de la VPN en su sistema operativo. Por ejemplo: work.ovpn se identificará como trabajo , school.ovpn como escuela , etc.

    Necesitamos modificar cada archivo de cliente para incluir la dirección IP del servidor OpenVPN para que sepa a qué conectarse. Abra client.ovpn usando nano o su editor de texto favorito.

    nano /etc/openvpn/easy-rsa/keys/client.ovpn
    

    Primero, edite la línea comenzando con el remote . Cambie my-server-1 a your_server_ip .

    /etc/openvpn/easy-rsa/keys/client.ovpn
    # The hostname/IP and port of the server.
    # You can have multiple remote entries
    # to load balance between the servers.
    remote your_server_ip 1194
    

    A continuación, busque el área que se muestra a continuación y elimine user nobody comentario del user nobody y group nogroup , tal como lo hicimos en server.conf en el Paso 1. Nota: Esto no se aplica a Windows, así que puede omitirlo. Debería verse así cuando haya terminado:

    /etc/openvpn/easy-rsa/keys/client.ovpn
    # Downgrade privileges after initialization (non-Windows only)
    user nobody
    group no group
    

    Transferir certificados y claves a dispositivos de cliente

    Recuerde por los pasos anteriores que creamos los certificados y claves del cliente, y que están almacenados en el servidor OpenVPN en el directorio /etc/openvpn/easy-rsa/keys .

    Para cada cliente, debemos transferir el certificado del cliente, la clave y los archivos de la plantilla de perfil a una carpeta en nuestra computadora local u otro dispositivo cliente.

    En este ejemplo, nuestro dispositivo client1 requiere su certificado y clave, ubicados en el servidor en:

    • /etc/openvpn/easy-rsa/keys/client1.crt
    • /etc/openvpn/easy-rsa/keys/client1.key

    Los archivos ca.crt y client.ovpn son los mismos para todos los clientes. Descargue estos dos archivos también; Tenga en cuenta que el archivo ca.crt está en un directorio diferente al de los demás.

    • /etc/openvpn/easy-rsa/keys/client.ovpn
    • /etc/openvpn/ca.crt

    Si bien las aplicaciones exactas utilizadas para realizar esta transferencia dependerán de su elección y del sistema operativo del dispositivo, desea que la aplicación use SFTP (protocolo de transferencia de archivos SSH) o SCP (Secure Copy) en el back-end. Esto transportará los archivos de autenticación VPN de su cliente a través de una conexión cifrada.

    Aquí hay un ejemplo de comando SCP usando nuestro ejemplo client1 . Coloca el archivo client1.key en el directorio de descargas en la computadora local.

    scp root@your-server-ip:/etc/openvpn/easy-rsa/keys/client1.key Downloads/
    

    Aquí hay varias herramientas y tutoriales para transferir archivos de forma segura desde el servidor a una computadora local:

    Al final de esta sección, asegúrese de tener estos cuatro archivos en su dispositivo cliente :

    • `client1.crt`
    • `client1.key`
    • client.ovpn
    • ca.crt

     

    Paso 9. Creación de un Perfil OpenVPN Unificado para Dispositivos Cliente

    Existen varios métodos para administrar los archivos del cliente, pero el más fácil usa un perfil unificado . Esto se crea modificando el archivo de plantilla client.ovpn para incluir la Autoridad de certificación del servidor y el certificado del cliente y su clave. Una vez fusionada, solo se debe importar el único perfil client.ovpn en la aplicación OpenVPN del cliente.

    El área dada a continuación necesita las tres líneas que se muestran como comentadas, de modo que podemos incluir el certificado y la clave directamente en el archivo client.ovpn . Ahora debería verse así cuando haya terminado:

    /etc/openvpn/easy-rsa/keys/client.ovpn
    # SSL/TLS parms.
    # . . .
    ;ca ca.crt
    ;cert client.crt
    ;key client.key
    

    Guarde los cambios y salga. Añadiremos los certificados por código.

    Primero, agregue la autoridad de certificación.

    echo '<ca>' >> /etc/openvpn/easy-rsa/keys/client.ovpn
    
  • cat /etc/openvpn/ca.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn
  • echo '</ca>' >> /etc/openvpn/easy-rsa/keys/client.ovpn
  • Segundo, agrega el certificado.

    echo '<cert>' >> /etc/openvpn/easy-rsa/keys/client.ovpn
    
  • cat /etc/openvpn/easy-rsa/keys/client1.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn
  • echo '</cert>' >> /etc/openvpn/easy-rsa/keys/client.ovpn
  • Tercero y finalmente, agrega Key

    echo '<key>' >> /etc/openvpn/easy-rsa/keys/client.ovpn
    
  • cat /etc/openvpn/easy-rsa/keys/client1.key >> /etc/openvpn/easy-rsa/keys/client.ovpn
  • echo '</key>' >> /etc/openvpn/easy-rsa/keys/client.ovpn
  • Ahora tenemos un perfil de cliente unificado. Usando scp , puede copiar el archivo client.ovpn a su segundo sistema.

     

    Paso 10. Instalación del perfil del cliente

    Varias plataformas tienen aplicaciones más fáciles de usar para conectarse a este servidor OpenVPN. Para obtener instrucciones específicas de la plataforma, consulte el Paso 5 de este tutorial .

    Conclusión

    ¡Estupendo! Ahora tiene un servidor abierto de OpenVPN y un archivo de cliente en Debían

    Desde su cliente OpenVPN, puede probar la conexión usando Google para revelar su IP pública . En el cliente, cárguelo una vez antes de iniciar la conexión OpenVPN y una vez después. La dirección IP debería cambiar.

    Fuente. Artículo traducido y con muy ligeras modificaciones de: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian

    Sobre el Autor
    Pipe Peña
    Author: Pipe Peña
    Soy un loco enamorado de la vida. Licenciado en Ciencias Sociales y Humanas, amante de la informática y la astrofísica. Me gusta crear e investigar proyectos que enriquezcan la construcción y desarrollo del conocimiento individual y colectivo. Me encantan los videojuegos, el cine, la química, matemáticas, la física cuántica y la música, en donde actualmente soy compositor. Me baso en la idea que toma Baruch Spinoza sobre Dios.

    ImprimirCorreo electrónico

    Donaciones - Tutoriales y VideoTutoriales Fututel

    Dona si crees que lo merecemos. Ésto nos ayudará para seguir publicando y hacerte la vida más fácil :)

    Cantidad: