Introducción
Cuando creas por primera vez un nuevo servidor Rocky Linux 9, hay algunos pasos de configuración que deberías realizar al principio como parte de la configuración inicial. Esto aumentará la seguridad y la usabilidad de tu servidor y te proporcionará una base sólida sobre la cual construir.
Paso 1 — Iniciar sesión como Root
Para iniciar sesión en tu servidor, necesitarás conocer la dirección IP pública del servidor. También necesitarás la contraseña o, si instalaste una clave SSH para la autenticación, la clave privada del usuario root. Si aún no has iniciado sesión en tu servidor, es posible que desees seguir nuestra documentación sobre cómo conectarte a tu Droplet con SSH, la cual cubre este proceso en detalle.
Si aún no estás conectado a tu servidor, inicia sesión como usuario root ahora usando el siguiente comando (sustituye la parte resaltada del comando con la dirección IP pública de tu servidor):
- ssh root@your_server_ip
Acepte la advertencia sobre la autenticidad del host si aparece. Si está utilizando autenticación de contraseña, proporcione su contraseña de root para iniciar sesión. Si está utilizando una clave SSH protegida con contraseña, es posible que se le solicite ingresar la contraseña la primera vez que use la clave en cada sesión. Si es la primera vez que inicia sesión en el servidor con una contraseña, es posible que también se le pida que cambie la contraseña de root.
Sobre Root
El usuario root es el usuario administrativo en un entorno Linux y tiene privilegios muy amplios. Debido a los privilegios elevados de la cuenta root, se desaconseja su uso de manera regular. Esto se debe a que parte del poder inherente con 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 reducido de influencia para el trabajo diario. Esta cuenta aún podrá obtener privilegios aumentados cuando sea necesario.
Paso 2 — Crear un Nuevo Usuario
Una vez que haya iniciado sesión como root, puede crear una nueva cuenta de usuario que utilizará para iniciar sesión a partir de ahora.
Este ejemplo crea un nuevo usuario llamado \texttt{sammy}, pero debes reemplazarlo con cualquier nombre de usuario que prefieras:
- adduser sammy
Luego, establece una contraseña segura para el usuario \texttt{sammy}:
- passwd sammy
Se te pedirá que ingreses la contraseña dos veces. Después de hacerlo, tu usuario estará listo para usar, pero primero le darás a este usuario privilegios adicionales para usar el comando \texttt{sudo}. Esto te permitirá ejecutar comandos como \textit{root} cuando sea necesario.
Paso 3 — Conceder Privilegios Administrativos
Ahora tienes una nueva cuenta de usuario con privilegios de cuenta regulares. Sin embargo, a veces es posible que necesites realizar tareas administrativas.
Para evitar tener que cerrar sesión en tu usuario regular e iniciar sesión nuevamente como el usuario \textit{root}, puedes configurar lo que se conoce como privilegios de “superusuario” o privilegios de \textit{root} para tu cuenta regular. Esto permitirá que tu usuario regular ejecute comandos con privilegios administrativos colocando la palabra \texttt{sudo} antes de cada comando.
Para agregar estos privilegios a tu nuevo usuario, necesitas agregar el nuevo usuario al grupo \textit{wheel}. Por defecto, en Rocky Linux 9, los usuarios que pertenecen al grupo \textit{wheel} pueden usar el comando \texttt{sudo}.
Como root, ejecuta este comando para agregar tu nuevo usuario al grupo wheel (sustituye la palabra destacada con tu nuevo nombre de usuario):
- usermod -aG wheel sammy
Ahora, cuando inicies sesión como tu usuario regular, puedes escribir sudo
antes de los comandos para realizar acciones con privilegios de superusuario.
Paso 4 — Configuración de un Cortafuegos
Los cortafuegos proporcionan un nivel básico de seguridad para tu servidor. Estas aplicaciones son responsables de denegar el tráfico a todos los puertos en tu servidor, excepto aquellos puertos/servicios que hayas aprobado explícitamente. Rocky Linux tiene un servicio llamado firewalld
para realizar esta función. Se utiliza una herramienta llamada firewall-cmd
para configurar las políticas de cortafuegos de firewalld
.
Nota: Si tus servidores se ejecutan en DigitalOcean, opcionalmente puedes usar Cortafuegos en la Nube de DigitalOcean en lugar de firewalld
. Debes usar solo un cortafuegos a la vez para evitar reglas conflictivas que pueden ser difíciles de depurar.
Primero, instala firewalld
:
- dnf install firewalld -y
La configuración predeterminada de firewalld
permite conexiones ssh
, así que puedes encender el cortafuegos inmediatamente:
- systemctl start firewalld
Verifica el estado del servicio para asegurarte de que haya iniciado:
- systemctl status firewalld
Output● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-09-13 18:26:19 UTC; 1 day 2h ago
Docs: man:firewalld(1)
Main PID: 15060 (firewalld)
Tasks: 4 (limit: 10938)
Memory: 28.1M
CPU: 6.127s
CGroup: /system.slice/firewalld.service
└─15060 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
Ten en cuenta que está tanto activo
como habilitado
, lo que significa que se iniciará automáticamente si el servidor se reinicia.
Ahora que el servicio está en funcionamiento, puedes usar la utilidad firewall-cmd
para obtener y establecer información de política para el cortafuegos.
Primero, veamos qué servicios ya están permitidos:
- firewall-cmd --permanent --list-all
Outputpublic (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:
- firewall-cmd --get-services
Para agregar un servicio que debería estar permitido, utiliza la bandera --add-service
:
- 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 recargar el cortafuegos:
- firewall-cmd --reload
Recuerda que tendrás que abrir explícitamente el cortafuegos (con servicios o puertos) para cualquier servicio adicional que puedas configurar más tarde.
Paso 5 — Habilitar el Acceso Externo para tu Usuario Regular
Ahora que tienes un usuario regular no-root para uso diario, necesitas asegurarte de poder usarlo para conectarte por SSH a tu servidor.
Nota: Hasta que verifiques que puedes iniciar sesión y usar sudo
con tu nuevo usuario, debes permanecer conectado como root. De esta manera, si tienes problemas, puedes solucionarlos y realizar los cambios necesarios como root. Si estás utilizando un Droplet de DigitalOcean y experimentas problemas con la conexión SSH de tu root, puedes iniciar sesión en el Droplet utilizando la Consola de DigitalOcean.
El proceso para configurar el acceso SSH para tu nuevo usuario depende de si la cuenta root de tu servidor utiliza una contraseña o claves SSH para la autenticación.
Si la Cuenta Root Utiliza Autenticación por Contraseña
Si iniciaste sesión en tu cuenta root usando una contraseña, entonces la autenticación por contraseña está habilitada para SSH. Puedes conectarte por SSH a tu cuenta de nuevo usuario abriendo una nueva sesión de terminal y utilizando SSH con tu nuevo nombre de usuario:
- ssh sammy@your_server_ip
Después de ingresar la contraseña de tu usuario regular, iniciarás sesión. Recuerda, si necesitas ejecutar un comando con privilegios de administrador, escribe sudo
antes de él, así:
- sudo command_to_run
Se te pedirá la contraseña de tu usuario regular al usar sudo
por primera vez en cada sesión (y periódicamente después).
Para mejorar la seguridad de tu servidor, deberías configurar claves SSH en lugar de usar autenticación por contraseña. Sigue esta guía sobre cómo configurar claves SSH en Rocky Linux 9 para aprender cómo configurar la autenticación basada en claves.
Si la cuenta de root utiliza la autenticación por clave SSH
Si iniciaste sesión en tu cuenta de root usando claves SSH, entonces la autenticación por contraseña está deshabilitada 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 ~/.ssh/authorized_keys
de la cuenta de root en el servidor, puedes copiar ese archivo y la estructura de directorios a tu cuenta de nuevo usuario.
La forma más sencilla de copiar los archivos con los permisos y propietarios correctos es mediante el comando rsync
. Esto copiará el directorio .ssh
del usuario root, preservará los permisos y modificará los propietarios de los archivos, todo en un solo comando. Asegúrate de cambiar las partes resaltadas del siguiente comando para que coincidan con el nombre de tu usuario regular:
“`bash
rsync -avzh –progress /root/.ssh/ /home/tu_usuario/.ssh/
Nota: El comando rsync
trata de manera diferente las fuentes y destinos que terminan con una barra diagonal al final que aquellos sin una barra diagonal al final. Cuando uses rsync
a continuación, asegúrate de que el directorio de origen (~/.ssh
) no incluya una barra diagonal al final (verifica que no estés utilizando ~/.ssh/
).
Si agregas accidentalmente una barra diagonal al final al comando, rsync
copiará los contenidos del directorio ~/.ssh
de la cuenta root al directorio principal del usuario sudo
en lugar de copiar toda la estructura del directorio ~/.ssh
. Los archivos estarán en la ubicación incorrecta y SSH no podrá encontrarlos ni utilizarlos.
- rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
Ahora, en una nueva terminal en tu máquina local, abre una nueva sesión SSH con tu usuario no-root:
- ssh sammy@your_server_ip
Deberías haber iniciado sesión en la nueva cuenta de usuario sin usar una contraseña. Recuerda, si necesitas ejecutar un comando con privilegios administrativos, escribe sudo
antes de él así:
- sudo command_to_run
Se te solicitará tu contraseña de usuario regular cuando uses sudo
por primera vez en cada sesión (y periódicamente después).
Conclusión
En este punto, tienes una base sólida para tu servidor. Ahora puedes instalar cualquier software que necesites en tu servidor. Por ejemplo, puedes empezar instalando el servidor web Nginx.
Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-rocky-linux-9