DevOps

Configuración Segura de SSH en Linux

Para configurar adecuadamente el servicio SSH (Secure Shell) en un servidor Linux, es fundamental entender los diversos aspectos relacionados con la seguridad, la autenticación, el acceso remoto y la gestión de usuarios. El protocolo SSH es ampliamente utilizado para acceder de forma segura a sistemas remotos a través de una conexión cifrada, lo que lo convierte en una herramienta crucial para administrar servidores Linux de manera remota.

Para empezar, es esencial asegurarse de que el servicio SSH esté instalado en el servidor. En la mayoría de las distribuciones de Linux, esto se puede lograr instalando el paquete openssh-server. Una vez instalado, el servicio SSH debe iniciarse y configurarse para arrancar automáticamente en el arranque del sistema.

La configuración principal del servidor SSH se encuentra en el archivo de configuración principal, comúnmente ubicado en /etc/ssh/sshd_config. Este archivo contiene una serie de opciones que permiten personalizar el comportamiento del servidor SSH. Algunas de las opciones más importantes incluyen:

  1. Puerto SSH: Por defecto, SSH utiliza el puerto 22. Sin embargo, cambiar este puerto a uno no estándar puede aumentar la seguridad, ya que dificulta los intentos de conexión por parte de atacantes automatizados. Se puede especificar un puerto personalizado utilizando la opción Port.

  2. Autenticación: SSH admite varios métodos de autenticación, incluyendo contraseñas, claves SSH públicas y privadas, y autenticación basada en certificados. Es recomendable deshabilitar la autenticación basada en contraseñas y utilizar en su lugar la autenticación basada en claves SSH, ya que proporciona un nivel más alto de seguridad. Esto se puede lograr configurando la opción PasswordAuthentication en no y asegurándose de que la opción PubkeyAuthentication esté establecida en yes.

  3. Acceso de usuarios: El archivo sshd_config también permite controlar qué usuarios tienen permiso para iniciar sesión a través de SSH y desde qué direcciones IP. Esto se puede lograr utilizando opciones como AllowUsers, AllowGroups y DenyUsers. Es importante restringir el acceso solo a los usuarios necesarios y desde direcciones IP confiables para reducir el riesgo de acceso no autorizado.

  4. Configuración de cifrado: SSH utiliza algoritmos de cifrado para proteger la comunicación entre el cliente y el servidor. Es importante configurar el servidor SSH para utilizar algoritmos de cifrado fuertes y seguros. Esto se puede lograr especificando los algoritmos permitidos utilizando las opciones Ciphers, MACs y KexAlgorithms.

Una vez que se hayan realizado los cambios en el archivo de configuración, es necesario reiniciar el servicio SSH para que los cambios surtan efecto. Esto se puede hacer utilizando el comando específico de reinicio del servicio en la distribución de Linux que esté utilizando, como systemctl restart sshd en sistemas que utilizan systemd o service ssh restart en sistemas más antiguos.

Además de la configuración del servidor SSH, también es importante considerar la seguridad en el lado del cliente. Esto incluye la generación de pares de claves SSH públicas y privadas utilizando el comando ssh-keygen, la protección de la clave privada con una frase de contraseña segura y la configuración adecuada de los permisos en el archivo ~/.ssh/authorized_keys en el servidor para garantizar que solo las claves públicas autorizadas puedan autenticar el acceso.

En resumen, configurar adecuadamente el servicio SSH en un servidor Linux implica tomar medidas para mejorar la seguridad, como cambiar el puerto predeterminado, deshabilitar la autenticación basada en contraseñas, restringir el acceso de usuarios y configurar los algoritmos de cifrado adecuados. Al seguir estas mejores prácticas de seguridad, se puede garantizar un acceso remoto seguro y protegido a los sistemas Linux.

Más Informaciones

Claro, profundicemos en algunos aspectos clave de la configuración del servicio SSH en un servidor Linux:

1. Configuración del archivo sshd_config:

a. Autenticación:

  • PasswordAuthentication: Esta opción determina si se permite la autenticación basada en contraseñas. Es recomendable establecerla en no para deshabilitar la autenticación mediante contraseñas y favorecer métodos más seguros como la autenticación basada en claves SSH.
  • PubkeyAuthentication: Controla si se permite la autenticación mediante claves públicas SSH. Debería estar configurado en yes para permitir que los usuarios se autentiquen utilizando sus claves públicas.

b. Acceso de usuarios:

  • AllowUsers: Especifica qué usuarios tienen permiso para iniciar sesión a través de SSH. Se puede utilizar para restringir el acceso solo a usuarios específicos.
  • AllowGroups: Similar a AllowUsers, pero permite especificar grupos de usuarios en lugar de usuarios individuales.
  • DenyUsers y DenyGroups: Permiten denegar el acceso a usuarios o grupos específicos.

c. Configuración de cifrado:

  • Ciphers: Define los algoritmos de cifrado permitidos para la comunicación SSH. Se deben usar algoritmos fuertes y seguros para garantizar la integridad y confidencialidad de los datos transmitidos.
  • MACs: Especifica los algoritmos de Message Authentication Code (MAC) permitidos para proteger la integridad de los mensajes SSH.
  • KexAlgorithms: Determina los algoritmos de intercambio de claves (Key Exchange Algorithms) permitidos para establecer la conexión SSH de forma segura.

2. Cambio de puerto SSH:

Cambiar el puerto predeterminado de SSH (22) a un puerto no estándar puede ayudar a reducir la cantidad de intentos de conexión por parte de bots y scripts maliciosos. Sin embargo, es importante recordar el puerto personalizado para poder acceder al servidor de forma remota.

3. Configuración adicional de seguridad:

  • Limitar el acceso por dirección IP: Se puede configurar el firewall del servidor para restringir el acceso al servicio SSH solo desde direcciones IP específicas, lo que reduce la exposición a posibles ataques.
  • Monitorización de registros (logs): Registrar y monitorear los intentos de inicio de sesión SSH fallidos puede ayudar a detectar actividades sospechosas y posibles intentos de intrusión.

4. Gestión de claves SSH:

  • Generación de pares de claves SSH: Los usuarios deben generar un par de claves SSH pública y privada utilizando el comando ssh-keygen. La clave privada debe mantenerse segura en el cliente, mientras que la clave pública se copia en el servidor remoto.
  • Uso de agentes de autenticación (SSH agent): Los agentes de autenticación pueden gestionar las claves privadas en el cliente, evitando la necesidad de ingresar la frase de contraseña cada vez que se accede al servidor.

5. Actualizaciones regulares y auditorías de seguridad:

Es importante mantener actualizado el software SSH en el servidor para protegerse contra vulnerabilidades conocidas. Además, realizar auditorías de seguridad periódicas puede ayudar a identificar posibles debilidades en la configuración y mejorar la seguridad general del servidor SSH.

En conjunto, estas prácticas de configuración y seguridad contribuyen a establecer un entorno SSH robusto y resistente a las amenazas, garantizando la integridad y confidencialidad de la comunicación entre los clientes y el servidor Linux.

Botón volver arriba