Pasos para realizar una correcta configuración de un servidor con Ubuntu

Línea de comandos Linux

A la hora de montar un nuevo servidor que utilice el sistema operativo Ubuntu, hay algunos pasos básicos que deberíamos tener en cuenta para realizar una correcta configuración básica del mismo. Lo que se busca con esto es mejorar la seguridad y facilitar el uso del servidor, así como aportar una base sólida para llevar a cabo acciones posteriores.

Paso 1 – Iniciar sesión con el usuario root

Si queremos iniciar sesión en el servidor, lo primero que debemos conocer es la dirección IP pública de la máquina y la contraseña del usuario root. Para conectarnos como usuario root, tenemos que ejecutar la siguiente instrucción, sustituyendo la cadena «DIRECCION_IP» por la IP de la máquina.

ssh root@DIRECCION_IP

Para completar el proceso de inicio de sesión, hay que aceptar la advertencia sobre la autenticidad del usuario para después acceder mediante el usuario root y su contraseña. Si es la primera vez que accedemos con este usuario, también nos pedirá que cambiemos su contraseña.

Para los que no estén familiarizados con el usuario root, se trata del usuario que tiene control absoluto sobre el servidor. Por eso no se aconseja que se use habitualmente, ya que puede se pueden realizar cambios en la máquina que hagan que no funcione todo lo bien que debería. De ahí que se recomiende crear un usuario alternativo con menor cantidad de privilegios.

Paso 2 – Crear un nuevo usuario

Una vez que nos hayamos logueado como usuario root, añadiremos una cuenta nueva que utilizaremos para conectarnos a partir de ese momento. En nuestro ejemplo ese usuario recibirá el nombre de «demo», pero lo podéis llamar con cualquier otro nombre.

adduser demo

Al ejecutar esa instrucción, el sistema os realizará una serie de preguntas, empezando por la contraseña que tendrá el usuario —que es recomendable que sea una contraseña fuerte—. Una vez introducida la contraseña del usuario, podemos ir respondiendo al resto de preguntas o pulsar «Intro» para saltárnos las que no nos interesen, ya que no son preguntas obligatorias.

Paso 3 – Asignar privilegios root

El usuario creado dispone de ciertos privilegios, pero es posible que en determinadas situaciones tengamos que llevar a cabo tareas administrativas. Así que, para evitar tener que cerrar la sesión de nuestro usuario normal y volver a iniciar sesión con la cuenta raíz, podemos establecer lo que se conoce como un «superusuario». Esto consiste en dotar de privilegios root a nuestra cuenta que hemos creado. Esto permitirá al usuario ejecutar algunas instrucciones de administración con tan solo anteponer la palabra sudo antes de cada comando.

Para añadir estos privilegios a nuestro nuevo usuario tenemos que indicar que el nuevo usuario pertenece al grupo «sudo». Para conseguirlo, basta con ejecutar la siguiente instrucción.

gpasswd –a demo sudo

De esta forma nuestro usuario podrá ejecutar instrucciones con privilegios de superusuario.

Paso 4 – Añadir una public key de autenticación

Para mejorar la seguridad de la máquina, os recomendamos configurar una clave pública de autenticación para el nuevo usuario. Al configurar esto, estaremos aumentando la seguridad del servidor al requerir una clave privada SSH para conectarse.

Generar un par de claves

Si aún no disponemos de un par de claves SSH, que consiste en una clave pública y otra privada, tendremos que generarlas. Para hacerlo hay que ejecutar esta instrucción en nuestro ordenador.

ssh-keygen

Asumiendo que nuestro usuario local se llama «usuariolocal», tendremos que ver una salida que se parecerá a lo siguiente:

ssh-keygen output
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):

Pulsando «Intro» aceptamos el nombre del archivo y la ruta por defecto, pero también podemos intorducir un nombre nuevo si lo preferimos. A continuación nos pedirá una contraseña asociada a la clave que acabamos de crear. Podemos optar por asignar una o bien dejar este campo en blanco. Si decidimos poner una contraseña, a la hora de iniciar la sesión, además de la clave privada, también utilizaremos la contraseña.

Este proceso generará una clave privada «id_rsa» y una clave pública «id_rsa.pub» en el directorio «.ssh» del directorio principal de localuser. Es importante que no compartamos la clave privada con nadie que no deba tener acceso al servidor.

Copiar la clave pública

Después de haber generado nuestro par de claves SSH, tendremos que copiar la clave pública a nuestro nuevo servidor. Este proceso lo podremos hacer de dos formas diferentes.

Opción 1: Usar ssh-copy-id

Si en nuestra máquina local tenemos instalado el script ssh-copy-id, lo podremos utilizar para realizar la copia de esta clave. Para ello ejecutaremos ssh-copy-id especificando la dirección IP del servidor donde queremos copiarla, indicando además el usuario de la máquina.

ssh-copy-id demo@DIRECCION_IP

Tras indicar la contraseña correspondiente de acceso a la máquina, la clave pública será añadida al archivo «.ssh/authorized_keys».

Opción 2: Instalación manual

Partiendo de la base que ya hemos creado el par de claves SSH, utilizaremos el siguiente comando para pintar por pantalla la clave pública.

cat ~/.ssh/id_rsa.pub

Deberíamos ver algo parecido a esto que os dejamos.

id_rsa.pub contents
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf localuser@machine.local

Seleccionaremos la clave pública y la copiaremos en nuestro portapapeles. Después accederemos al servidor para agregar esta clave pública dentro de un archivo especial en el directorio personal del usuario. Si estamos logueados como usuario root, lo que haremos será ejecutar la siguiente instrucción para cambiar al usuario «demo» que hemos creado.

su - demo

Ahora nos encontraremos dentro del directorio home del usuario creado y ahí crearemos un nuevo directorio llamado «.ssh» y restringiremos sus permisos con la siguiente instrucción.

mkdir .ssh
chmod 700 .ssh

Luego crearemos un fichero de nombre «authorized_key» con un editor de texto. Nosotros utilizaremos «nano».

nano .ssh/authorized_keys

Cuando lo hayas creado, copia en el interior de ese fichero la clave pública generada —que deberíamos tener en el portapapeles—. Para finalizar, guardamos los cambios y restringimos los permisos sobre ese fichero.

chmod 600 .ssh/authorized_keys

Paso 5 – Configurar el demonio SSH

Ahora que ya hemos creado nuestra cuenta, podemos asegurar nuestro servidor un poco más modificando el demonio SSH, para impedir el acceso remoto SSH a la cuenta root. Para ello tendremos que editar el archivo de configuración, logueados como usuario «root».

nano /etc/ssh/sshd_config

En ese archivo buscaremos la siguiente línea:

PermitRootLogin yes

Lo que tendremos que hacer es cambiar «yes» por «no». De esta forma estaremos impidiendo el acceso vía ssh al usuario root. Por último, sólo nos queda guardar los cambios.

Paso 6 – Recargar SSH

Ahora que hemos realizado todos los cambios, es necesario reiniciar el servicio para que tomen efecto. Para ello tenemos que ejecutar la siguiente instrucción.

service ssh restart

Una vez hechos todos estos pasos, hay que comprobar que todo funciona bien y que nos podemos loguear con el usuario creado. Para ello, abrimos un nuevo terminal en nuestro equipo local y ejecutamos el siguiente comando.

ssh demo@DIRECCION_IP

Si la conexión se ha realizado con éxito, probamos a ejecutar cualquier comando de administrador.

sudo comando_a_ejecutar

Si todo ha funcionado, ya podremos salir de la máquina con la garantía de haber creado un entorno seguro.

Si te ha gustado, compártelo en redes sociales

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest
Share on whatsapp
Share on email

Conéctate a la revolución

Recibe noticias relacionadas con tecnologías Cloud, redes de última generación, sistemas altamente disponibles, almacenamiento de alto rendimiento, y otras soluciones y novedades relacionadas que puedan ser de tu interés.

  • Este campo es un campo de validación y debe quedar sin cambios.