Introducción

SSH (Secure Shell) es un protocolo de red que permite la administración remota de sistemas de manera segura. SSH cifra todo el tráfico entre el cliente y el servidor, lo que protege contra ataques de intermediarios y espionaje. En esta sección, aprenderás cómo configurar y utilizar SSH para acceder de forma remota a sistemas Linux.

Conceptos Clave

  1. SSH (Secure Shell): Protocolo de red para acceso remoto seguro.
  2. Cliente SSH: Programa que se utiliza para conectarse a un servidor SSH.
  3. Servidor SSH: Servicio que permite conexiones SSH entrantes.
  4. Autenticación: Proceso de verificar la identidad del usuario.
  5. Cifrado: Proceso de codificar datos para protegerlos de accesos no autorizados.

Instalación de SSH

En el Servidor

La mayoría de las distribuciones de Linux vienen con el servidor SSH (OpenSSH) preinstalado. Si no es así, puedes instalarlo con los siguientes comandos:

Debian/Ubuntu:

sudo apt update
sudo apt install openssh-server

CentOS/RHEL:

sudo yum install openssh-server

En el Cliente

El cliente SSH también suele estar preinstalado. Si necesitas instalarlo:

Debian/Ubuntu:

sudo apt update
sudo apt install openssh-client

CentOS/RHEL:

sudo yum install openssh-clients

Configuración del Servidor SSH

El archivo de configuración principal del servidor SSH es /etc/ssh/sshd_config. Aquí puedes ajustar varias opciones de seguridad y comportamiento.

Ejemplo de Configuración

# Puerto de escucha (por defecto es 22)
Port 22

# Protocolo a utilizar (por defecto es 2)
Protocol 2

# Permitir autenticación por contraseña
PasswordAuthentication yes

# Permitir autenticación por clave pública
PubkeyAuthentication yes

# Deshabilitar el acceso root directo
PermitRootLogin no

# Tiempo de espera para la autenticación
LoginGraceTime 2m

# Número máximo de intentos de autenticación
MaxAuthTries 3

Después de realizar cambios en el archivo de configuración, reinicia el servicio SSH:

Debian/Ubuntu:

sudo systemctl restart ssh

CentOS/RHEL:

sudo systemctl restart sshd

Conexión a un Servidor SSH

Para conectarte a un servidor SSH, utiliza el comando ssh seguido del nombre de usuario y la dirección IP o el nombre de dominio del servidor.

ssh usuario@direccion_ip

Ejemplo

Autenticación por Clave Pública

La autenticación por clave pública es más segura que la autenticación por contraseña. Aquí se explica cómo configurarla.

Generar un Par de Claves

En el cliente, genera un par de claves (pública y privada):

ssh-keygen -t rsa -b 2048

Esto creará dos archivos en ~/.ssh/: id_rsa (clave privada) e id_rsa.pub (clave pública).

Copiar la Clave Pública al Servidor

Copia la clave pública al servidor utilizando el comando ssh-copy-id:

ssh-copy-id usuario@direccion_ip

Ejemplo

ssh-copy-id [email protected]

Acceso Remoto Seguro

Deshabilitar el Acceso Root

Para mejorar la seguridad, deshabilita el acceso root directo en el archivo de configuración del servidor SSH (/etc/ssh/sshd_config):

PermitRootLogin no

Cambiar el Puerto de SSH

Cambiar el puerto por defecto (22) a otro puerto puede ayudar a reducir los intentos de acceso no autorizados:

Port 2222

Usar Autenticación por Clave Pública

Asegúrate de que la autenticación por clave pública esté habilitada y la autenticación por contraseña esté deshabilitada:

PasswordAuthentication no
PubkeyAuthentication yes

Ejercicios Prácticos

Ejercicio 1: Conexión Básica

  1. Instala el servidor SSH en una máquina virtual o un servidor.
  2. Conéctate a este servidor desde tu máquina local utilizando el comando ssh.

Ejercicio 2: Configuración de Clave Pública

  1. Genera un par de claves en tu máquina local.
  2. Copia la clave pública al servidor.
  3. Conéctate al servidor utilizando la autenticación por clave pública.

Ejercicio 3: Mejorar la Seguridad

  1. Cambia el puerto de SSH en el servidor.
  2. Deshabilita el acceso root directo.
  3. Deshabilita la autenticación por contraseña.

Soluciones

Solución al Ejercicio 1

  1. Instalar el servidor SSH:

    sudo apt install openssh-server
    
  2. Conectarse al servidor:

    ssh usuario@direccion_ip
    

Solución al Ejercicio 2

  1. Generar un par de claves:

    ssh-keygen -t rsa -b 2048
    
  2. Copiar la clave pública al servidor:

    ssh-copy-id usuario@direccion_ip
    
  3. Conectarse al servidor:

    ssh usuario@direccion_ip
    

Solución al Ejercicio 3

  1. Cambiar el puerto de SSH: Edita /etc/ssh/sshd_config y cambia Port 22 a Port 2222.

  2. Deshabilitar el acceso root directo: Edita /etc/ssh/sshd_config y cambia PermitRootLogin yes a PermitRootLogin no.

  3. Deshabilitar la autenticación por contraseña: Edita /etc/ssh/sshd_config y cambia PasswordAuthentication yes a PasswordAuthentication no.

Conclusión

SSH es una herramienta poderosa y esencial para la administración remota de sistemas Linux. En esta sección, has aprendido cómo instalar y configurar SSH, cómo conectarte a un servidor de manera segura y cómo mejorar la seguridad de tus conexiones SSH. Con estas habilidades, estarás mejor preparado para gestionar sistemas Linux de manera eficiente y segura.

Maestría en Linux: De Principiante a Avanzado

Módulo 1: Introducción a Linux

Módulo 2: Comandos Básicos de Linux

Módulo 3: Habilidades Avanzadas en la Línea de Comandos

Módulo 4: Scripting en Shell

Módulo 5: Administración del Sistema

Módulo 6: Redes y Seguridad

Módulo 7: Temas Avanzados

Módulo 8: Proyectos Prácticos

© Copyright 2024. Todos los derechos reservados