Configuración Inicial de un servidor Ubuntu

,

Cuando instalamos un nuevo servidor Ubuntu hay una serie de aspectos que debemos tener en cuenta como parte de la configuración inicial de nuestro servidor. Esta configuración inicial permitirá incrementar la seguridad y usabilidad de nuestro servidor y nos proveerá de cimientos sólidos para los usos futuros que queramos darle. En este tutorial definiremos, paso a paso, cómo configurar desde cero un servidor Ubuntu.

Paso  1: Loguearse como root

El usuario root, es el usuario con privilegios administrativos en Linux y por consiguiente goza de una gran cantidad de permisos. Incluso posee la capacidad de hacer modificaciones realmente destructivas en el sistema, aun si son accidentales. Un usuario root puede eliminar el sistema de archivos en cuestión de segundos sin restricciones de ningún tipo. Por esta razón, no es recomendable utilizar el usuario root en el trabajo cotidiano con nuestro servidor.

Para loguearse en el servidor debemos escribir el siguiente comando:

Si es la primera vez que inicia sesión en el servidor, deberá aceptar la advertencia relacionada con la autenticidad del servidor y luego proveer la contraseña.

Advertencia de servidor agregado a la lista de host conocidos

El próximo paso es crear y configurar una cuenta alternativa con permisos reducidos para el trabajo diario con nuestro servidor. Además, debemos aprender a obtener privilegios adicionales en caso de necesitarlos, ya sea para editar archivos protegidos o hacer instalaciones de software.

Paso 2: Crear un usuario nuevo

Una vez que hayamos iniciado sesión estamos listos para añadir una nueva cuenta de usuario que utilizaremos para los inicios de sesión futuros en nuestro servidor.

Agregaremos un nuevo usuario llamado universo_digital que usted podrá sustituir por el nombre de usuario que desee:

Uso de comando adduser

Lo primero que deberá insertar es la contraseña, como se muestra en la imagen anterior. Luego, le pedirá información adicional del usuario pero esto es completamente opcional, puede presionar «enter» las cinco veces si no desea insertar dichos datos.

Paso 3: Asignar Privilegios de root

Ya tenemos un nuevo usuario con privilegios regulares, sin embargo a veces necesitamos ejecutar tareas administrativas como mencionamos anteriormente. Para permitirle al usuario que acabamos de crear ejecutar comandos con permisos adicionales, configuraremos lo que se denomina «superuser» o privilegio de root para un usuario normal. Este usuario podrá ejecutar dichos comandos anteponiendo la palabra sudo a cada comando.

Para asignarle los privilegios adicionales al usuario recién creado debemos añadir el usuario al grupo «sudo». Por defecto, en Ubuntu, a los usuarios que pertenecen al grupo sudo les está permitido utilizar el comando sudo.

Esto lo haremos de la siguiente manera:

A partir de este momento su usuario puede ejecutar comandos con privilegios de «superuser«. Si desea obtener más información acerca de cómo funcionan los privilegios en Ubuntu o Linux en general puede ver el tutorial de cómo editar el archivo sudoers en linux y centos. Si está interesado en cómo incrementar la seguridad de su servidor, puede continuar con los pasos que se describen en este tutorial.

Lo próximo que haremos será configurar la autenticación por llave pública para el usuario recién creado. Configurar esto nos permitirá incrementar la seguridad al requerir una llave SSH privada para iniciar sesión.

Generar el par de llaves SSH

Un par de llaves SSH consiste en una llave pública y una privada. Para generar el par ejecute el siguiente comando en el terminal de su máquina local:

En el ejemplo se está utilizando el usuario root en la máquina local, por lo que el directorio, por defecto, donde se guardará la llave será /root/.ssh/id_rsa. En caso de que el usuario sea distinto de root el directorio sería similar a /users/usuario_local/ .ssh/id_rsa.

Presione «enter» para aceptar la dirección donde se guardará la llave. Luego se le preguntará si quiere asegurar la llave con un passphrase (no es más que una frase o contraseña adicional). Puede presionar «enter» una vez más si no desea asegurar la llave.

Como puede observar en la imagen el comando genera una llave privada: id_rsa, y una llave pública: id_rsa.pub, en el directorio .ssh del usuario local. Es importante que por cuestiones de seguridad no comparta la llave privada con nadie que no deba acceder a su servidor.

Nota: Si usted deja el passphrase en blanco podrá autenticarse utilizando la llave privada sin necesidad de introducirlo. Sin embargo, si usted introduce un passphrase necesitará proporcionar tanto la llave privada como el passphrase para iniciar sesión. Evidentemente este último método es el más seguro, pero ya sea si se utiliza un passphrase o no, el método de autenticación por par de llaves es mucho más seguro que la autenticación básica en la que se proporciona el nombre de usuario y la contraseña.

Copiar la llave pública

Una vez que se ha generado el par de llaves debe copiar la llave pública a su nuevo servidor. Usted tiene 2 opciones para hacer esto, veamos:

Opción 1: Utilizar ssh-copy-id

Si su máquina local tiene instalado el script ssh-copy-id puede copiar la llave pública utilizando el comando de la siguiente manera:

Luego de autenticarse correctamente en el servidor la llave pública será agregada al directorio.ssh/authorized_keys del usuario. A partir de este momento esta llave puede usarse para iniciar sesión en el servidor.

Opción 2: Instalar la llave pública manualmente

Primero debe imprimir la llave pública (id_rsa.pub) generada en la máquina local utilizando el siguiente comando:

El resultado deberá ser algo como esto:

Imprimir llave publica en ubuntu

Seleccione y copie el código generado en el clipboard.

Inicie sesión en el servidor como root y luego cámbiese temporalmente al usuario recién creado con el siguiente comando (recuerde sustituir el usuario de ejemplo por el usuario que creó):

Ya debemos estar autenticado como el nuevo usuario y en el directorio home del mismo.

Lo siguiente es crear un nuevo directorio llamado .ssh y establecer los permisos:

Ahora debe crear un archivo llamado authorized_keys dentro del directorio .ssh. Puede abrir directamante el archivo en un editor de texto y luego guardar los cambios. En nuestro caso utilizaremos el editor de texto nano, siéntase libre de utilizar su editor de texto preferido.

Inserte la llave pública que debe estar copiada en su clipboard, si no cópiela nuevamente y péguela dentro del editor.

Para salir del editor presione CTRL-x , luego presione Y para salvar los cambios realizados y finalmente ENTER para confirmar el nombre del archivo.

Luego puede restringir los permisos del archivo authorized_keys con el siguiente comando:

Finalmente pede retornar al usuario root escribiendo exit y presionando ENTER.

Desde este momento la clave pública está instalada y usted puede utilizar la llave SSH para iniciar sesión con su usuario.

Para saber más acerca de cómo funciona la autenticación por par de llaves SSH, puede leer el tutorial: Cómo configurar la autenticación por llaves SSH en un servidor Linux.

En el siguiente paso se muestra cómo incrementar la seguridad del servidor deshabilitando la posibilidad de iniciar sesión y utilizando la autenticación a través de contraseña. Esto es altamente recomendado para evitar ataques de fuerza bruta, por ejemplo.

Ya puede iniciar sesión en su servidor utilizando el par de llaves SSH. Sin embargo, para incrementar la seguridad de su servidor es necesario deshabilitar la autenticación por medio de contraseña. Esto limitará el acceso SSH a su servidor solo a la autenticación por medio de llave pública. Esto significa, que la única forma de iniciar sesión en su servidor será poseer una llave privada que empareje con la llave pública instalada en el servidor.

Nota: Antes de deshabilitar la autenticación a través de contraseña en su servidor, asegúrese de haber instalado la llave pública para su usuario. Esto lo describimos en el paso previo (4). Tenga presente que, de no ser así, usted puede quedar fuera de su servidor e imposibilitado de iniciar sesión en él.

Para deshabilitar la autenticación por medio de contraseña haga lo siguiente:

Como root o utilizando su nuevo usuario con privilegios de sudo, abra la configuración del servicio SSH:

Debería ver algo como esto:

Muestra del contenido del archivo sshd_config

Encuentre la línea que especifica PasswordAuthenticacion, en caso de que esté comentada, descoméntela eliminando el carácter «#» que precede a la propiedad; establezca el valor de la propiedad en «no». Debería quedar de la siguiente forma:

Cuando termine de editar el archivo guarde los cambios y cierre el editor. Como mencionamos enteriormente utilice CTRL-X, luego Y, y finalmente ENTER para salvar y salir del editor. Luego reinicie el servicio SSH:

A partir de este momento la autenticación a través de contraseña está deshabilitada. Su servidor solo es accesible a través de la autenticación mediante llave SSH.

Paso 6: Probar la autenticación

Es importante que no cierre la sesión en su servidor hasta que no pruebe la autenticación. En un nuevo terminal en la máquina local inicie sesión en su servidor:

Si todo ha funcionado correctamente se utilizará la clave privada alojada en la máquina local para autenticarse en el servidor. De lo contrario, se le pedirá que inserte la contraseña. Si usted creó el par de llaves con un passphrase se le pedirá que lo inserte; si no iniciará sesión en el servidor sin necesidad de escribir contraseña alguna.

Recuerde que si necesita ejecutar comandos con privilegios de root debe anteponer la palabra «sudo» antes del comando:

¿Qué hacer a partir de aquí?

Llegado a este punto usted tiene un servidor bastante seguro desde el punto de vista de la autenticación. Puede instalar cualquier tipo de software o servicio, aunque es extremadamente recomendado instalar y/o configurar un firewall.

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 *