Saltar al contenido principal.

Instalar y configurar OpenVPN en Debian 8



OpenVPN es un paquete de software que le permite proteger el tráfico de usuarios de la "intercepción" al proporcionar la transmisión de datos cifrados desde el dispositivo del cliente al servidor con OpenVPN instalado. Excelente para usar puntos de acceso wifi públicos donde la información puede ser interceptada por terceros. O en el caso de que su IP esté bloqueada en un sitio determinado y tenga que pasar por alto esta restricción de manera segura.



Además de instalar y configurar OpenVPN en el servidor, debe poder configurar el cliente para acceder desde una computadora donde Windows se usará como sistema operativo.

Usando el administrador de paquetes estándar, instale openvpn.

  # aptitude install openvpn 

Contenido del artículo:

Creación de certificados.

OpenVPN requiere necesariamente la generación de certificados para el servidor y los clientes. Esto es lógico, porque la conexión del cliente al servidor debe estar cifrada.



Navegue a la carpeta openvpn:

  # cd / etc / openvpn 

Generaremos claves utilizando easy-rsa.

Cree una carpeta con archivos de configuración y enlaces a scripts de generación de certificados:


  # make-cadir rsa
 # cd rsa 

Abra el archivo de configuración vars y cambie los parámetros:

  export KEY_COUNTRY = "US"
 export KEY_PROVINCE = "CA"
 export KEY_CITY = "SanFrancisco"
 export KEY_ORG = "Fort-Funston"
 exportar KEY_EMAIL = "me@myhost.mydomain"

KEY_COUNTRY : ingrese el código de país (RU, UA, etc.);
KEY_PROVINCE : este elemento no es relevante si no vives en los Estados Unidos. :) Puedes reemplazar el XX;
KEY_CITY - tu ciudad donde vives;
KEY_EMAIL - tu dirección de correo electrónico.

Y también descomente la línea de exportación KEY_CN, para el valor para el cual especifique el nombre del servidor:

  exportar KEY_CN = "example.com" 

Todas las variables se llenan en latín.

Guarde el archivo y ejecútelo.

  #  vars 

Luego comienza a eliminar certificados antiguos:

  # ./clean-all 

Crear un certificado de raíz:

  # ./build-ca 

Si, al generar el certificado raíz, obtiene el error de error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 198 , agregue la línea al archivo vars :

  exportar KEY_ALTNAMES = "algo" 

Y luego vuelva a ejecutar los comandos anteriores :. vars, ./clean-all, ./build-ca.

El siguiente paso es crear una clave y un certificado de servidor.

  # ./build-key-server server 

Luego crea un certificado y una clave para el cliente:

  # ./build-key cliente 

Tenga en cuenta: para cada cliente debe generar su propio certificado y clave. Solo necesita especificar nombres diferentes (en lugar del cliente) y cambiar las rutas en los archivos de configuración. Al mismo tiempo, puede proteger las claves de los clientes con una contraseña, para esto, use el comando build-key-pass en lugar de build-key.

A continuación, debe crear una clave Diffie-Hellman para usar la confidencialidad directa:

  # ./build-dh 

Y la clave para la autentificación tls:

  # openvpn --genkey --secret /etc/openvpn/ta.key 

Ahora necesita copiar los certificados y las claves del servidor a la carpeta de configuración de OpenVPN:

  # cp keys / ca.crt keys / server.crt keys / server.key keys / dh2048.pem / etc / openvpn / 

Y también les otorga los derechos que les permiten leer y cambiar solo para su dueño.

  # chmod 0600 /etc/openvpn/ca.crt /etc/openvpn/server.crt /etc/openvpn/server.key /etc/openvpn/dh2048.pem /etc/openvpn/ta.key 

Asegúrese de copiar en su computadora, por ejemplo, el escritorio, desde la carpeta de claves , las claves necesarias para conectar al cliente: client.crt , client.key , ca.crt , ta.key .

Esto completa el proceso de preparación del certificado.

Configuración del servidor

En el directorio / usr / share / doc / openvpn / hay un archivo de ejemplo para configurar un servidor Openvpn. Cópielo en el directorio / etc / openvpn / y descomprima:

  cd / etc / openvpn; cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz / etc / openvpn /; gunzip server.conf.gz 

Ahora consideraremos los parámetros necesarios para que funcione openvpn.

El puerto en el que Openvpn aceptará conexiones. Por defecto, 1194. Recomiendo cambiarlo para ocultarlo. Incluso puede disfrazar openvpn bajo un servidor web, especificando el puerto 80.

  puerto 20100 

Registro de rutas a archivos de certificado y clave de servidor.

  ca ca.crt
 cert server.crt
 key server.key 

El camino hacia la clave Diffie-Hellman.

  dh dh2048.pem 

Se pueden especificar ambas rutas relativas al directorio / etc / openvpn (si los archivos están ubicados en él) y absolutos.

Encuentra y descomenta la línea:

  presione "redirect-gateway def1 bypass-dhcp" 

Se necesita para poder acceder a Internet a través del servidor OpenVPN. Si no está sin comentarios, solo las computadoras dentro de la red estarán disponibles.

También debe especificar los servidores DNS para conectar clientes.

  presione "dhcp-option DNS 213.183.57.55"
 presione "dhcp-option DNS 87.98.175.85" 

Dependiendo de la ubicación del servidor, puede recoger otros servidores dns, por ejemplo, en el proyecto OpenNIC .

A continuación, encuentre y descomente el parámetro tls-auth.

  tls-auth ta.key 0 

Atencion En la configuración del cliente, el último dígito de este parámetro debe reemplazarse por 1 - tls-auth ta.key 1 .

Justo debajo en el archivo de configuración sigue la lista de cifrados disponibles. Descomenta el cifrado AES-128-CBC .

  cifrado AES-128-CBC # AES 

Si es necesario, puede reemplazarse con AES-256-CBC . En el archivo de configuración del cliente, el cifrado debe ser idéntico al cifrado del servidor.

También agregue el parámetro auth. De forma predeterminada, las claves sha1 de 160 bits se utilizan para la autenticación, pero el algoritmo sha1 se reconoce como vulnerable. Al especificar el siguiente parámetro, se utilizarán claves SHA512 con una longitud de 512 bits.

  auth SHA512 

Además del parámetro tls-version-min, que determina la versión de tls utilizada. En este caso, la última versión es 1.2. Atencion Network Manager no admite (en el momento de escribir) este parámetro. Por lo tanto, si planea conectarse al servidor VPN a través de Network Manager, este parámetro NO se especifica en la configuración del servidor.

  tls-version-min 1.2 

OpenVPN no debe ejecutarse como root. Por lo tanto, descomenta las líneas:

  usuario nadie
 grupo nogrupo 

No será superfluo activar los registros para OpenVPN. Especialmente, en el primer uso después de la sintonización para buscar errores, etc.

  log /var/log/openvpn.log 

Deje todos los demás parámetros del archivo de configuración /etc/openvpn/server.conf con los valores predeterminados. Esto completa la configuración del servidor OpenVPN.

Activar openvpn con el comando:

  # systemctl enable openvpn 

Y reinicie:

  # service openvpn restart 

También es útil para comprobar el registro de errores.

Redirigir el tráfico a través de OpenVPN

Para poder acceder a Internet a través del servidor openvpn, necesita hacer algo para esto.

1. Configurar sysctl

En la consola, ejecute el comando:

  # sysctl net.ipv4.ip_forward 

Si la salida del comando es igual a net.ipv4.ip_forward = 1 , entonces no hay necesidad de cambiar nada. Si el valor de la variable es 0, la siguiente línea debe agregarse al archivo /etc/sysctl.conf :

  net.ipv4.ip_forward = 1 

Y vuelve a cargar las reglas con el comando:

  # sysctl -p 

2. Configurar iptables

Alternativamente, ejecute los siguientes comandos en la consola:

  # iptables -A FORWARD -i eth0 -o tun0 -m estado --estado ESTABLECIDO, RELACIONADO -j ACEPTAR
 # iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACEPTAR
 # iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 

Por lo tanto, permitiremos el tráfico a través del servidor OpenVPN para la subred 10.8.0.0 dentro de los límites de las conexiones ya establecidas.

Si el cliente openvpn necesita asignar una dirección IP externa específica del servidor, en lugar del último comando de la lista de los anteriores para iptables, debe ejecutar esto:

  -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT - en la fuente 127.0.0.1 

Donde después del parámetro –a-fuente, debe especificar el servidor ip externo.

Cliente OpenVPN en Windows

Comenzando a configurar un cliente Openvpn en Windows. Aquí todo es simple: descargue el cliente desde el sitio oficial, instale, cree el archivo de configuración y ejecútelo.

Debe tenerse en cuenta que es necesario iniciar openvpn en Windows con los derechos del administrador si el control de cuentas está activo.

Si no cambió la ruta de instalación, los ejemplos de los archivos de configuración en su PC se encuentran en el directorio C: \ Archivos de programa \ OpenVPN \ sample-config . Copie el archivo client.ovpn desde aquí y colóquelo en el directorio C: \ Archivos de programa \ OpenVPN \ config .

¿Recuerdas los certificados creados para el cliente? También deben descargarse del servidor y copiarse en este directorio.

Abra el archivo de configuración client.ovpn y encuentre el parámetro remoto my-server-1 1194 . En lugar de mi servidor, especifique la ip o el nombre de dominio de su servidor. Luego el puerto que cambiamos antes. Como resultado, la línea puede verse así:

  control remoto 192.168.0.1 20100 

A continuación, debe especificar la ruta a los certificados que generó en el servidor. Para cada cliente, se crea una clave con un nombre único, que debe indicarse a continuación, en lugar de cliente .

  ca ca.crt
 cert client.crt
 clave cliente.clave 

También debe descomentar el parámetro que especifica la ruta a la clave tls.

  tls-auth ta.key 1 

Anteriormente ya se había dicho que el último dígito en el servidor debería ser 0, en el cliente - 1.

Y los últimos parámetros son los cifrados que instaló en el servidor.

  cifrado AES-128-CBC
 auth SHA512
 tls-version-min 1.2 

Esto es todo lo que se requiere para configurar el cliente. Intente ejecutar el cliente OpenVPN y conéctese a su servidor. La información de conexión necesaria se mostrará en la ventana openvpn gui.

OpenVPN con NetworkManager

Instale la interfaz gráfica para el administrador de red.

  # aptitude install network-manager-openvpn-gnome 

Y reiniciar.

  # servicio red-administrador reinicio 

Copiamos los certificados generados para el cliente en una carpeta arbitraria en la computadora. Por ejemplo, en /home/user/.openvpn/.

Haga clic con el botón derecho del mouse en el ícono del administrador de red, seleccione el elemento "cambiar conexiones", agregue una nueva conexión del tipo "OpenVPN".

добавить новое подключение network manager

Especificar:

  • Nombre de conexion
  • Gateway (dominio o servidor ip)
  • Tipo: Certificados

El certificado de usuario es un certificado que generamos al principio para el cliente (client.crt).
Certificado de CA - archivo ca.crt.
La clave privada es la clave del cliente (client.key).

openvpn новое соединение

Haga clic en el botón "Avanzado". En la ventana que se abre, en la pestaña "General" tendrá que cambiar algunos elementos.

  • Utilice un puerto de puerta de enlace diferente (si especificó un no estándar al configurar el servidor)
  • Usa compresión lzo

Cambie a la pestaña "Seguridad". Seleccione el cifrado, como en la configuración del servidor. Como valor del parámetro de autenticación hmac, debe especificar un algoritmo, como en el valor de autenticación del servidor. En el artículo elegimos SHA512.

Abra la pestaña Autenticación TLS y marque los siguientes elementos:

  • Verificar el par ...
  • Usar autenticación TLS adicional

Para el último parámetro, especifique la ruta al archivo ta.key y seleccione 1. como la dirección de la clave en la lista desplegable. Al igual que el archivo de configuración para Windows.

Guarde la conexión e intente conectarse. :)

Por si acaso, observamos que NM escribe cuando se conecta al registro del sistema:

  # tail -f / var / log / syslog 


¿Cómo calificas el artículo?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 ( 7 calificaciones, promedio: 5.00 de 5)
Cargando ...

” 14 Comentarios “ Instalando y configurando OpenVPN en Debian 8

    1. Así que necesitas revisar los registros de los clientes. OpenVPN GUI tal registro necesariamente lleva. Haga clic derecho -> Mostrar registro.

      Tal vez falta un artículo en las instrucciones ...

  1. Gracias, pero resultó que era necesario hacerlo #openvpn /opt/vp/vp.conf y la aplicación conectó el archivo de configuración. Los registros fueron. Miré todo e hice que la VPN fuera un trabajador.

    El manual consciente del autor te pregunta. Cómo hacer un túnel entre el servidor en Debian y Mikrotikom. Conecte su red local. 2 apartamentos.

    1. En mi teléfono inteligente Android, utilizo el cliente oficial del desarrollador Openvpn - "Openvpn connect" https://play.google.com/store/apps/details?id=net.openvpn.openvpn

      Es bastante fácil de configurar. Los archivos generados para el cliente deben cargarse en cualquier carpeta en la unidad flash del teléfono. Luego ejecute Openvpn Connect, seleccione "Importar" en el menú, luego "Importar perfil desde la tarjeta SD". Se abrirá el administrador de archivos, donde debe seleccionar el archivo * .ovpn, haga clic en el botón "Seleccionar". En la confirmación de la importación exitosa, el mensaje "Perfil importado" se muestra en la pantalla.

      Para conectarse, presione el botón "Conectar". Eso es todo :)

      No sé de otros clientes, pero este funciona muy bien.

      PD: Si planea conectarse simultáneamente desde una computadora y desde un teléfono, para este último debe generar su propia clave y certificado.

  2. actualizacion
    La cláusula 2 decidió instalar los derechos de la clave client.key (aparentemente se la pasó por alto primero). + fue necesario establecer el tipo de conexión TCP explícitamente y especificar el tipo de adaptador - TAP / TUN

  3. Configuré todo de acuerdo con las instrucciones, pero hay un problema:
    El cliente se conecta al servidor, pero no hay Internet. El cliente hace ping tanto al servidor VPN 10.8.0.1 como a la ip del servidor dedicado. Desde el propio servidor, los sitios externos responden sin problemas. Resulta que el perro está enterrado en algún lugar de IPtables y ip.frwarding. Algún pensamiento? ¿Puede eso aconsejar rápidamente que tratar con este bosque?

    1. Es necesario prescribir otras reglas de enrutamiento.
      iptables -t nat -A POSTROUTING -o venet0 -j SNAT: a IP_ADDRESS_Your_SERVER
      iptables -A FORWARD -i venet0 -o tun0 -m estado —Estado RELACIONADO, ESTABLECIDO -j ACEPTAR
      iptables -A FORWARD -i tun0 -o venet0 -j ACEPTAR

Añadir un comentario

Su correo electrónico no será publicado.