Tutorial

Configuración inicial para servidores con CentOS 8

Published on March 19, 2020
Español
Configuración inicial para servidores con CentOS 8

Introducción

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.

Paso 1: Iniciar sesión como root

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):

  1. 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.

Acerca de 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.

Paso 2: Crear un nuevo usuario

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:

  1. adduser sammy

A continuación, establezca una contraseña segura para el usuario sammy:

  1. 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.

Paso 3: Conceder privilegios administrativos

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):

  1. 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.

Paso 4: Configurar un firewall básico

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:

  1. 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:

  1. systemctl start firewalld

Compruebe el estado del servicio para asegurar que se haya iniciado:

  1. 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:

  1. 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 puede habilitar por nombre, escriba lo siguiente:

  1. firewall-cmd --get-services

Para añadir un servicio que debe estar permitido, utilice el indicador --add-service:

  1. 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:

  1. 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.

Paso 5: Habilitar el acceso externo para su usuario normal

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 en la cuenta root se utiliza la autenticación con contraseña

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:

  1. 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:

  1. 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 en la cuenta root se utiliza la autenticación con clave SSH

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.

  1. 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:

  1. 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:

  1. 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).

Conclusión

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.

Learn more about our products

About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


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!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.