Cuando se cree por primera vez un nuevo servidor de CentOS 8, hay algunos pasos de configuración que se deben seguir desde el principio como parte de la configuración básica. Esto aumentará la seguridad y utilidad de su servidor, y le brindará una base sólida para las siguientes acciones.
Para iniciar sesión en su servidor, deberá conocer la dirección IP pública de este. También necesitará la contraseña o, si instaló una clave SSH para la autenticación, la clave privada para la cuenta del usuario root. Si aún no inició sesión en su servidor, quizá desee aplicar nuestra documentación relacionada con cómo establecer conexión con su Droplet mediante SSH, en la que se abarca en detalle este proceso.
Si aún no está conectado con su servidor, inicie sesión como usuario root usando ahora el siguiente comando (sustituya la parte resaltada del comando por la dirección IP pública de su servidor):
- ssh root@your_server_ip
Acepte la advertencia sobre la autenticidad del host si aparece. Si utiliza la autenticación con contraseña, proporcione su contraseña root para iniciar sesión. Si utiliza una clave SSH protegida con una frase de contraseña, es posible que se le solicite ingresar esta última la primera vez que utilice la clave en cada sesión. Si es la primera vez que inicia sesión en el servidor con una contraseña, puede que también se le solicite cambiar la contraseña root.
El usuario root es el usuario administrativo de un entorno de Linux y tiene privilegios muy amplios. Debido a estos privilegios mayores de la cuenta root, no se recomienda usarla de manera regular. Esto se debe a que parte del poder inherente de la cuenta root es la capacidad de realizar cambios muy destructivos, incluso por accidente.
Por lo tanto, en el siguiente paso se establece una cuenta de usuario alternativa con un ámbito de influencia reducido para las tareas cotidianas. En esta cuenta todavía se podrán aumentar los privilegios cuando sea necesario.
Una vez que inicie sesión como root, podrá crear la nueva cuenta de usuario que usaremos de ahora en adelante para iniciar sesión.
En este ejemplo se crea un nuevo usuario llamado sammy, pero debe sustituirlo por cualquier nombre de usuario que prefiera:
- adduser sammy
A continuación, establezca una contraseña segura para el usuario sammy
:
- passwd sammy
Se le solicitará ingresar la contraseña dos veces. Después de hacerlo, su usuario estará listo para usarse, pero primero daremos a este privilegios adicionales para usar el comando sudo
. Esto nos permitirá ejecutar comandos como root cuando sea necesario.
Ahora, tenemos una nueva cuenta de usuario con privilegios de una cuenta regular. Sin embargo, a veces necesitaremos realizar tareas administrativas.
Para evitar tener que cerrar la sesión de nuestro usuario normal y volver a iniciar sesión como 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 anteponiendo la palabra sudo
a cada comando.
Para añadir estos privilegios a nuestro nuevo usuario, debemos agregarlo al grupo wheel. Por defecto, en CentOS 8, los usuarios que pertenecen al grupo wheel están autorizados para usar el comando sudo
.
Como root, ejecute este comando para añadir su nuevo usuario al grupo wheel (sustituya la palabra resaltada por su nuevo nombre de usuario):
- usermod -aG wheel sammy
Ahora, cuando inicie sesión como usuario normal, puede escribir sudo
antes de los comandos para realizar acciones con privilegios de superusuario.
Los firewalls proporcionan un nivel básico de seguridad para su servidor. Estas aplicaciones se encargan de negar el tráfico a cada puerto de su servidor, salvo en el caso de aquellos puertos y servicios que haya aprobado de forma explícita. CentOS cuenta con un servicio llamado firewalld
para realizar esta función. Se utiliza una herramienta llamada firewall-cmd
para configurar las políticas de firewall de firewalld
.
Nota: Si sus servidores se ejecutan en DigitalOcean, como opción puede usar los firewalls de DigitalOcean para la nube en lugar de firewalld
. Recomendamos usar solo un firewall a la vez para evitar reglas conflictivas que pueden ser difíciles de depurar.
Primero, instale firewalld
:
- dnf install firewalld -y
En la configuración predeterminada de firewalld
se permiten las conexiones ssh
, por lo que podemos activar el firewall de inmediato:
- systemctl start firewalld
Compruebe el estado del servicio para asegurar que se 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 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
Observe que su estado es active
y enabled
, lo cual significa que se iniciará por defecto si se reinicia el servidor.
Ahora que el servicio está activo y en ejecución, podemos usar la utilidad firewall-cmd
a fin de obtener y establecer información sobre políticas para el firewall.
Primero, enumeraremos los servicios ya 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 puede habilitar por nombre, escriba lo siguiente:
- firewall-cmd --get-services
Para añadir un servicio que debe estar permitido, utilice el indicador --add-service
:
- firewall-cmd --permanent --add-service=http
Con esto, se agregaría el servicio http
y se permitiría el tráfico TCP entrante en el puerto 80
. La configuración se actualizará después de que usted vuelva a cargar el firewall:
- firewall-cmd --reload
Recuerde que deberá abrir el firewall de forma explícita (con servicios o puertos) para cualquier servicio adicional que pueda configurar más adelante.
Ahora que tenemos un usuario no root normal para uso diario, debemos asegurarnos de que podamos usarlo para aplicar SSH en nuestro servidor.
Nota: Mientras no verifique que pueda iniciar sesión y usar sudo
con su nuevo usuario, le recomendamos permanecer conectado como root. De esta manera, si tiene problemas, puede resolverlos y realizar cualquier cambio necesario como root. Si utiliza un Droplet de DigitalOcean y experimenta problemas con su conexión SSH de root, puede iniciar sesión en el Droplet usando la consola de DigitalOcean.
El proceso para configurar el acceso SSH de su nuevo usuario depende de que en la cuenta root de su servidor se utilicen una contraseña o claves SSH para la autenticación.
Si inició sesión en su cuenta root usando una contraseña, entonces la autenticación con contraseña estará habilitada para SSH. Puede aplicar SSH en su nueva cuenta de usuario abriendo una nueva sesión de terminal y usando SSH con su nuevo nombre de usuario:
- ssh sammy@your_server_ip
Después de ingresar la contraseña de su usuario normal, iniciará sesión. Recuerde que si necesita ejecutar un comando con privilegios administrativos debe escribir sudo
antes de este, como se muestra a continuación:
- sudo command_to_run
Se le solicitará la contraseña de su usuario normal cuando utilice sudo
por primera vez en cada sesión (y periódicamente después).
Para mejorar la seguridad de su servidor, le recomendamos enfáticamente establecer claves de SSH en lugar de usar la autenticación con contraseña. Siga nuestra guía de configuración de claves de SSH en CentOS 8 para aprender a configurar la autenticación basada en claves.
Si inició sesión en su cuenta root usando claves SSH, la autenticación con contraseña estará desactivada para SSH. Para iniciar sesión con éxito, deberá añadir una copia de su clave pública al archivo ~/.ssh/authorized_keys
del nuevo usuario.
Debido a que su clave pública ya está en el archivo ~/.ssh/authorized_keys
de la cuenta root del servidor, podemos copiar esa estructura de archivos y directorios a nuestra nueva cuenta de usuario.
El medio más sencillo para copiar los archivos con la propiedad y los permisos adecuados es el comando rsync
. Con este, se copiará el directorio .ssh
del usuario root, se conservarán los permisos y se modificarán los propietarios de archivos; todo a través de un solo comando. Asegúrese de cambiar las porciones resaltadas del comando que se muestra a continuación para que coincida con el nombre de su usuario normal:
Nota: El comando rsync
trata de manera diferente las fuentes y destinos que tienen una barra diagonal al final respecto de aquellos que no la tienen. Al usar rsync
a continuación, asegúrese de que en el directorio de origen (~/.ssh
) no se incluya una barra diagonal al final (verifique que no esté usando ~/.ssh/
).
Si accidentalmente añade una barra diagonal al final del comando, en rsync
se copiará el contenido del directorio ~/.ssh
de la cuenta root al directorio principal del usuario sudo
en lugar de la estructura de directorios completa ~/.ssh
. Los archivos se encontrarán en la ubicación equivocada y SSH no podrá encontrarlos ni utilizarlos.
- rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
Ahora, de vuelta en la nueva terminal de su máquina local, abra una nueva sesión de SSH con su usuario no root:
- ssh sammy@your_server_ip
Su sesión de la nueva cuenta de usuario deberá iniciarse sin contraseña. Recuerde que si necesita ejecutar un comando con privilegios administrativos debe escribir sudo
antes de este, como se muestra a continuación:
- sudo command_to_run
Se le solicitará la contraseña de su usuario normal cuando utilice sudo
por primera vez en cada sesión (y periódicamente después).
En este momento, dispondrá de una base sólida para su servidor. Ahora podrá instalar el software que necesite en su servidor.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!