Configuración inicial de un servidor con Ubuntu 16.04
Actualizado el 27 de septiembre, 2016. Por BlueHosting.
Cuando usted crea un nuevo servidor con la distribución Ubuntu 16.04, hay ciertos pasos y criterios de configuración que debería seguir en pro de establecer una configuración básica. Esto aumentará la seguridad y facilidad de uso y le dará una base sólida para las acciones posteriores. Este tutorial explica algunos pasos básicos de configuración para optimizar el uso de su servidor con Ubuntu 16.04, sígala paso a paso.
Primer paso: Inicio de sesión root
Para iniciar sesión en su servidor, deberá saber la dirección IP pública de su servidor y la contraseña de la cuenta de usuario root. Luego ingrese a su servidor usando su cliente SSH preferido.
Si usted aún no está conectado a su servidor, inicie sesión como usuario root usando el siguiente comando:
ssh root@su_dirección_IP
Recuerde sustituir el valor de su_dirección_IP
con la dirección IP pública de su servidor. También tenga en cuenta que este comando se conecta a SSH usando el puerto por defecto (22). Si desea usar un puerto distinto agregue el parámetro -p
al comando anterior, seguido del número de puerto. Por ejemplo, si se conecta a su servidor usando SSH en el puerto 1234 use ssh root@su_dirección_IP -p 1234
.
Complete el proceso de inicio de sesión aceptando la advertencia sobre la autenticidad del host (en caso que aparezca). Esta advertencia simplemente indica el riesgo que puede significar la conexión si no está seguro de la autenticidad del servidor, mostrando la clave pública de dicho servidor con el fin de comprobar su autenticidad. Una vez que acepte esta advertencia puede proceder e ingresar sus credenciales para el usuario root.
Sobre el usuario root
El usuario root es el usuario administrador de un entorno Linux y tiene amplios privilegios dentro del sistema. Debido a los privilegios de la cuenta root, se recomienda no usarla regularmente. Esto se debe a que parte del poder inherente de una cuenta root es la capacidad de hacer cambios que podrían ser destructivos, incluso sin intenciones de hacerlos.
El siguiente paso es establecer una cuenta de usuario alternativa con un alcance reducido para poder hacer operaciones del día a día. Le enseñaremos cómo obtener privilegios elevados temporalmente cuando sea necesario.
Segundo paso: Crear un nuevo usuario
Una vez que inicie sesión como root, estamos listos para añadir una nueva cuenta de usuario que utilizaremos para iniciar sesión de ahora en adelante.
Este ejemplo crea un nuevo usuario llamado "usuariotest", pero debe remplazarlo con un nombre de usuario de su preferencia:
adduser usuariotest
Se le harán varias preguntas, comenzando con una contraseña para la cuenta.
Use una contraseña sólida. Se le pedirá llenar otros campos opciones como el nombre completo y números telefónicos del usuario. Estos campos son opcionales y no son un requerimiento. Para obviar el ingreso de esta información simplemente presione Enter en cualquiera de los campos que quiera saltar.
Tercer paso: Privilegios root
Ahora, tenemos una nueva cuenta de usuario con privilegios regulares. Sin embargo, en algunas ocasiones es necesario ejecutar tareas administrativas.
Para evitar tener que cerrar la sesión del nuevo usuario y volver a iniciar sesión con la cuenta root, podemos configurar lo que se llama un "superusuario" que representa los privilegios root en una cuenta normal. Esto permitirá que nuestro nuevo usuario pueda ejecutar comandos con privilegios administrativos poniendo la palabra sudo
antes de cada comando.
Para añadir estos privilegios a nuestro nuevo usuario, necesitamos añadir el nuevo usuario al grupo "sudo". En Ubuntu 16.04, se permite a los usuarios que pertenecen al grupo "sudo" el uso del comando sudo
por defecto.
Desde su cuenta root ejecute este comando para añadir a su nuevo usuario al grupo sudo
(sustituya usuariotest
con el nombre real de su usuario):
usermod -aG sudo usuariotest
¡Ahora su usuario podrá ejecutar comandos con privilegios de superusuario!
Si desea aumentar la seguridad de su servidor, continúe con los siguientes pasos de esta guía.
Cuarto paso: Añadir autenticación con clave pública (recomendado)
El próximo paso para asegurar su servidor es establecer la autenticación con clave pública para su nuevo usuario. Configurar esto aumentará la seguridad de su servidor debido al requerimiento de una clave privada SSH para el inicio de sesión.
Generar un par de claves
Si todavía no tiene un par de claves SSH, las cuales están compuestas de una clave privada y otra pública, necesita generarlas. Si usted ya tiene una clave que desee usar, salte a la sección Copiar la clave pública.
Para generar una par de claves, ingrese el siguiente comando en el terminal de su computador local:
ssh-keygen
Asumiendo que su usuario local se llama "usuariolocal", usted podrá ver una salida similar a la siguiente:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/usuariolocal/.ssh/id_rsa):
Presione Enter para aceptar la ruta predeterminada o ingrese una nueva ubicación para guardar sus claves.
Luego, se le pedirá un passphrase o clave de acceso con la cual puede asegurar sus claves. Usted puede ingresar un passphrase o dejar el campo en blanco.
Nota: Si deja el passphrase en blanco, usted podrá usar su clave privada para la autenticación sin necesidad de ingresar un passphrase. Si usted especifica un passphrase, necesitará tanto la clave privada como el passphrase para poder iniciar sesión. Asegurar sus claves con un passphrase es más seguro, pero no es obligatorio. Solo el hecho de usar su par de claves ya es un enfoque más seguro que una autenticación básica por contraseña.
Al finalizar se crearán una clave privada, id_rsa
y una clave pública, id_rsa.pub
, en el directorio .ssh
del directorio home
del usuario local. Recuerde que su clave privada no debe ser compartida con absolutamente nadie que no requiera acceso a sus servidores.
Copiar la clave pública
Después de generar un par de claves SSH, usted tendrá que copiar su clave pública en su nuevo servidor. Esta sección explica dos métodos simples para hacerlo.
Opción 1: usando ssh-copy-id
Si su máquina local tiene el script ssh-copy-id
instalado, puede usarlo para instalar la clave pública en cualquier usuario para el cual tenga las credenciales de ingreso.
Ejecute el script ssh-copy-id
especificando el usuario y dirección IP del servidor en el cual quiere instalar la clave, por ejemplo:
ssh-copy-id usuariotest@su_dirección_ip
Después de ingresar su contraseña cuando se le indique, su clave pública será añadida al archivo .ssh/authorized_keys
de su usario remoto. La clave privada correspondiente ahora podrá ser para su ingreso en el servidor.
Opción 2: instalar la clave manualmente
Asumiendo que generó un par de claves SSH usando el paso anterior, utilice el siguiente comando en el terminal de su máquina local para imprimir su clave pública (id_rsa.pub
):
cat ~/.ssh/id_rsa.pub
Esto debería imprimir su clave pública SSH, la cual se debería ver similar a lo siguiente:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDso5siJiVJ6rXTb7JnjIgy+7ewZIxcPHeKke4+k0wcrV13a7ZM5EADWngKA5jsipR/lSWeYLbF09/1cWjPZGTHCGOuY4kEXEEFymShKHOvZpTC8j8g0Ps0lO2jAcy7ap73yq411bF8YmCPlu7L9Wxf+a5FeEZkYX+PXtZerx8Qt5oNZTs0JwxxoOEwtII9OKfDFh48iOWhZEB0ST/ifbpuc0eNtLhy0LtbYdIc5ZfxbD8Ign+v8YEoPAHl1fPUaVcSY1aoqqXyJo6N3yElY203H19u1T3r0y+iuUfRiBMS4R6JPkABBX0ffMe+x3nbrSWCC3hh9saJAslkIYHWdJQl usuario@sudominio.com
Luego seleccione la clave pública y cópiele en su portapapeles.
Para habilitar el uso de la clave SSH con el fin de autenticarse como el nuevo usuario remoto, debe agregar la clave pública a un archivo especial ubicado en el directorio home
del usuario.
En el servidor, como usuario root, ingrese el siguiente comando para cambiar al nuevo usuario (sustituya con su nombre de usuario real):
su - usuariotest
Ahora estará en el directorio home
de su nuevo usuario.
Cree un nuevo directorio llamado .ssh
y restrinja sus permisos usando los siguientes comandos:
mkdir ~/.ssh
chmod 700 ~/.ssh
Ahora debe abrir el archivo en el directorio .ssh
llamado authorized_keys
con un editor de texto. En este ejemplo usaremos el editor nano:
nano ~/.ssh/authorized_keys
Ahora inserte su clave pública (que debería haber copiado anteriormente) pegándola en el editor.
Presione CTRL + X para salir del archivo, luego escriba Y
para guardar los cambios realizados y presione Enter para confirmar el nombre del archivo.
Luego restrinja los permisos del archivo authorized_keys
con este comando:
chmod 600 ~/.ssh/authorized_keys
Ingrese este comando una sola vez para regresar al usuario root:
exit
Ahora su clave pública está instalada y puede usar las claves SSH para iniciar sesión con su nuevo usuario.
En el siguiente paso, demostraremos cómo aumentar la seguridad de su servidor al deshabilitar la autenticación por contraseña.
Quinto paso: Desactivar la autenticación por contraseña (recomendado)
Ahora que el nuevo usuario puede usar las claves SSH para iniciar sesión, puede seguir aumentando la seguridad de su servidor al deshabilitar la autenticación a través de una contraseña únicamente. Hacerlo restringirá el acceso SSH a su servidor y solo podrá ingresar usando la autenticación con claves SSH. De esta manera, la única forma de iniciar sesión en su servidor (además del acceso directo por consola) será poseer una clave privada que se corresponda con la clave pública instalada.
Solo desactive la autenticación por contraseña si ha instalado y probado una clave pública en su usuario como se recomienda en la sección anterior (cuarto paso). De otro modo, ¡podría bloquearse a sí mismo en el servidor!
Para deshabilitar la autenticación por contraseña en su servidor, siga los siguientes pasos.
Abra la configuración de su demonio SSH como usuario root o usando su nuevo usuario:
sudo nano /etc/ssh/sshd_config
Halle la línea que especifica el parámetro PasswordAuthentication
, quite el signo de comentario (signo almohadilla o numeral #
), y luego cambie el valor a no. Al finalizar, la línea debería lucir así:
Extracto del archivo: /etc/ssh/sshd_config
PasswordAuthentication no
También recomendamos revisar estos dos ajustes que son importantes para que la autenticación se establezca solo con claves SSH. Las mismas están configuradas así por defecto, así que si no ha modificado el archivo de configuración de su demonio SSH, no será necesario hacer ningún cambio:
Extracto del archivo: /etc/ssh/sshd_config
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Al terminar con los cambios, cierre y guarde el archivo usado el método visto en pasos anteriores (CRTL + X, luego Y y finalmente Enter).
Escriba el siguiente comando para volver a cargar el demonio SSH:
sudo systemctl reload sshd
Ahora la autenticación por contraseña estará deshabilitada. Su servidor será accesible entonces únicamente a través de autenticación con claves SSH.
Sexto paso: Probar el inicio de sesión
Ahora, antes de cerrar sesión en su servidor, debería probar su nueva configuración. No se desconecte hasta que confirme que usted puede iniciar sesión exitosamente a través de SSH.
En una nueva ventana de terminal desde su computador local, inicie sesión en el servidor usando la nueva cuenta de usuario creada. Para hacerlo, utilice el siguiente comando sustituyendo el nombre de usuario y la dirección IP con los datos correspondientes:
ssh usuariotest@su_dirección_IP
Si usted agregó la autenticación con clave pública a su usuario, tal como se describe en los pasos cuatro y cinco, su clave privada será usada como autenticación. De otro modo, se le pedirá la contraseña del usuario.
Si usted creó un par de claves con un passphrase, se le pedirá que ingrese el passphrase correspondiente a su clave. De otro modo, si su par de claves no posee un passphrase, entonces iniciará sesión sin necesidad de ingresar datos adicionales.
Una vez que la autenticación sea provista al servidor, podrá iniciar sesión como el nuevo usuario.
Recuerde que si necesita ejecutar comandos con privilegios root, simplemente debe precederlos con la opción sudo
, por ejemplo:
sudo comando_root
Séptimo paso: Configurar un Firewall básico
Los servidores con Ubuntu 16.04 pueden usar UFW firewall para asegurarse de que solo se permitan las conexiones a ciertos servicios. Podemos configurar un firewall básico usando esta aplicación muy fácilmente.
Diferentes aplicaciones pueden registrar sus perfiles tras la instalación de UFW. Estos perfiles permiten a UFW administrar estas aplicaciones por nombre. OpenSSH, el servicio que nos permite conectarnos a nuestro servidor, tiene un perfil registrado con UFW.
Puede verlo ingresando el comando:
sudo ufw app list
La salida se asemejará a lo siguiente:
Available applications:
OpenSSH
Necesitamos asegurarnos de que el firewall permita las conexiones SSH de modo que podamos volver a iniciar sesión la próxima vez. Podemos configurar UFW para que admita estas conexiones ejecutando el siguiente comando:
sudo ufw allow OpenSSH
Observará una salida como la siguiente:
Rules updated
Rules updated (v6)
Posteriormente, podemos habilitar el firewall usando:
sudo ufw enable
Presione y y Enter para proceder. Puede verificar que las conexiones SSH aún son permitidas usando:
sudo ufw status
La salida de este comando será de la forma:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Si instala y configura servicios adicionales, deberá ajustar la configuración del firewall para que permita la entrada del tráfico que quiere aceptar. El tema de configuración de UFW se escapa del alcance de este tutorial.
Recursos adicionales
En este punto, ya tiene una base sólida en su servidor. Puede instalar cualquier software necesario de ahora en adelante. Puede consultar los siguientes recursos en busca de información adicional con respecto a este tema. Aunque este material es provisto esperando que sea útil, tome en cuenta que no podemos dar fe de la actualidad o precisión de los contenidos externos.
- Consulte nuestra plataforma de documentación en donde podrá encontrar guías completamente en español con instrucciones detalladas según su distribución de Linux.
- Mientras comienza a asegurar su servidor con SSH, puede continuar mejorando su seguridad al instalar programas como Fail2Ban o Deny Hosts, para prevenir ataques de fuerza bruta en el servidor.
- Puede consultar nuestro tutorial de instalación de la infraestructura LAMP en Ubuntu 16.04.
- Documentación oficial de Ubuntu.