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
- SSH (Secure Shell): Protocolo de red para acceso remoto seguro.
- Cliente SSH: Programa que se utiliza para conectarse a un servidor SSH.
- Servidor SSH: Servicio que permite conexiones SSH entrantes.
- Autenticación: Proceso de verificar la identidad del usuario.
- 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:
CentOS/RHEL:
En el Cliente
El cliente SSH también suele estar preinstalado. Si necesitas instalarlo:
Debian/Ubuntu:
CentOS/RHEL:
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:
CentOS/RHEL:
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.
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):
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
:
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
):
Cambiar el Puerto de SSH
Cambiar el puerto por defecto (22) a otro puerto puede ayudar a reducir los intentos de acceso no autorizados:
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:
Ejercicios Prácticos
Ejercicio 1: Conexión Básica
- Instala el servidor SSH en una máquina virtual o un servidor.
- Conéctate a este servidor desde tu máquina local utilizando el comando
ssh
.
Ejercicio 2: Configuración de Clave Pública
- Genera un par de claves en tu máquina local.
- Copia la clave pública al servidor.
- Conéctate al servidor utilizando la autenticación por clave pública.
Ejercicio 3: Mejorar la Seguridad
- Cambia el puerto de SSH en el servidor.
- Deshabilita el acceso root directo.
- Deshabilita la autenticación por contraseña.
Soluciones
Solución al Ejercicio 1
-
Instalar el servidor SSH:
sudo apt install openssh-server
-
Conectarse al servidor:
ssh usuario@direccion_ip
Solución al Ejercicio 2
-
Generar un par de claves:
ssh-keygen -t rsa -b 2048
-
Copiar la clave pública al servidor:
ssh-copy-id usuario@direccion_ip
-
Conectarse al servidor:
ssh usuario@direccion_ip
Solución al Ejercicio 3
-
Cambiar el puerto de SSH: Edita
/etc/ssh/sshd_config
y cambiaPort 22
aPort 2222
. -
Deshabilitar el acceso root directo: Edita
/etc/ssh/sshd_config
y cambiaPermitRootLogin yes
aPermitRootLogin no
. -
Deshabilitar la autenticación por contraseña: Edita
/etc/ssh/sshd_config
y cambiaPasswordAuthentication yes
aPasswordAuthentication 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
- ¿Qué es Linux?
- Historia de Linux
- Distribuciones de Linux
- Instalando Linux
- Estructura del Sistema de Archivos de Linux
Módulo 2: Comandos Básicos de Linux
- Introducción a la Línea de Comandos
- Navegando el Sistema de Archivos
- Operaciones de Archivos y Directorios
- Visualización y Edición de Archivos
- Permisos y Propiedad de Archivos
Módulo 3: Habilidades Avanzadas en la Línea de Comandos
- Uso de Comodines y Expresiones Regulares
- Tuberías y Redirección
- Gestión de Procesos
- Programación de Tareas con Cron
- Comandos de Redes
Módulo 4: Scripting en Shell
- Introducción al Scripting en Shell
- Variables y Tipos de Datos
- Estructuras de Control
- Funciones y Librerías
- Depuración y Manejo de Errores
Módulo 5: Administración del Sistema
- Gestión de Usuarios y Grupos
- Gestión de Discos
- Gestión de Paquetes
- Monitoreo del Sistema y Optimización del Rendimiento
- Respaldo y Restauración
Módulo 6: Redes y Seguridad
- Configuración de Redes
- Firewall y Seguridad
- SSH y Acceso Remoto
- Sistemas de Detección de Intrusos
- Asegurando Sistemas Linux
Módulo 7: Temas Avanzados
- Virtualización con Linux
- Contenedores de Linux y Docker
- Automatización con Ansible
- Optimización del Kernel de Linux
- Alta Disponibilidad y Balanceo de Carga