Asegurar un servidor privado virtual (I)

Un servidor proporciona muchos servicios a los usuarios: Web, repositorio de archivos o control de código fuente. Para realizar estas funciones necesita tener por una parte aplicaciones escuchando en unos puertos concretos y por otra parte que esos puertos sean accesibles desde el exterior. Los usuarios legítimos usarán los servicios de forma adecuada y los atacantes intentarán conseguir el acceso al servidor aprovechando vulnerabilidades o accesos remotos. Como no tenemos acceso físico al servidor propiamente dicho utilizaremos un acceso remoto siendo el más conocido la conexión SSH. Si bien se puede usar Telnet para la misma tarea, es un suicidio utilizar una herramienta que no realiza cifrado de los datos para las tareas de gestión.

El servidor de SSH escucha las peticiones por el puerto 22. A priori no sabe si la petición de conexión es legítima o no. Por esta razón se pide un usuario y una contraseña. Sólo el usuario que tiene la contraseña puede entrar, pero ésto no evita que los atacantes intenten acceder al servidor utilizando usuarios y contraseñas genéricos. ¿De qué forma podemos evitar estas conexiones? Si permitimos únicamente el acceso por una IP corremos el riesgo de perder el acceso al servidor si cambia nuestra IP. En cambio, si bloqueamos por países evitaremos una parte de los ataques pero no los que vengan del mismo país en el que gestionemos el servidor. Para conocer la forma de detectar los ataques y minimizar su efecto podéis leer esta serie de artículos.

Autor de la fotografía del artículo: Bob Mical

Hay dos tipos de alojamiento Web que podemos usar dependiendo de si es o no mantenido. En el primer caso el proveedor del alojamiento se encarga de gestionar la infraestructura de la máquina, el sistema operativo y las herramientas que incluya el contrato. Dependiendo del mismo tendremos disponibles varias bases de datos o un número concreto de cuentas de correo. Si necesitamos más recursos el siguiente paso suele ser contratar un alojamiento con más prestaciones a costa de pagar más dinero (como es lógico). Sobre esta base instalaremos los diferentes servidores y trabajaremos con ellos.

Es posible que nos hagan falta más recursos para trabajar en un proyecto Web concreto. Por ejemplo, tenemos un servidor Web que utilizamos para comunicarnos con dispositivos móviles usando una aplicación específica. En estas condiciones necesitamos utilizar un servidor dedicado. Hay dos tipos de servidores según tengan una máquina real o una virtual. Los primeros pueden utilizar todo el hardware del equipo mientras que en los segundos se comparte el hardware entre varios equipos virtuales y reciben el nombre de VPS (servidor virtual privado). Recordad que se pueden utilizar tanto servidores que se encuentren en España como en otros países obteniendo en este último caso precios más competitivos.

Servidor (Autor del clipart: cyberscooty)Servidor (Autor del clipart: cyberscooty)
Como no tenemos un acceso físico a la máquina tenemos que usar una conexión SSH. En el caso de Joomla ya he comentado alguna vez que es importante asegurar bien el gestor de contenidos para evitar sustos. Lo mismo se aplica a un VPS pero a bajo nivel. Supongamos que tenemos una conexión SSH para gestionar el equipo. Esa conexión es accesible desde todo el mundo. En la siguiente imagen os muestro una captura de mi servidor. Corresponde a un proyecto en el que estoy trabajando con otra persona y tiene poco tiempo de vida. Aunque no es visible directamente en Internet al no estar indexado por los buscadores, recibe todos los días intentos de conexión.

Consola Consola
Hay dos factores que indican un ataque. El primero es la prueba de varios puertos desde la misma IP en intervalos de tiempo de pocos segundos. Si la contraseña del servidor no es fuerte es posible que un atacante pueda acceder al equipo y hacer lo que quiera. Si analizamos la IP con una aplicación de geolocalización como la que proporciona la página Web Geo Ip

  • Nombre del host: 116.10.191.168
  • País: China.
  • Region: Guangxi
  • Ciudad: Nanning

MapaMapa

Conclusiones

El log del servidor es el que realmente nos indica que estamos ante un ataque. Para reducir su efecto podemos tomar varias medidas. La primera consiste en bloquear países. Al usar la conexión SSH únicamente para gestionar el servidor sería una medida rápida y efectiva. El problema aparece si recibimos ataques desde países más cercanos como Francia e incluso España. En estos casos el bloqueo de todo el país sería un problema por lo que hay que tomar otras medidas.

Si no podemos bloquear un rango de direcciones IP podemos configurar el servidor para que no permite las conexiones que cumplan unos determinados requisitos. El bloqueo tiene que ser dinámico y adaptarse a las peticiones que recibe el servidor. Lo podremos realizar con la aplicación fail2ban que veremos en la siguiente entrega.

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.