Una de las tareas más importantes, por no decir imprescindible, cuando te dispones a configurar tu servidor, ya sea un VPS, un servidor dedicado, es la de establecer unos mínimos mecanismos de seguridad, ya que va ha estar expuesto a todo tipos de ataques, en este articulo te voy a mostrar la configuración básica de seguridad para tu vps.
Índice de contenido
Actualizar el sistema
La primera tarea que debes hacer, no solo para realizar una configuración de seguridad sino para cualquier configuración de tu servidor es actualizar el sistema, lo puedes hacer con los siguientes comandos:
sudo apt-get update
sudo apt-get dist-upgrade
Cambiar el puerto de entrada del servidor ssh
Tras tener una nueva instalación de tu servidor, en este caso Ubuntu Server, dispones de un servidor ssh para poder conectarte a la consola de tu VPS.
El servidor ssh utiliza tres parámetros para permitir la conexión al servidor, son: el usuario, la contraseña y el puerto. Dado que estás ante una instalación inicial solo dispones del usuario root para conectate con la contraseña que has introducido para el en el proceso de instalación o la que te proporciona el proveedor.
Inicialmente el servidor ssh esta configurado para escuchar en el puerto 22, por ello, con el objetivo de dificultar ataques de acceso sobre el servidor ssh. es recomendable cambiar el puerto de escucha, así solo tu sabrás que puerto es al que te tienes que conectar. Para ello hay que editar el fichero de configuración de servidor ssh de la siguiente forma:
sudo nano /etc/ssh/sshd_config
Debes buscar la sección del fichero donde se muestra la siguiente linea:
#Port 22
y modificarla eliminando el comentario (#) e introduciendo el nuevo puerto, debe ser un puerto libre, por ejemplo : 1234, la linea quedaría de la siguiente forma:
Port 1234
Guarda los cambios pulsando Ctrl + X y le confirmas. A continuación debes reinicias el servicio ssh para que tengan efecto los cambios, del siguiente modo:
sudo /etc/init.d/ssh restart
En este momento el servidor ssh ya esta escuchando en el puerto 1234, si intentas logearte en el puerto 22 te denegará el acceso informándote que el puerto ha sido cerrado, pero si intentas logearte usando el puerto 1234, tal y como sigue:
ssh -p 1234 usuario@servidor
tampoco obtendrás acceso, porque tienes que habilitar el puerto 1234 en tu servidor. La forma de habilitar el puerto depende del servidor que uses, pero te voy a mostrar como se hace en un cloud server de Ionos.
Para habilitar el puerto del ejempli 1234 en tu vps en Ionos accede al panel de control de tu servidor en ionos y selecciona la pestaña Red > Firewall, activa la política que te proporcionan por defecto, en este caso «linux» y edita la linea en la que figura el puerto 22 cambiándolo por el 1234 y valida, tras la finalización de la configuración quedara como en la imagen siguiente:

Ahora solo puedes acceder a tu servidor vps a usando el puerto que solo tu conoces, de manera que un posible atacante tendrá que averiguar, entre otras cosas, que puerto es el que da acceso a tu servidor.
Cambiar la contraseña del usuario root
En el caso que la contraseña del usuario root te la proporcione la empresa que te da el servicio de cloud, es recomendable cambiarla y establecer una propia. para ello accede a la consola y ejecuta el siguiente comando:
passwd root
te pedirá que le des la nueva contraseña y la confirmes, con ello dispondrás de una contraseña que solo tu conoces, añadiendo un punto más de seguridad.
Crear un usuario diferente a root
Crear otro usuario diferente al root podría parecer contraproducente pues estamos dando acceso al sistema a través de dos usuarios, pero es el paso previo para restringir el acceso del root. Este nuevo usuario será el único que podra acceder al sistema, la ventaja reside en restringir el acceso con el root pues ese usuario es conocido y además goza de todas las credenciales para modificar el sistema.
Para crear un nuevo usuario accede a la consola y ejecuta el siguiente comando:
adduser nombredelnuevousuario
Cambiando nombredelnuevousuario por el usuario que quieras crear, te pedirá la contraseña y algunos datos sobre ti, no son obligatorios, y con esto habrás creado un nuevo usuario.
Desactivar el acceso al vps a traves de ssh al usuario root
Con este paso inhabilitas el acceso del usuario root y solo permites el acceso del usuario que creaste antes y cuyo login solo conoces tu. Para ello accedes a la consola y editas el fichero de configuración de ssh, del siguiente modo:
nano /etc/ssh/sshd_config
En el fichero buscas la una linea con el siguiente contenido:
#PermitRootLogin prohibit-password
Y cambias la linea por la siguiente:
PermitRootLogin no
Ahora tienes que reiniciar el servidor ssh para que tengan efecto los cambios, lo debes hacer de la siguiente manera:
/etc/init.d/ssh restart
A partir de ahora solo puedes acceder a tu vps con el nuevo usuario que solo tu conoces y con la contraseña solo tu le has dado y a través del puerto que solo tu conoces, con el siguiente comando:
ssh -p puerto usuarionuevo@ipdelservidor
Bien y una vez accedas y necesites hacer tareas que solo se le permiten al usuario root tendrás que ejecutar el siguiente comando:
su root
Tendrás que dar la contraseña del usuario root y con eso podras realizar tareas propias del root
Como afecta al servidor de ftp
Tienes que tener en cuenta que el servidor de ftp utiliza ssh para conectarse, así que deberás utilizar el mismo usuario, contraseña y puerto que usas en ssh para conectarte al servidor con el servicio de ftp. Si todavía no dispones de ftp sigue estos dos comandos para instalarlo y activarlo:
sudo apt install vsftpd
sudo service vsftpd restart
Instalar y configurar el paquete de seguridad Fail2ban
Con los pasos previos hemos restringido significativamente la posibilidad de acceso a nuestro servidor, con lo que hemos reducido las posibilidades de tener accesos no permitidos. Pero no esta de más dotar a nuestro servidor de un paquete de seguridad que lo proteja en caso de intento de acceso.
Instalando el paquete de seguridad Fail2ban dotamos a nuestro servidor de protección frente ataques, como por ejemplo, ataques de fuerza bruta. Para instalarlo procede del siguiente modo:
apt-get install fail2ban -y
Tras la instalación del paquete podemos ver su configuración, con el siguiente comando:
sudo nano /etc/fail2ban/jail.conf
Accederás al fichero de configuración de fail2ban, donde debes prestar atención a las siguientes lineas:
bantime = 3600
findtime = 600
maxretry = 5
La linea bandtime = 3600 indica los segundos que una IP será bloqueada tras realizar un determinado número de intentos de acceso, que resulten fallidos. Este número de intentos de acceso viene determinado por la linea maxretry = 5, y la linea findtime = 600 es el tiempo en el que se contabilizan los intentos de acceso. En este caso concreto las IPs que en un periodo de 10 minutos (600 segundos) realicen más de 5 intentos de acceso que resulten fallidos, serán bloqueadas durante 1 hora (3600 segundos).
Cuando modifiques el contenido del fichero debes reactivar el servicio con el siguiente comando:
sudo /etc/init.d/fail2ban restart
Ahora que ya tienes el paquete Fail2ban configurado, comprueba su funcionamiento con el siguiente comando:
sudo fail2ban-client status
En la configuración inicial deberás obtener un resultado como este :
Status
|- Number of jail: 1
`- Jail list: sshd
El cual nos indica que tenemos una jaula activa sobre el servicio ssh (demonio sshd), significa que Fail2ban esta protegiendo el servicio ssh, podríamos añadir más jaulas (jails) a otros servicios, pero ya excede las pretensiones de este articulo. Para finalizar puedes comprobar la configuración de esta jaula (sshd) del siguiente modo:
sudo fail2ban-client status sshd
Y te aparecerá la información relativa a los accesos fallidos totales, las IP totales bloqueadas y las actualmente bloqueadas. Es importante comprobar habitualmente esta información para saber si el servidor esta siendo objeto de ataques.
Como puedes comprobar dotar de unas reglas básicas de seguridad a tu servidor es una tarea sencilla, y te evitará posibles sorpresas desagradables.
Si necesitas ayuda relativa a la configuración de tu servidor puedes contactar conmigo en el formulario adjunto.
[contact-form-7 id=»61″ title=»contacto principal»]