Cómo Instalar y Asegurar OpenSSH en Ubuntu 24.04

OpenSSH es una implementación gratuita y de código abierto del protocolo Secure Shell (SSH).

Proporciona un conjunto de herramientas para acceder de forma segura de manera remota y transferir archivos entre computadoras a través de una red.

A diferencia de herramientas más antiguas como telnet o rcp, que transmiten datos en texto claro, OpenSSH cifra todo el tráfico, protegiendo contra espionaje, secuestro de conexiones y otros ataques.

Esto lo convierte en la opción ideal para la administración remota segura de servidores, transferencias de archivos seguras usando SFTP (Protocolo de Transferencia de Archivos SSH) y otras operaciones de red seguras.

Esta guía proporciona un recorrido paso a paso sobre cómo instalar OpenSSH en Ubuntu y distribuciones similares de Linux (como Debian, Linux Mint, etc.).

Pasos para Instalar OpenSSH en Ubuntu

Instalar OpenSSH en Ubuntu es un proceso sencillo que requiere solo unos pocos comandos simples.

1. Actualizar la Lista de Paquetes

Antes de instalar cualquier nuevo software, es crucial actualizar la lista de paquetes de tu sistema. Esto asegura que estés obteniendo la última versión disponible de OpenSSH. Ejecuta el siguiente comando en tu terminal:

sudo apt update

2. Instalar el Paquete OpenSSH Server

Ahora puedes instalar el paquete openssh-server. Este paquete contiene los archivos y configuraciones necesarios para ejecutar un servidor SSH en tu máquina Ubuntu. Usa el siguiente comando:

sudo apt-get install openssh-server

3. Verificar la Instalación de OpenSSH

Después de que se complete la instalación, el servicio SSH debería iniciarse automáticamente. Para verificar la versión de OpenSSH instalada, ejecuta:

ssh -V

4. Comprobar el Estado del Servicio SSH

Para confirmar que el servicio SSH se está ejecutando correctamente, usa el comando systemctl:

sudo systemctl status ssh

Si el servicio no se está ejecutando, puedes habilitarlo e iniciarlo con los siguientes comandos:

sudo systemctl enable ssh
sudo systemctl start ssh

Con el servicio SSH en funcionamiento, ahora puedes conectarte a tu máquina Ubuntu desde cualquier otra computadora con un cliente SSH. La mayoría de los sistemas Linux y macOS tienen clientes SSH integrados.

Habilitar la Conexión de Red a SSH (Acceso en Red Local)

Para conectarte a tu sistema Ubuntu a través de tu red local (LAN), usa el siguiente comando desde una máquina remota:

ssh username@ip_address

Sustituye username por tu nombre de usuario real en la máquina Ubuntu e ip_address por la dirección IP de la máquina Ubuntu. Para encontrar la dirección IP de tu máquina Ubuntu, usa el comando ip:

ip a

Una vez que tengas la dirección IP, vuelve a la máquina remota y ejecuta:

ssh your_username@your_ip

La primera vez que te conectes a un nuevo servidor SSH, recibirás un mensaje preguntándote si deseas continuar conectándote. Esta es una medida de seguridad para asegurarte de que estás conectándote a la máquina correcta.

Escribe yes y presiona Enter. Luego verás un mensaje similar a:

Introduce tu contraseña para la cuenta de usuario en la máquina Ubuntu.

Después de una autenticación exitosa, iniciarás sesión y verás un mensaje de bienvenida.

¿Cómo conectarse a SSH a Través de Internet? (Acceso Remoto)

Para conectarte a tu máquina Ubuntu desde fuera de tu red local (es decir, a través de Internet), necesitarás configurar el reenvío de puertos en tu router y conocer tu dirección IP pública.

1. Encontrar tu Dirección IP Pública

Para encontrar tu dirección IP pública, puedes usar un servicio como https://whatismyipaddress.com.

2. Configurar el Reenvío de Puertos en tu Router

A continuación, necesitarás configurar el reenvío de puertos en tu router. Este proceso varía según el modelo de tu router. Generalmente, deberás:

  • Iniciar sesión en la interfaz de administración de tu router (usualmente ingresando su dirección IP en un navegador web).
  • Buscar la sección «Port Forwarding» o «Virtual Server».
  • Crear una nueva regla que reenvíe el puerto externo 22 (o un puerto personalizado si decides cambiar el puerto SSH por defecto) a la dirección IP interna de tu máquina Ubuntu (la que encontraste con ip a) y el puerto 22.

Consulta la documentación de tu router para obtener instrucciones específicas. Una vez configurado el reenvío de puertos, puedes conectarte usando:

ssh your_username@your_public_ip_address

Usando VNC sobre SSH (Tunelización Segura de VNC)

Si usas Virtual Network Computing (VNC) para acceso remoto a escritorio gráfico, puedes mejorar la seguridad haciendo un túnel de la conexión VNC a través de SSH.

Esto cifra el tráfico VNC, protegiéndolo de la interceptación. Para crear un túnel SSH para VNC, usa el siguiente comando:

ssh -L 5901:localhost:5901 -N -f -l username hostname_or_IP

Aquí está el desglose de las opciones del comando:

  • ssh: Inicia el cliente SSH.
  • -L 5901:localhost:5901: Especifica el reenvío de puertos local. Esto reenvía las conexiones al puerto 5901 en tu máquina local (localhost) al puerto 5901 en la máquina remota (también llamada localhost en este contexto, refiriéndose a la máquina remota misma). VNC normalmente usa el puerto 5900 + número de pantalla (por ejemplo, 5901 para la pantalla :1).
  • -N: Instruye a SSH a no ejecutar un comando remoto. Solo queremos reenviar puertos.
  • -f: Envía SSH al fondo después de la autenticación, permitiéndote seguir usando tu terminal.
  • -l username: Especifica el nombre de usuario para iniciar sesión en el servidor SSH remoto.
  • hostname_or_IP: El nombre de host o la dirección IP de la máquina remota que ejecuta el servidor VNC.

Mejores Prácticas de Seguridad para OpenSSH

Para mejorar la seguridad de tu servidor OpenSSH y protegerlo contra accesos no autorizados, considera las siguientes mejores prácticas:

1. Cambiar el Puerto SSH por Defecto

El puerto SSH por defecto (22) es un objetivo común para ataques automatizados. Cambiarlo a un puerto no estándar (por ejemplo, 2222, 21396) puede reducir significativamente el número de ataques automatizados.

Edita el archivo /etc/ssh/sshd_config y cambia la directiva Port. Recuerda actualizar las reglas de tu firewall y el reenvío de puertos según sea necesario.

2. Usar Pares de Claves SSH para Autenticación

La autenticación basada en contraseñas es vulnerable a ataques de fuerza bruta. Los pares de claves SSH ofrecen un método de autenticación mucho más seguro.

Genera un par de claves (usando ssh-keygen), copia la clave pública en el archivo ~/.ssh/authorized_keys en el servidor y desactiva la autenticación por contraseña (ver más abajo).

3. Desactivar la Autenticación por Contraseña

Una vez que la autenticación basada en claves funcione de manera confiable, desactiva la autenticación por contraseña en /etc/ssh/sshd_config configurando PasswordAuthentication no.

Esto evita que los atacantes intenten adivinar contraseñas.

4. Desactivar el Acceso Directo como Root

Permitir el acceso directo como root a través de SSH generalmente no es una buena práctica. Desactiva el inicio de sesión de root en /etc/ssh/sshd_config configurando PermitRootLogin no.

En su lugar, inicia sesión como un usuario normal y usa sudo o su para obtener privilegios de root cuando sea necesario.

5. Usar TCP Wrappers (Opcional)

Los TCP wrappers proporcionan una capa adicional de control de acceso. Puedes usar los archivos /etc/hosts.allow y /etc/hosts.deny para especificar qué hosts o direcciones IP tienen permitido o denegado el acceso a tu servidor SSH.

Por ejemplo, para permitir acceso solo desde una dirección IP específica (192.168.1.100), agregarías lo siguiente en /etc/hosts.allow:

sshd: 192.168.1.100

Y en /etc/hosts.deny:

sshd : ALL
ALL : ALL

6. Usar un Firewall

Un firewall (como UFW en Ubuntu) es esencial para controlar el tráfico de red. Configura tu firewall para permitir solo el tráfico necesario, incluyendo el tráfico SSH en el puerto elegido.

7. Mantener OpenSSH Actualizado

Actualiza regularmente tu sistema (incluido OpenSSH) para corregir cualquier vulnerabilidad de seguridad. Usa:

sudo apt update && sudo apt upgrade

8. Considerar Fail2ban

Fail2ban es un servicio que monitorea los archivos de registro en busca de intentos fallidos de inicio de sesión y bloquea automáticamente las direcciones IP que muestran comportamientos maliciosos, como intentos repetidos de inicio de sesión fallidos por SSH.

Esto puede ayudar a mitigar los ataques de fuerza bruta.

Implementando estas medidas de seguridad, puedes reducir significativamente el riesgo de acceso no autorizado a tu sistema Ubuntu a través de SSH. Siempre prioriza la seguridad al configurar el acceso remoto.


Conclusión

OpenSSH es una herramienta poderosa y segura para la administración remota, y asegurarla es crucial para proteger tu sistema.

Siguiendo los pasos de instalación y las mejores prácticas de seguridad proporcionadas en esta guía, puedes configurar un servidor SSH seguro y eficiente en tu máquina Ubuntu 24.04.

Recuerda siempre mantener OpenSSH actualizado, usar autenticación basada en claves y aplicar medidas de seguridad adicionales como firewalls y Fail2ban para una protección óptima.

Más sobre OpenSSH


Descubre más desde CIBERED

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Deja un comentario