LinuxSeguridadterminal

Primeros pasos imprescindible con tu servidor linux

Te mostramos los primeros pasos imprescindibles para trabajar con tu servidor linux. ¿Cómo mantenerlo actualizado? ¿Estará seguro? ¿Cuáles son los primeros pasos imprescindibles para que esté seguro? Hay una jungla ahí fuera, y armado con nuestras sencillas instrucciones conseguirás que tu servidor se mantenga seguro ahí fuera. Un gran poder conlleva una gran responsabilidad, así que empezaremos a ser responsables inmediatamente actualizando nuestro software y protegiéndolo de los ataques más comunes.

Contenidos

Por fin te has decidido. Has dejado de ser un usuario para dar tus primeros pasos como administrador, o sencillamente quieres comenzar a tener algunos servicios en la red, como los que mostramos en algunos de nuestros tutoriales (una VPN con WireGuard, por ejemplo, o crear tu propia nube), y accedes a un servidor en internet por primera vez (creado, por ejemplo, en Digitalocean). Un servidor en internet está expuesto a ser accesible desde cualquier lugar del mundo, y por ello es imprescindible que hagamos una configuración básica segura para que no se nos convierta en uno más de los miles de servidores que son hackeados diariamente en internet.

Para este tutorial, emplearemos un servidor Ubuntu LTS 20.04 que puedes contratar múltiples proveedores de internet, desde AWS hasta Azure, Google Cloud, Digital Ocean o casi cualquier proveedor de VPS o servidores dedicados. Tu proveedor te ha dado instrucciones sobre cómo acceder mediante ssh a una terminal en tu servidor, y a partir de ahora es todo tuyo. Sigue los pasos que te marcamos para ir en el buen camino.

Actualizar el sistema de tu servidor

Lo primero que debes hacer es actualizar el sistema. Los paquetes de software se van revisando regularmente (¡a diario!) para añadir mejoras, además de parches de seguridad para minimizar las vulnerabilidades de los programas que tienes instalados. La mayoría de ataques a los equipos se hacen a través de software que está desactualizado, así que esto es lo primero que debes hacer:

$sudo apt update
$sudo apt upgrade

Con el primero de los comandos, le dices a tu sistema que busque en la lista de software disponible si hay paquetes actualizables, y con el segundo le dices que los instale. Espera a que termine la actualización para continuar trabajando con tu sistema.

Añadir un usuario sudoer

Es posible que te hayan dado un usuario root, y que tu terminal esté precedida por el símbolo «#» antes del cursor parpadeante. Esto es mala señal, ya que indica que estás usando el usuario «root» (superadministrador) directamente en el sistema. ¿Por qué es mala señal? Porque significa que todo lo que hagas lo estás haciendo como administrador, y afectará a todo el sistema. A primera vista, puede parecer buena idea: «soy el rey del mundo, sé lo que estoy haciendo», pero no lo es. Confía en la experiencia del resto de administradores a los que trabajar con root nos ha hecho dispararnos en un pie, y crea un usuario sin privilegios para tu uso normal. Usarás «sudo» cuando quieras ejecutar algún comando de administración, es prácticamente un estándar en la industria hoy en día. Ejecuta los siguientes comandos para añadir el usuario «nociones» (sustituye nociones por el nombre que más te guste):

$sudo adduser nociones
$sudo usermod -aG sudo nociones

Con estos comandos has creado el usuario «nociones», y lo has añadido al grupo de los usuarios que pueden hacer sudo en tu servidor. Te pedirá una contraseña, y es importante que pruebes que puedes acceder al servidor desde tu ordenador con ese usuario y contraseña, pues lo que vamos a hacer a continuación deshabilitará el acceso como root.

Deshabilitar el login como root

Como ya hemos dicho, no es buena idea acceder como root a tu servidor. Pues imagínate si estamos permitiendo que alguien entre como root. ¿Qué pasaría si un hacker averiguara nuestra contraseña? ¡Entraría como root en nuestro servidor y tendría acceso a absolutamente todos los comandos! Para impedirlo, editaremos el fichero «/etc/ssh/sshd_config» y cambiaremos un parámetro:

$sudo nano /etc/ssh/sshd_config

Hemos usado nano en nuestro ejemplo, un editor que está bien para iniciarse porque te muestra algunas opciones en pantalla (nosotros usamos vi, pero no es apto para principiantes). Busca el texto que dice «PermitRootLogin yes» (Ctrl-w es para buscarJ) y cambia «yes» por «no». Graba el fichero (Ctrl-o) y sal (Ctrl-x).

Conéctate con una clave ssh y deshabilita el acceso por contraseña

¿Cómo vamos a conseguir que nuestro servidor sea inmune a los múltiples bots que pululan por internet tratando de averiguar nuestra contraseña? ¡Fácil, eliminemos el acceso por contraseña! Vamos a ver cómo acceder a nuestro servidor mediante un sistema de clave privada y clave pública, y así no nos tendremos que preocupar por que un hacker averigüe nuestra contraseña y se conecte al servidor en remoto con ella.

Generar un par de claves ssh pública y privada en tu equipo

Lo primero que debes tener es un par de claves privada y pública en tu equipo local (no en el servidor). Este par de llaves es el que te permitirá acceder al servidor. En tu equipo local mantendrás la clave privada (la llamaremos id_rsa, pues es el nombre que se le da por defecto), mientras que en tu equipo remoto añadirás la clave pública a tu servidor (id_rsa.pub).

Si no tienes ese par de claves en tu equipo, ejecuta el comando que te mostramos a continuación. Por cierto, ejecútalo también en tu servidor para que este también tenga su propio par de claves pública y privada, de modo que pueda acceder a otros equipos y servidores; esto nos será muy útil en futuras instalaciones y configuraciones.

$ssh-keygen

Este comando te generará el par de claves pública y privada y los almacenará en el directorio raíz de tu usuario (~/.ssh/).

Configurar tu clave pública en el servidor y acceder mediante clave

Ya casi estamos. Ahora, pondremos la clave pública en el servidor, de modo que ya «nos conozca». Cuando accedamos con ssh, utilizaremos nuestra clave privada y el servidor se encargará de comprobar si tiene una clave pública asociada y dejarnos acceder en ese caso. Abre el contenido de tu fichero id_rsa.pub (por ejemplo, con cat $id_rsa.pub) y cópialo en el portapapeles.

En el escritorio remoto, edita el fichero authorized_keys:

$nano ~/.ssd/authorized_keys

en este fichero tenemos las claves públicas de usuarios o servidores que pueden acceder mediante este sistema de clave pública/privada a nuestro servidor. Copia una nueva línea el contenido de id_rsa.pub de tu equipo local.

Bueno, esto también se puede hacer desde tu equipo con el siguiente comando:

$ssh-copy-id usuario@ipodominio

(«usuario» es tu usuario en el servidor e «ipodominio» es la ip donde se encuentra o el nombre de dominio en el que lo has alojado)

Ahora, en una terminal de tu equipo local, usa el siguiente comando, donde «id_rsa.pub» es tu clave pública, «user» es tu usuario en el servidor y «serveripordomain» es la ip o nombre de dominio de tu servidor.

$ssh -i id_rsa.ppk user@serveripordomain

¡Listo! Si has podido acceder a tu servidor mediante tu clave puedes pasar al siguiente apartado, para deshabilitar el acceso por contraseña y darle con un palmo de narices a la mayoría de bots que andan por internet tratando de acceder a tu servidor.

Un poco más de seguridad

Si alguna vez compruebas los logs de acceso de tu servidor, te sobrecogerá el número de intentos de acceso a tu servidor por ssh. En internet existen bots (robots) que se dedican básicamente a eso: intentan acceder una y otra vez con contraseñas comunes a servidores públicos, de modo que si alguna vez aciertan la combinación de usuario/contraseña tomarán el control de tu servidor y harán cosas malas de hackers. ¿Cómo evitamos caer en sus garras? Pues muy fácil, ahora que ya puedes acceder a tu servidor con un sistema de clave pública/privada, que se considera muchísimo más seguro, deshabilita el acceso por contraseña a tu servidor.

Edita el fichero » /etc/ssh/sshd_config» y cambia el siguiente parámetro:

PasswordAuthentication no

¡Ojo! Haz esto sólo si ya has comprobado que puedes acceder por ssh con tu clave privada sin problemas. De lo contrario podrías quedarte desconectado de tu servidor… para siempre. Reinicia el servicio ssh para que los cambios tengan efecto:

$sudo systemctl reload ssh

Arranca el firewall en tu servidor

Lo más recomendable cuando tienes un servidor expuesto a internet es tener un firewall activado. Existen muchas otras prácticas en la industria, como tener una DMZ, una VPN, de modo que tu servidor no estará directamente en internet, sino oculto detrás de más capas de seguridad. Veremos los comandos necesarios para activar el firewall más sencillo con el que podemos trabajar: ufw.

Los siguientes tres comandos comprueban el estado, permiten el acceso ssh (imprescindible, de lo contrario nos desconectaríamos de nuestro servidor al activar el firewall) y habilitan el firewall, para tener nuestro servidor protegido.

$sudo ufw status
$sudo ufw allow ssh
$sudo ufw enable

¡Listo! Ya tenemos nuestro servidor en internet, actualizado, accesible de forma segura y protegido de ataques desde el exterior. ¿Qué más se puede pedir? Te esperamos como siempre en los comentarios para cualqueir duda o sugerencia que te pueda surgir.

¿Y tú? ¿Qué servicios usas en tu servidor remoto? ¡Mucha suerte en tu aventura en la red!

(Visto 420 vecess, 1 visitas hoy)
¡Comparte este articulo!

Deja una respuesta

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