Introducción
Cuando crees por primera vez un nuevo servidor CentOS 8, hay algunos pasos de configuración que debes realizar desde el principio. Todo esto como parte de la configuración básica. Esto aumentará la seguridad y la usabilidad de tu servidor y te dará una base sólida para acciones posteriores.
Paso 1 – Iniciar sesión como root
Para iniciar sesión en tu servidor, necesitarás conocer la dirección IP pública de tu servidor. También necesitarás la contraseña o, si instalaste una clave SSH para la autenticación, la clave privada para la cuenta del usuario root.
Si aún no has iniciado sesión en tu servidor, puedes aprender cómo conectarte a su Droplet con SSH.
Si aún no estás conectado a tu servidor, debes iniciar sesión como usuario root ahora usando el siguiente comando. Debes sustituir la parte your_server_ip del comando con la dirección IP pública de tu servidor:
1 |
$ ssh root@your_server_ip |
Debes aceptar la advertencia sobre la autenticidad del host si aparece. Si estás utilizando la autenticación de contraseña, proporciona tu contraseña de root para iniciar sesión.
Si estás utilizando una clave SSH que está protegida con frase de contraseña, es posible que se te solicite que la ingreses. Sucederá la primera vez que uses la clave en cada sesión. Si es la primera vez que inicias sesión en el servidor con una contraseña, también se te puede solicitar que cambies la contraseña de root.
Acerca de Root
El usuario root es el usuario administrativo en un entorno Linux, y tiene privilegios muy amplios. Debido a los mayores privilegios de la cuenta root, te desaconsejamos usarla regularmente. Esto se debe a que parte del poder inherente a la cuenta root es la capacidad de realizar cambios muy destructivos, incluso por accidente.
Como tal, el siguiente paso es configurar una cuenta de usuario alternativa con un alcance de influencia reducido para el trabajo diario. Esta cuenta aún podrá obtener mayores privilegios cuando sea necesario.
Paso 2 – Crear un nuevo usuario
Una vez que hayas iniciado sesión como root, puedes crear la nueva cuenta de usuario que usaremos para iniciar sesión a partir de ahora.
En este ejemplo crearemos un nuevo usuario llamado cesar, pero debes reemplazarlo con cualquier nombre de usuario que prefieras:
1 |
# adduser cesar |
A continuación, debes establecer una contraseña segura para el usuario cesar:
1 |
# passwd cesar |
Se te pedirá que ingreses la contraseña dos veces. Después de hacerlo, tu usuario estará listo para usar, pero primero le daremos a este usuario privilegios adicionales para usar el comando sudo. Esto nos permitirá ejecutar comandos como root cuando sea necesario.
Paso 3 – Conceder privilegios administrativos
Ahora, tenemos una nueva cuenta de usuario con privilegios de cuentas regulares. Sin embargo, a veces podemos necesitar hacer tareas administrativas.
Para evitar tener que cerrar sesión en nuestro usuario normal y volver a iniciar sesión como la cuenta root, podemos configurar lo que se conoce como “superusuario” o privilegios root para nuestra cuenta normal.
Esto permitirá a nuestro usuario normal ejecutar comandos con privilegios administrativos poniendo la palabra sudo antes de cada comando.
Para agregar estos privilegios a nuestro nuevo usuario, necesitamos agregar el nuevo usuario al grupo wheel. De manera predeterminada, en CentOS 8, los usuarios que pertenecen al grupo wheel pueden usar el comando sudo.
Como root, ejecuta este comando para agregar tu nuevo usuario al grupo wheel. Debes sustituir la palabra cesar con tu nuevo nombre de usuario:
1 |
# usermod -aG wheel cesar |
Ahora, cuando inicies sesión como usuario habitual, puedes escribir sudo antes de los comandos antes para realizar acciones con privilegios de superusuario.
Paso 4 – Configuración de un firewall básico
Los firewalls proporcionan un nivel básico de seguridad para tu servidor. Estas aplicaciones son responsables de denegar el tráfico a todos los puertos de su servidor, a excepción de los puertos/servicios que has aprobado explícitamente. CentOS tiene un servicio llamado firewalld para realizar esta función. Una herramienta llamada firewall-cmd se utiliza para configurar las políticas del firewall firewalld.
Nota: Te recomendamos usar solo un firewall a la vez para evitar reglas en conflicto que pueden ser difíciles de depurar.
Primero debes instalar firewalld:
1 |
# dnf install firewalld -y |
La configuración predeterminada de firewalld permite conexiones ssh, por lo que podemos activar el firewall de inmediato:
1 |
# systemctl start firewalld |
Puedes verificar el estado del servicio para asegurarte de que se inició:
1 |
# systemctl status firewalld |
1 2 3 4 5 6 7 8 9 10 |
Output ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-02-06 16:39:40 UTC; 3s ago Docs: man:firewalld(1) Main PID: 13180 (firewalld) Tasks: 2 (limit: 5059) Memory: 22.4M CGroup: /system.slice/firewalld.service └─13180 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid |
Ten en cuenta que esté active y enabled, lo que significa que se iniciará de forma predeterminada si se reinicia el servidor.
Ahora que el servicio está en funcionamiento, podemos usar la utilidad firewall-cmd para obtener y establecer información de políticas para el firewall.
Primero veremos qué servicios ya están permitidos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# firewall-cmd --permanent --list-all Output public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: |
Para ver los servicios adicionales que puedes habilitar por nombre, escribe:
1 |
# firewall-cmd --get-services |
Para agregar un servicio que debería permitirse, debes usar el indicador –add-service:
1 |
# firewall-cmd --permanent --add-service=http |
Esto agregaría el servicio http y permitiría el tráfico TCP entrante al puerto 80. La configuración se actualizará después de volver a cargar el firewall:
1 |
# firewall-cmd --reload |
Recuerda que deberás abrir explícitamente el firewall (con servicios o puertos) para cualquier servicio adicional que puedas configurar más adelante.
Paso 5 – Habilitación del acceso externo para tu usuario habitual
Ahora que tenemos un usuario no root habitual para uso diario, debemos asegurarnos de que podamos usarlo para SSH en nuestro servidor.
Nota: Hasta que verifiques que puedes iniciar sesión y usarla con sudo tu nuevo usuario, te recomendamos que permanezcas conectado como root. De esta manera, si tienes problemas, puedes solucionar problemas y realizar los cambios necesarios como root.
Si la cuenta root usa autenticación de contraseña
Si iniciaste sesión en tu cuenta root con una contraseña, la autenticación de contraseña está habilitada para SSH. Puedes usar SSH a tu nueva cuenta de usuario abriendo una nueva sesión de terminal y usando SSH con tu nuevo nombre de usuario:
1 |
$ ssh cesar@your_server_ip |
Después de ingresar la contraseña de tu usuario normal, iniciarás sesión. Recuerda, si necesitas ejecutar un comando con privilegios administrativos, escribe sudo antes:
1 |
$ sudo comando_a_ejecutar |
Se te solicitará tu contraseña de usuario habitual cuando utilices sudo por primera vez cada sesión (y periódicamente después).
Para mejorar la seguridad de tu servidor, te recomendamos que configures las claves SSH en lugar de usar la autenticación de contraseña. Puedes seguir nuestra guía sobre la configuración de claves SSH en CentOS 8 para aprender cómo configurar la autenticación basada en claves.
Si la cuenta root usa autenticación de clave SSH
Si iniciaste sesión en tu cuenta root utilizando claves SSH, la autenticación de contraseña se deshabilita para SSH.
Deberás agregar una copia de tu clave pública al archivo ~/.ssh/authorized_keys del nuevo usuario para iniciar sesión correctamente.
Dado que tu clave pública ya está en el archivo de la cuenta root ~/.ssh/authorized_keys en el servidor, podemos copiar esa estructura de archivo y directorio a nuestra nueva cuenta de usuario.
La forma más sencilla de copiar los archivos con la propiedad y los permisos correctos es con el comando rsync. Esto copiará el directorio .ssh del usuario root, preservará los permisos y modificará los propietarios del archivo, todo en un solo comando.
Asegúrate de cambiar las partes cesar del comando a continuación para que coincida con el nombre de tu usuario habitual:
Nota: El comando rsync trata los orígenes y destinos que terminan con una barra inclinada final de manera diferente a aquellos sin una barra inclinada final. Cuando uses a continuación rsync, asegúrate de que el directorio de origen (~/.ssh) no incluya una barra inclinada final. (Debes verificar para asegurarte de que no estés usando ~/.ssh/).
Si agregas accidentalmente una barra diagonal al comando, rsync copiará el contenido del directorio de la cuenta root ~/.ssh al directorio sudo de inicio del usuario. Esto en lugar de copiar toda la estructura ~/.ssh del directorio.
Los archivos estarán en la ubicación incorrecta y SSH no podrá encontrarlos ni utilizarlos.
1 |
# rsync --archive --chown=cesar:cesar ~/.ssh /home/cesar |
Ahora, de vuelta en la nueva terminal en tu máquina local, abre una nueva sesión SSH con tu usuario no root:
1 |
$ ssh cesar@your_server_ip |
Debes iniciar sesión en la nueva cuenta de usuario sin usar una contraseña. Recuerda, si necesitas ejecutar un comando con privilegios administrativos, debes escribir sudo antes, así:
1 |
$ sudo comando_a_ejecutar |
Se te solicitará tu contraseña de usuario habitual cuando utilices sudo por primera vez cada sesión (y periódicamente después).
Conclusión
En este punto, tienes una base sólida para tu servidor. Puedes instalar cualquier software que necesites en tu servidor ahora.