Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
Conexión Segura a un VPS mediante una VPN SSL
Introducción:
Para asegurar la administración remota de un servidor privado virtual (Virtual Private
Server al cual llamaremos VPS de ahora en adelante) o una instancia virtual en la nube,
es recomendable establecer una conexión encriptada primero. Esto lo podemos hacer
mediante una VPN o consola SSH. La ventaja de una conexión mediante VPN es que
la misma dirige todo el tráfico mediante el túnel encriptado mientras que la conexión SSH
solamente lo haría por medio de la creación de túneles.
Al utilizar una conexión mediante una VPN SSL como OpenVPN estamos utilizando
solamente un puerto TCP, el 443, el cual es compartido por los servicios Web del
servidor.
Para efectos de este documento estaremos usando un servidor VPS con acceso de root
y les estaremos dando las siguientes recomendaciones para una conexión lo más segura
posible.
El sistema operativo utilizado en el VPS es el Ubuntu 16.04 LTS, y para las conexiones
estaremos usando el cliente SSH para SmartTTY http://smartty.sysprogs.com/ para
sistemas operativos Windows.
En este artículo se asume que el lector conoce como conectarse remotamente al servidor
VPS mediante SSH por lo que obviamos esa parte.
Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
1. Actualización del sistema operativo Ubuntu:
Para actualizar el sistema operativo Ubuntu debemos ejecutar los siguientes
comandos
Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
Este comando actualiza la lista de paquetes disponibles y sus versiones, pero no
instala o actualiza ningún paquete. Esta lista la coge de los servidores con
repositorios que tenemos definidos en el archivo /etc/apt/sources.list.
Después de ejecutado el comando anterior, se ejecuta el siguiente comando
Este comando instala las nuevas versiones los paquetes disponibles en la lista
definida en /etc/apt/sources.list.
2. Cambiar la clave del usuario root y cambiar el usuario root por un usuario con
menos privilegios para el acceso remoto.
Para cambiar la clave del usuario root debemos ejecutar
Aquí debemos introducir la clave en dos ocasiones para que sea almacenada
correctamente.
Después podemos agregar el usuario que estaremos usando en lugar de root para
conectarnos al servidor.
Con este comando agregamos al usuario, y el mismo comando nos pedirá
información del usuario como la clave y algunos datos del mismo. Adicionalmente
creara un grupo y carpeta de usuario.
Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
3. Modificar la configuración del archivo /etc/ssh/sshd_config para evitar el
acceso por root y cambiar el puerto de conexión.
Para esto entramos a editar el archivo, en nuestro caso usaremos el editor nano.
Dentro del archivo de configuración recomendamos cambiar las siguientes opciones:
Port: es el puerto TCP al cual se conectara remotamente
ListenAddress: la dirección IP que tendrá abierto el puerto definido anteriormente y
que permitirá conexiones. Debe ser un IP activo del VPS. En este caso
recomendamos un IP privado del rango de la VPN que se creara posteriormente. Por
ahora lo dejaremos en el defecto 0.0.0.0 que indica que puede recibir conexiones de
cualquier dirección IP. Después de configurada la VPN podemos cambiar esta
dirección por una privada.
Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
La siguiente opción a cambiar es la siguiente:
PermitRootLogin: originalmente esta en Yes, cambiar a no.
Agregar la línea AllowUsers y colocar al lado el nombre del usuario que se creó en
el segundo paso.
Después de realizados los cambios hay que salvar la configuración.
4. Instalación de la VPN SSL (OpenVPN)
Para la conexión remota a la administración usaremos una VPN SSL. Esto permite
utilizar el puerto 443 para la conexión desde el Internet. Estaremos usando el
producto OpenVPN Access Server que está basado en OpenVPN. Este paquete
contiene conexiones para dos usuarios lo que sería suficiente para la administración.
Para instalar este paquete en Ubuntu 16.04 debemos descargar el instalador genérico
para DEBIAN del sitio https://openvpn.net/index.php/access-server/download-
openvpn-as-sw/113.html?osfamily=Ubuntu
Para instalar nos ubicamos en la carpeta /tmp y ejecutamos el siguiente comando
Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
Esto descargara la aplicación desde Internet. El nombre debe corresponder a la
última versión disponible en el repositorio.
Para instalar la aplicación se ejecuta el siguiente comando:
El último comando que se debe ejecutar es para asignar una clave segura al usuario
openvpn que es el administrador por defecto de la VPN.
Para acceder a la administración del VPN se utiliza el siguiente URL:
https://direcion-ip-publica:943/admin
Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
La administración del OpenVPN está por ahora fuera de este documento por lo cual
instamos al lector a buscar referencias sobre cómo crear usuarios. Posteriormente
haremos un artículo detallado sobre el mismo. Como referencia dejamos el enlace
oficial del sitio web de OpenVPN.
https://openvpn.net/index.php/access-server/docs.html?id=229 .
Para descargar el cliente OpenVPN se entra a la dirección pública
Se coloca el usuario y la clave y se escoge la opción Login de la lista desplegable y
se presiona GO.
Después de entrar podrá encontrar la página con todos los clientes disponibles que
puede usar para conectarse.
Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
La licencia gratuita permite hasta dos conexiones simultáneas al servidor VPN.
5. Cambiar Dirección de servicio SSH y ajuste del Firewall interno
Después de una prueba exitosa de conexión vienen los pasos más importantes para
garantizar que no podrán realizarse más conexiones desde cualquier dirección IP al
servidor SSH, el primero consiste en identificar las direcciones IP privadas de la VPN.
Para esto podemos ejecutar el siguiente comando:
IFCONFIG: muestra las interfaces de red activas del sistema operativo y sus
correspondientes direcciones IP.
Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
Una vez identificada la IP Privada del servidor que usaremos para el SSH, hay que
modificar el archivo de configuración del servidor SSH.
Para esto usamos el siguiente comando:
Una vez dentro del archivo buscamos dentro la línea de opciones la siguiente:
ListenAddress: este comando le dice al servidor SSH en qué dirección estará
escuchando activamente las conexiones.
Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
Se modifica la línea colocando la dirección privada del servidor, en el ejemplo es la
dirección 172.27.236.1
Hay que recordar que al reiniciar el servicio SSH o al servidor este solamente estará
activo para las conexiones privadas, es por eso que es necesario probar primero que
puede conectarse mediante la VPN. Para verificar que tenemos acceso, hacemos
PING a la dirección privada después de conectarnos por medio de la VPN.
Si tenemos respuesta es que podemos conectarnos.
El siguiente paso es reiniciar el servidor, lo cual debe variar dependiendo de su
proveedor de servicio.
6. Prueba de la conexión mediante la VPN:
Después de creada la VPN, probada la conexión y realizados los ajustes podemos
probar que el SSH solamente funciona para conexiones internas. Para esto
colocamos en nuestro cliente SSH preferido los parámetros del servidor:
En nuestro ejemplo usaremos Putty
Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
Como prueba colocamos el nombre
del host o la dirección IP pública y
el puerto SSH activo.
Si nuestra configuración es correcta no
podremos conectarnos al servidor, porque
solamente estará disponible para conexiones
por las direcciones IP privadas, que solamente
se pueden acceder por la VPN.
Colocamos la dirección IP en el navegador para
la conexión al servidor VPN, en nuestro caso
sería así:
https://158.69.223.218/?src=connect
Y nos debe mostrar el dialogo de conexión.
Después de conectados al VPN podemos
probar nuevamente la conexión con la dirección
IP de la red privada, en nuestro caso el
172.27.236.1 y el puerto 222 para el SSH.
Como podemos ver, el servidor SSH está
esperando el usuario y clave para ser utilizados.
En una próxima entrega veremos cómo agregar un doble factor de autenticación
utilizando una aplicación de celular desarrollada por Google. Se trata de una medida de
Autor: José Antonio Carrasco Moreno – joseacarras@josecarrasco.com
seguridad extra que requiere de un código que tiene una validez de unos segundos hasta
volver a generar otro adicionalmente a la contraseña.

Conexión Segura a un VPS mediante una VPN SSL

  • 1.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com Conexión Segura a un VPS mediante una VPN SSL Introducción: Para asegurar la administración remota de un servidor privado virtual (Virtual Private Server al cual llamaremos VPS de ahora en adelante) o una instancia virtual en la nube, es recomendable establecer una conexión encriptada primero. Esto lo podemos hacer mediante una VPN o consola SSH. La ventaja de una conexión mediante VPN es que la misma dirige todo el tráfico mediante el túnel encriptado mientras que la conexión SSH solamente lo haría por medio de la creación de túneles. Al utilizar una conexión mediante una VPN SSL como OpenVPN estamos utilizando solamente un puerto TCP, el 443, el cual es compartido por los servicios Web del servidor. Para efectos de este documento estaremos usando un servidor VPS con acceso de root y les estaremos dando las siguientes recomendaciones para una conexión lo más segura posible. El sistema operativo utilizado en el VPS es el Ubuntu 16.04 LTS, y para las conexiones estaremos usando el cliente SSH para SmartTTY http://smartty.sysprogs.com/ para sistemas operativos Windows. En este artículo se asume que el lector conoce como conectarse remotamente al servidor VPS mediante SSH por lo que obviamos esa parte.
  • 2.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com 1. Actualización del sistema operativo Ubuntu: Para actualizar el sistema operativo Ubuntu debemos ejecutar los siguientes comandos
  • 3.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com Este comando actualiza la lista de paquetes disponibles y sus versiones, pero no instala o actualiza ningún paquete. Esta lista la coge de los servidores con repositorios que tenemos definidos en el archivo /etc/apt/sources.list. Después de ejecutado el comando anterior, se ejecuta el siguiente comando Este comando instala las nuevas versiones los paquetes disponibles en la lista definida en /etc/apt/sources.list. 2. Cambiar la clave del usuario root y cambiar el usuario root por un usuario con menos privilegios para el acceso remoto. Para cambiar la clave del usuario root debemos ejecutar Aquí debemos introducir la clave en dos ocasiones para que sea almacenada correctamente. Después podemos agregar el usuario que estaremos usando en lugar de root para conectarnos al servidor. Con este comando agregamos al usuario, y el mismo comando nos pedirá información del usuario como la clave y algunos datos del mismo. Adicionalmente creara un grupo y carpeta de usuario.
  • 4.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com 3. Modificar la configuración del archivo /etc/ssh/sshd_config para evitar el acceso por root y cambiar el puerto de conexión. Para esto entramos a editar el archivo, en nuestro caso usaremos el editor nano. Dentro del archivo de configuración recomendamos cambiar las siguientes opciones: Port: es el puerto TCP al cual se conectara remotamente ListenAddress: la dirección IP que tendrá abierto el puerto definido anteriormente y que permitirá conexiones. Debe ser un IP activo del VPS. En este caso recomendamos un IP privado del rango de la VPN que se creara posteriormente. Por ahora lo dejaremos en el defecto 0.0.0.0 que indica que puede recibir conexiones de cualquier dirección IP. Después de configurada la VPN podemos cambiar esta dirección por una privada.
  • 5.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com La siguiente opción a cambiar es la siguiente: PermitRootLogin: originalmente esta en Yes, cambiar a no. Agregar la línea AllowUsers y colocar al lado el nombre del usuario que se creó en el segundo paso. Después de realizados los cambios hay que salvar la configuración. 4. Instalación de la VPN SSL (OpenVPN) Para la conexión remota a la administración usaremos una VPN SSL. Esto permite utilizar el puerto 443 para la conexión desde el Internet. Estaremos usando el producto OpenVPN Access Server que está basado en OpenVPN. Este paquete contiene conexiones para dos usuarios lo que sería suficiente para la administración. Para instalar este paquete en Ubuntu 16.04 debemos descargar el instalador genérico para DEBIAN del sitio https://openvpn.net/index.php/access-server/download- openvpn-as-sw/113.html?osfamily=Ubuntu Para instalar nos ubicamos en la carpeta /tmp y ejecutamos el siguiente comando
  • 6.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com Esto descargara la aplicación desde Internet. El nombre debe corresponder a la última versión disponible en el repositorio. Para instalar la aplicación se ejecuta el siguiente comando: El último comando que se debe ejecutar es para asignar una clave segura al usuario openvpn que es el administrador por defecto de la VPN. Para acceder a la administración del VPN se utiliza el siguiente URL: https://direcion-ip-publica:943/admin
  • 7.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com La administración del OpenVPN está por ahora fuera de este documento por lo cual instamos al lector a buscar referencias sobre cómo crear usuarios. Posteriormente haremos un artículo detallado sobre el mismo. Como referencia dejamos el enlace oficial del sitio web de OpenVPN. https://openvpn.net/index.php/access-server/docs.html?id=229 . Para descargar el cliente OpenVPN se entra a la dirección pública Se coloca el usuario y la clave y se escoge la opción Login de la lista desplegable y se presiona GO. Después de entrar podrá encontrar la página con todos los clientes disponibles que puede usar para conectarse.
  • 8.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com La licencia gratuita permite hasta dos conexiones simultáneas al servidor VPN. 5. Cambiar Dirección de servicio SSH y ajuste del Firewall interno Después de una prueba exitosa de conexión vienen los pasos más importantes para garantizar que no podrán realizarse más conexiones desde cualquier dirección IP al servidor SSH, el primero consiste en identificar las direcciones IP privadas de la VPN. Para esto podemos ejecutar el siguiente comando: IFCONFIG: muestra las interfaces de red activas del sistema operativo y sus correspondientes direcciones IP.
  • 9.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com Una vez identificada la IP Privada del servidor que usaremos para el SSH, hay que modificar el archivo de configuración del servidor SSH. Para esto usamos el siguiente comando: Una vez dentro del archivo buscamos dentro la línea de opciones la siguiente: ListenAddress: este comando le dice al servidor SSH en qué dirección estará escuchando activamente las conexiones.
  • 10.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com Se modifica la línea colocando la dirección privada del servidor, en el ejemplo es la dirección 172.27.236.1 Hay que recordar que al reiniciar el servicio SSH o al servidor este solamente estará activo para las conexiones privadas, es por eso que es necesario probar primero que puede conectarse mediante la VPN. Para verificar que tenemos acceso, hacemos PING a la dirección privada después de conectarnos por medio de la VPN. Si tenemos respuesta es que podemos conectarnos. El siguiente paso es reiniciar el servidor, lo cual debe variar dependiendo de su proveedor de servicio. 6. Prueba de la conexión mediante la VPN: Después de creada la VPN, probada la conexión y realizados los ajustes podemos probar que el SSH solamente funciona para conexiones internas. Para esto colocamos en nuestro cliente SSH preferido los parámetros del servidor: En nuestro ejemplo usaremos Putty
  • 11.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com Como prueba colocamos el nombre del host o la dirección IP pública y el puerto SSH activo. Si nuestra configuración es correcta no podremos conectarnos al servidor, porque solamente estará disponible para conexiones por las direcciones IP privadas, que solamente se pueden acceder por la VPN. Colocamos la dirección IP en el navegador para la conexión al servidor VPN, en nuestro caso sería así: https://158.69.223.218/?src=connect Y nos debe mostrar el dialogo de conexión. Después de conectados al VPN podemos probar nuevamente la conexión con la dirección IP de la red privada, en nuestro caso el 172.27.236.1 y el puerto 222 para el SSH. Como podemos ver, el servidor SSH está esperando el usuario y clave para ser utilizados. En una próxima entrega veremos cómo agregar un doble factor de autenticación utilizando una aplicación de celular desarrollada por Google. Se trata de una medida de
  • 12.
    Autor: José AntonioCarrasco Moreno – joseacarras@josecarrasco.com seguridad extra que requiere de un código que tiene una validez de unos segundos hasta volver a generar otro adicionalmente a la contraseña.