Una vez que haya instalado su servidor CentOS 8 / RHEL 8, lo segundo es asegurarlo para evitar el acceso no autorizado y las intrusiones. Como dice el adagio, «más vale prevenir que curar», también es mejor prevenir los hacks que intentar remediarlo.
Explore algunos pasos que puede seguir para fortalecer y proteger el servidor CentOS 8 / RHEL 8 y frustrar los intentos de piratería.
1) Configurar un cortafuegos
Como usuario de Linux preocupado por la seguridad, no permitiría el tráfico en su sistema CentOS 8 / RHEL 8 simplemente por razones de seguridad. De hecho, configurar un firewall es una de las tareas iniciales de configuración del servidor que un administrador de sistemas debe realizar para abrir solo puertos específicos y permitir servicios actualmente en uso.
De forma predeterminada, el sistema CentsO8/RHEL 8 se envía con cortafuegos cortafuegos que se puede iniciar y habilitar en el inicio ejecutando los comandos:
$ sudo systemctl start firewalld $ sudo systemctl enable firewalld
Para verificar los servicios permitidos en el firewall, simplemente ejecute el comando:
$ sudo firewall-cmd --list all
Para abrir un puerto en el firewall, por ejemplo, el puerto 443, ejecute el comando:
$ sudo firewall-cmd --add-port=443/tcp --zone=public --permanent
Para permitir un servicio, por ejemplo, ssh, use el comando:
$ sudo firewall-cmd --add-service=ssh --zone=public --permanent
Para eliminar un puerto y un servicio, utilice el –quitar-puerto y –eliminar-servicio atributos respectivamente.
Para que los cambios surtan efecto, siempre vuelva a cargar el firewall como se muestra.
$ sudo firewall-cmd --reload
2) Deshabilitar servicios no utilizados/no deseados
Siempre se recomienda desactivar los servicios no utilizados o innecesarios en su servidor. Esto se debe a que cuanto mayor sea la cantidad de servicios en ejecución, mayor será la cantidad de puertos abiertos en su sistema que un atacante puede explotar para obtener acceso a su sistema. Además, desista de usar un servicio antiguo e inseguro como telnet que envía tráfico en texto sin formato
Las mejores prácticas de seguridad recomiendan deshabilitar los servicios no utilizados y deshacerse de todos los servicios inseguros que se ejecutan en su sistema. Puedes usar el herramienta nmap para escanear su sistema y verificar qué puertos están abiertos y siendo escuchados.
3) Asegure los archivos críticos
Es esencial bloquear los archivos críticos para evitar la eliminación o edición accidental. Dichos archivos incluyen /etc/passwd y /etc/gshadow que contienen contraseñas cifradas. Para hacer que los archivos sean inmutables (es decir, evitar la modificación o la eliminación accidental), utilice el comando chattr como se muestra:
$ sudo chattr +i /etc/passwd $ sudo chattr +i /etc/shadow
Esto asegura que un pirata informático no pueda cambiar ninguna de las contraseñas de los usuarios ni eliminarlos, lo que provocaría la denegación del inicio de sesión en el sistema.
4) Protocolo SSH seguro
El protocolo SSH es un protocolo popularmente utilizado para inicios de sesión remotos. Por defecto, el protocolo tiene debilidades nativas que pueden ser explotadas por un hacker.
De forma predeterminada, SSH permite el inicio de sesión remoto por parte del usuario raíz. Esta es una escapatoria potencial y si un pirata informático puede obtener la contraseña de la raíz de su sistema, su servidor está prácticamente a su merced. Para evitar esto, es aconsejable denegar el inicio de sesión raíz remoto y, en su lugar, crear un usuario normal de inicio de sesión con privilegios de sudo. Puede efectuar esto modificando el archivo de configuración de SSH /etc/ssh/sshd_config y deshabilitando el inicio de sesión raíz como se muestra:
PermitRootLogin
Otra forma de proteger SSH es configurar la autenticación sin contraseña SSH mediante el uso de claves ssh. En lugar de utilizar la autenticación de contraseña, que es propensa a los ataques de fuerza bruta, se prefieren las claves SSH, ya que solo permiten la entrada a los usuarios con la clave ssh para iniciar sesión en el servidor remoto y bloquear a cualquier otro usuario. El primer paso para habilitar la autenticación sin contraseña es generar un par de claves con el comando:
$ ssh-keygen
Esto genera un par de claves pública y privada. La clave privada reside en el host mientras que la clave pública se copia en el sistema o servidor remoto. Una vez que se copia el par de claves ssh, puede iniciar sesión sin esfuerzo en el sistema remoto sin que se le solicite una contraseña. A continuación, deshabilite la autenticación de contraseña modificando el archivo de configuración /etc/ssh/sshd_config y configurando este valor:
PasswordAuthentication no
Una vez que haya realizado los cambios, asegúrese de reiniciar el servicio SSH para que los cambios surtan efecto.
$ sudo systemctl restart sshd
5 ) Defina un límite para los intentos de contraseña
Para fortalecer aún más su servidor, puede considerar limitar la cantidad de intentos de contraseña al iniciar sesión a través de SSH para evitar ataques de fuerza bruta. Nuevamente, diríjase al archivo de configuración de SSH, desplácese y localice el parámetro «MaxAuthTries». Descoméntelo y establezca un valor, por ejemplo, 3 como se muestra.
MaxAuthTries 3
Esto implica que después de 3 intentos de contraseña incorrecta, la sesión se cerrará. Esto es útil especialmente cuando desea bloquear scripts/programas robóticos que intentan acceder a su sistema.
6) Configurar un sistema de prevención de intrusiones (IPS)
Hasta ahora, hemos cubierto los pasos básicos que puede seguir para fortalecer su servidor CentOS 8 / RHEL 8. Para agregar otra capa, se recomienda que instale un sistema de detección de intrusos. Un ejemplo perfecto de IPS es Fail2ban.
Fail2ban es un sistema de prevención de intrusiones gratuito y de código abierto que protege a los servidores de los ataques de fuerza bruta al prohibir las direcciones IP después de una cierta cantidad de intentos de inicio de sesión que se pueden especificar en su archivo de configuración. Una vez bloqueado, el usuario malicioso o no autorizado ni siquiera puede iniciar un intento de inicio de sesión SSH.
7) Actualiza regularmente tu servidor
Este artículo no estaría completo sin enfatizar cuán crítico es actualizar su servidor regularmente. Esto garantiza que su servidor obtenga las últimas funciones y actualizaciones de seguridad que son esenciales para abordar los problemas de seguridad existentes.
Puede configurar actualizaciones automáticas utilizando la utilidad de cabina, que es una herramienta de administración de servidor basada en GUI que también realiza una serie de otras tareas. Esto es ideal, especialmente si tiene la intención de irse de vacaciones o una estadía prolongada sin acceso al servidor.