Configuración y configuración inicial del servidor en RHEL 7


En este tutorial, analizaremos los primeros pasos de configuración que debe realizar después de una nueva instalación de Red Hat Enterprise Linux 7 en un servidor bare metal o en un servidor privado virtual.

  1. Instalación mínima de RHEL 7

Importante: los usuarios de CentOS 7 pueden seguir este artículo para realizar una configuración inicial del servidor en CentOS 7.

Actualizar el sistema RHEL 7

En el primer paso, inicie sesión en la consola del servidor RHEL con una cuenta con privilegios de root o directamente como root y ejecute el siguiente comando para actualizar completamente los componentes de su sistema, como los paquetes instalados, el kernel o aplicar otros parches de seguridad.

# yum check-update
# yum update

Para eliminar todos los paquetes descargados localmente y otros cachés de YUM relacionados, ejecute el siguiente comando.

# yum clean all

Instalar las utilidades del sistema en RHEL 7

Las siguientes utilidades pueden resultar útiles para la administración diaria del sistema: nano (editor de texto que reemplaza a lsof (utilidades para administrar redes locales) y bash-complete (autocompletar línea de comandos).

Instálelos todos de una sola vez ejecutando el siguiente comando.

# yum install nano wget curl net-tools lsof bash-completion

Configurar redes en RHEL 7

RHEL 7 tiene una amplia gama de herramientas que se pueden usar para configurar y administrar redes, desde editar manualmente el archivo de configuración de red hasta usar comandos como nmcli o route.

La utilidad más sencilla que un principiante puede utilizar para administrar y cambiar las configuraciones de red es la línea de comandos gráfica nmtui.

Para cambiar el nombre de host del sistema a través de la utilidad nmtui, ejecute el comando nmtui-hostname, configure el nombre de host de su máquina y presione OK para finalizar, como se ilustra en la siguiente captura de pantalla.

# nmtui-hostname

Para manipular una interfaz de red, ejecute el comando nmtui-edit, elija la interfaz que desea editar y seleccione editar en el menú de la derecha, como se muestra en la siguiente captura de pantalla.

Una vez que esté en la interfaz gráfica proporcionada por la utilidad nmtui, puede configurar la configuración de IP de la interfaz de red como se ilustra en la siguiente captura de pantalla. Cuando termine, navegue hasta Aceptar usando la tecla [tabulación] para guardar la configuración y salir.

Para aplicar la nueva configuración de la interfaz de red, ejecute el comando nmtui-connect, seleccione la interfaz que desea administrar y presione la opción Desactivar/Activar para retirar y subir la interfaz con la configuración de IP, como se presenta en las capturas de pantalla a continuación.

# nmtui-connect

Para ver la configuración de la interfaz de red, puede inspeccionar el contenido del archivo de la interfaz o puede emitir los siguientes comandos.

# ifconfig enp0s3
# ip a
# ping -c2 google.com

Otras utilidades útiles que se pueden utilizar para administrar la velocidad, el estado del enlace u obtener información sobre las interfaces de red de la máquina son ethtool y mii-tool.

# ethtool enp0s3
# mii-tool enp0s3

Crear nueva cuenta de usuario

En el siguiente paso, mientras está conectado como root en su servidor, cree un nuevo usuario con el siguiente comando. Este usuario se utilizará más tarde para iniciar sesión en su sistema y realizar tareas administrativas.

# adduser tecmint_user

Una vez que haya agregado el usuario mediante el comando anterior, configure una contraseña segura para este usuario emitiendo el siguiente comando.

# passwd tecmint_user

En los casos en los que desee obligar a este nuevo usuario a cambiar su contraseña en el primer intento de inicio de sesión, ejecute el siguiente comando.

# chage -d0 tecmint_user

Esta nueva cuenta de usuario tiene privilegios de cuenta regulares por ahora y no puede realizar tareas administrativas a través del comando sudo.

Para evitar el uso de la cuenta raíz para realizar privilegios administrativos, otorgue a este nuevo usuario privilegios administrativos agregando al usuario al grupo del sistema "rueda".

Los usuarios que pertenecen al grupo "rueda" están autorizados, de forma predeterminada en RHEL, a ejecutar comandos con privilegios de root mediante la utilidad sudo antes de escribir el comando necesario para la ejecución.

Por ejemplo, para agregar el usuario "tecmint_user" al grupo "rueda", ejecute el siguiente comando.

# usermod -aG wheel tecmint_user

Luego, inicie sesión en el sistema con el nuevo usuario e intente actualizar el sistema a través del comando "sudo yum update" para probar si el usuario tiene poderes de root otorgados.

# su - tecmint_user
$ sudo yum update

Configurar la autenticación de clave pública SSH en RHEL 7

En el siguiente paso para aumentar la seguridad de su servicio RHEL, configure la autenticación de clave pública SSH para el nuevo usuario. Para generar un par de claves SSH, la clave pública y la privada, ejecute el siguiente comando en la consola de su servidor. Asegúrese de haber iniciado sesión en el sistema con el usuario con el que está configurando la clave SSH.

# su - tecmint_user
$ ssh-keygen -t RSA

Mientras se genera la clave, se le pedirá que agregue una frase de contraseña para asegurar la clave. Puede ingresar una contraseña segura o dejar la contraseña en blanco si desea automatizar tareas a través del servidor SSH.

Una vez generada la clave SSH, copie el par de claves públicas en un servidor remoto ejecutando el siguiente comando. Para instalar la clave pública en el servidor SSH remoto, necesitará una cuenta de usuario que tenga credenciales para iniciar sesión en ese servidor.

$ ssh-copy-id [email protected]

Ahora debería intentar iniciar sesión a través de SSH en el servidor remoto utilizando la clave privada como método de autenticación. Debería poder iniciar sesión automáticamente sin que el servidor SSH le solicite una contraseña.

$ ssh [email protected]

Para ver el contenido de su clave SSH pública si desea instalar manualmente la clave en un servidor SSH distante, emita el siguiente comando.

$ cat ~/.ssh/id_rsa

Asegure SSH en RHEL 7

Para proteger el demonio SSH y no permitir el acceso SSH remoto a la cuenta raíz mediante contraseña o clave, abra el archivo de configuración principal del servidor SSH y realice los siguientes cambios.

$ sudo vi /etc/ssh/sshd_config

Busque la línea #PermitRootLogin sí, elimine el comentario de la línea eliminando el signo # (hashtag) del principio de la línea y modifique la línea para que se vea como se muestra en el siguiente extracto.

PermitRootLogin no

Luego, reinicie el servidor SSH para aplicar la nueva configuración y pruebe la configuración intentando iniciar sesión en este servidor con la cuenta raíz. El acceso a la cuenta raíz a través de SSH ya debería estar restringido.

$ sudo systemctl restart sshd

Hay situaciones en las que es posible que desee desconectar automáticamente todas las conexiones SSH remotas a su servidor después de un período de inactividad.

Para habilitar esta función en todo el sistema, ejecute el siguiente comando, que agrega la variable bash TMOUT al archivo bashrc principal y obliga a desconectar o eliminar todas las conexiones SSH después de 5 minutos de inactividad.

$ su -c 'echo "TMOUT=300" >> /etc/bashrc'

Ejecute el comando tail para verificar si la variable se ha agregado correctamente al final del archivo/etc/bashrc. Todas las conexiones SSH posteriores se cerrarán automáticamente después de 5 minutos de inactividad a partir de ahora.

$ tail /etc/bashrc

En la siguiente captura de pantalla, la sesión SSH remota desde la máquina drupal al servidor RHEL se ha cerrado automáticamente después de 5 minutos.

Configurar el cortafuegos en RHEL 7

En el siguiente paso, configure el firewall para asegurar aún más el sistema a nivel de red. RHEL 7 se envía con la aplicación Firewalld para administrar las reglas de iptables en el servidor.

Primero, asegúrese de que el firewall se esté ejecutando en su sistema emitiendo el siguiente comando. Si el demonio de Firewalld se detiene, debe iniciarlo con el siguiente comando.

$ sudo systemctl status firewalld
$ sudo systemctl start firewalld
$ sudo systemctl enable firewalld

Una vez que el firewall está habilitado y ejecutándose en su sistema, puede usar la utilidad de línea de comando firewall-cmd para configurar la información de la política del firewall y permitir el tráfico a algunos puertos de red específicos, como el demonio SSH, la conexión realizada a un servidor web interno u otro servicios de red relacionados.

Debido a que en este momento solo estamos ejecutando un demonio SSH en nuestro servidor, podemos ajustar la política de firewall para permitir el tráfico para el puerto de servicio SSH emitiendo el siguiente comando.

$ sudo firewall-cmd --add-service=ssh --permanent
$ sudo firewall-cmd --reload

Para agregar una regla de firewall sobre la marcha, sin aplicar la regla la próxima vez que se inicie el servidor, utilice la siguiente sintaxis de comandos.

$ sudo firewall-cmd --add-service=sshd

Si instala otros servicios de red en su servidor, como un servidor HTTP, un servidor de correo u otros servicios de red, puede agregar reglas para permitir las conexiones específicas de la siguiente manera.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --permanent --add-service=smtp

Para enumerar todas las reglas de firewall, ejecute el siguiente comando.

$ sudo firewall-cmd --permanent --list-all

Eliminar servicios innecesarios en RHEL 7

Para obtener una lista de todos los servicios de red (TCP y UDP) que se ejecutan en su servidor RHEL de forma predeterminada, emita el comando ss, como se ilustra en el ejemplo siguiente.

$ sudo ss -tulpn

El comando ss revelará algunos servicios interesantes que se inician y ejecutan de forma predeterminada en su sistema, como el servicio maestro Postfix y el servidor responsable del protocolo NTP.

Si no planea configurar este servidor como un servidor de correo, debe detener, deshabilitar y eliminar el demonio Postfix emitiendo los siguientes comandos.

$ sudo systemctl stop postfix.service 
$ sudo yum remove postfix

Recientemente, se han informado algunos ataques DDOS desagradables sobre el protocolo NTP. En caso de que no planee configurar su servidor RHEL para que se ejecute como un servidor NTP a fin de que los clientes internos sincronicen la hora con este servidor, debe deshabilitar y eliminar completamente el demonio Chrony emitiendo los siguientes comandos.

$ sudo systemctl stop chronyd.service 
$ sudo yum remove chrony

Nuevamente, ejecute el comando ss para identificar si otros servicios de red se están ejecutando en su sistema y desactívelos y elimínelos.

$ sudo ss -tulpn

Para proporcionar la hora exacta para su servidor y sincronizar la hora con un servidor de pares de tiempo superior, puede instalar la utilidad ntpdate y sincronizar la hora con un servidor NTP público, ejecutando los siguientes comandos.

$ sudo yum install ntpdate
$ sudo ntpdate 0.uk.pool.ntp.org

Para automatizar el comando ntpdate time synchronize para que se ejecute todos los días sin la intervención del usuario, programe un nuevo trabajo crontab para que se ejecute a la medianoche con el siguiente contenido.

$ sudo crontab -e

Extracto del archivo Crontab:

@daily /usr/sbin/ntpdate 0.uk.pool.ntp.org

¡Eso es todo! Ahora, su servidor RHEL está preparado para instalar el software adicional necesario para aplicaciones o servicios de red personalizados, como instalar y configurar un servidor web, un servidor de base de datos, un servicio para compartir archivos u otras aplicaciones específicas.

Para proteger y fortalecer aún más el servidor RHEL 7, consulte los siguientes artículos.

  1. La mega guía para fortalecer y proteger RHEL 7 - Parte 1
  2. La mega guía para fortalecer y proteger RHEL 7 - Parte 2

Si planea implementar sitios web en este sistema RHEL 7, obtenga información sobre cómo instalar y configurar la pila LEMP.