Administración de Redes: SSH, SCP, SFTP y Protocolos de Correo Electrónico
SSH: Conexión Segura y Configuración
SSH (Secure Shell) es un protocolo de red criptográfico que permite la comunicación segura entre dos computadoras a través de una red insegura. Utiliza el puerto 22 por defecto y soporta autenticación por contraseña o mediante sistemas de claves.
Para instalar el servidor SSH en sistemas basados en Debian/Ubuntu, se utiliza el comando apt install openssh-server
. Su estado se verifica con systemctl status ssh
. Para comprobar si el puerto 22 está en uso, se puede emplear netstat -tuln | grep 22
.
Las claves de host, utilizadas para identificar el servidor ante el cliente, se guardan en /etc/ssh
. El archivo de configuración principal del servidor SSH es /etc/ssh/sshd_config
. En este archivo se configuran diversas directivas, como el puerto de escucha, la ubicación de las claves privadas del host (que suelen empezar por HostKey
y varían según el tipo de encriptación: RSA, DSA, ECDSA, ED25519) y los métodos de autenticación de usuarios, como la autenticación por contraseña (PasswordAuthentication
).
Directivas Clave en sshd_config
PermitRootLogin prohibit-password
: Indica que el usuario root tiene prohibido usar la contraseña para conectarse a la máquina remota, pero permite otros medios de autenticación (como claves SSH).PubkeyAuthentication yes
: Habilita la autenticación por clave pública/privada.PasswordAuthentication yes
: Permite la autenticación por contraseña. Por defecto, esta opción suele estar habilitada.MaxAuthTries nn
: Define el número máximo de intentos de conexión permitidos antes de cerrar la sesión. El valor por defecto suele ser 3.AllowUsers nombre_usuario
: Permite especificar una lista de usuarios que pueden iniciar sesión exclusivamente a través de SSH.
Fases de una Conexión SSH
Fase de Negociación
Se inicia una conexión TCP desde la máquina cliente hacia el servidor SSH en el puerto 22. Cliente y servidor negocian la versión de SSH a utilizar y los algoritmos de cifrado y sus parámetros. El servidor envía su clave de host pública (ubicada en /etc/ssh
con extensión .pub
) al cliente. El cliente recibe la clave y la compara con las que ya tiene. Si es la primera vez que se conecta a ese servidor, SSH solicitará confirmación. Una vez confirmada, el cliente almacena la clave en el archivo /home/usuario/.ssh/known_hosts
(en sistemas Linux/Ubuntu) o C:\Users\nombre_usuario\.ssh\known_hosts
(en Windows). Las claves se almacenan en formato Base64 (caracteres A-Z, números, + y /).
Fase de Autenticación
Existen varios mecanismos de autenticación, siendo los más comunes la autenticación por contraseña y la autenticación por clave pública/privada. Una vez que la sesión se inicia y se establece la conexión con el servidor SSH, todas las comunicaciones subsiguientes se transmiten de forma cifrada. Para iniciar una conexión SSH, se utiliza el comando: ssh nombre_usuario@ip_servidor
.
SFTP (SSH File Transfer Protocol)
SFTP es un protocolo para la transferencia segura de archivos, que se basa en la criptografía del protocolo SSH, proporcionando un canal seguro para la gestión de ficheros.
Reenvío X11 (X11 Forwarding)
El Reenvío X11 permite ejecutar aplicaciones gráficas en un servidor remoto y visualizar su interfaz en el cliente local. Para habilitarlo, se configura la directiva X11Forwarding yes
en el archivo /etc/ssh/ssh_config
del cliente. En el servidor, se pueden instalar utilidades X11 con apt install x11-apps
. En el cliente, es necesario tener un servidor de pantalla como Xorg (común en entornos gráficos de Linux) para la visualización.
Comandos Esenciales de SSH
- Conectar a un servidor SSH:
ssh -p [número_puerto] usuario@ip_servidor
(ejecutado desde el cliente). - Editar el archivo de configuración del servidor SSH:
sudo nano /etc/ssh/sshd_config
. - Transferir archivos con SCP (Secure Copy Protocol):
- De una máquina remota a una local:
scp usuario@ip_servidor:/ruta/al/archivo /ruta/local/destino
. (El usuario puede ser diferente al que se usa para la conexión SSH). - De una máquina local a una remota:
scp /ruta/local/archivo usuario@ip_servidor:/ruta/remota/destino
. Para escribir en la máquina remota, el usuario debe tener permisos de escritura en la ruta de destino (ej.chmod 777 /home/alumno
, aunque 777 es muy permisivo y no recomendado para producción).
- De una máquina remota a una local:
- Conectar vía SFTP:
sftp usuario@ip_servidor
. - Generar claves SSH (pública y privada):
Primero, navega al directorio de claves:cd ~/.ssh
(ocd /home/usuario/.ssh
).
Luego, ejecuta el comando:ssh-keygen
.
Correo Electrónico: Agentes y Protocolos
Agentes de Correo
En el sistema de correo electrónico, existen tres tipos principales de agentes:
- MTA (Mail Transfer Agent): Se encarga de transferir los mensajes entre máquinas utilizando el protocolo SMTP. Un mensaje puede pasar por varios MTAs antes de llegar a su destino. Sus funciones incluyen el encaminamiento de mensajes entre sistemas, actuar como servidor de correo y gestionar la distribución del correo saliente y entrante.
- MDA (Mail Delivery Agent): Copia los mensajes al buzón del usuario. Actúa como un puente entre el MTA y el MUA.
- MUA (Mail User Agent): Es la aplicación que utiliza el usuario para leer el correo entrante y enviar los salientes (ej. Outlook, Thunderbird, Gmail web client).
Protocolos de Correo Electrónico
Los protocolos de correo más utilizados son SMTP, POP3 e IMAP.
SMTP (Simple Mail Transfer Protocol)
El SMTP es el protocolo encargado del transporte de correo saliente. Utiliza el puerto 25 (o 587/465 para SMTP seguro). Algunas de sus órdenes principales son: HELO
, MAIL FROM
, RCPT TO
, DATA
, SUBJECT
, QUIT
.
Funcionamiento básico:
- El emisor abre una conexión TCP al puerto 25 del servidor de destino.
- El receptor contesta con el código 220 (Servicio disponible).
- El emisor envía un saludo (
HELO
oEHLO
) para identificarse. El receptor acepta y envía un código 250. Si no estuviera disponible, respondería con421 Service not available
. - Se especifica el remitente (
MAIL FROM: <[email protected]>
). - Se especifica el destinatario (
RCPT TO: <[email protected]>
). - Se envía la orden
DATA
. Después de esta, se introduce el asunto (Subject: [Asunto]
), se presiona Enter, se escribe el mensaje y, para finalizar, se introduce un punto (.
) en una línea nueva seguido de Enter. - Finalmente, se usa
QUIT
para salir de la sesión.
POP3 (Post Office Protocol version 3)
POP3 permite la gestión, acceso y transferencia de mensajes entre un servidor remoto y un cliente. Es un protocolo “temporal” en el sentido de que el usuario descarga los mensajes al cliente y, por defecto, estos se eliminan del servidor. El servidor almacena los mensajes en un buzón y los transfiere cuando el cliente los solicita.
Funcionamiento:
- Fase de Conexión: El servidor POP3 está a la escucha en el puerto 110 (o 995 para POP3S).
- Fase de Autenticación: El servidor espera un nombre de usuario (
USER
) y la contraseña de la cuenta (PASS
). Si la validación falla, no se puede pasar a la siguiente fase. - Fase de Transacción: Una vez autenticado, el buzón se bloquea y está disponible para ser consultado. Comandos comunes incluyen:
STAT
(estado del buzón),LIST
(lista los mensajes),RETR [número]
(descarga un mensaje),DELE [número]
(marca un mensaje para eliminación), yQUIT
(para pasar a la siguiente fase). - Fase de Actualización: El usuario se desconecta. El servidor actualiza el buzón, eliminando los mensajes marcados y desbloqueando el buzón para la entrada de nuevos correos.
IMAP (Internet Message Access Protocol)
IMAP está diseñado para acceder a los mensajes directamente en el servidor, siendo ideal para entornos con múltiples dispositivos (como móviles). Utiliza el puerto 143 (o 993 para IMAPS). Permite acceder desde cualquier máquina con conexión a internet, manipular los buzones en el servidor y visualizar los mensajes sin necesidad de descargarlos completamente. Proporciona una gran movilidad a los usuarios, ya que los mensajes permanecen en el servidor hasta que son eliminados explícitamente por el usuario.
Configuración de Cuenta de Correo
Para configurar una cuenta en un cliente de correo, son imprescindibles los siguientes datos:
- Servidor SMTP (salida) y su puerto (comúnmente 587 para TLS o 465 para SSL).
- Servidor IMAP/POP3 (entrada) y su puerto (IMAP: 143 o 993 para IMAPS; POP3: 110 o 995 para POP3S).
- Nombre de usuario (generalmente la dirección de correo electrónico completa).
- Contraseña de la cuenta.
- Tipo de cifrado (TLS/SSL) para conexiones seguras.
Registros DNS para Correo Electrónico
Los registros DNS (Domain Name System) esenciales para el correcto funcionamiento y seguridad del correo electrónico son:
- MX (Mail Exchange): Indica el servidor de correo responsable de recibir los mensajes para un dominio.
- SPF (Sender Policy Framework): Un registro TXT que define qué servidores están autorizados a enviar correo en nombre de un dominio, ayudando a prevenir el spoofing.
- DKIM (DomainKeys Identified Mail): Permite al remitente firmar digitalmente los correos, lo que permite al receptor verificar la autenticidad del mensaje y que no ha sido alterado en tránsito.
- DMARC (Domain-based Message Authentication, Reporting & Conformance): Una política que indica a los servidores receptores cómo manejar los correos que fallan las verificaciones SPF o DKIM, y permite al propietario del dominio recibir informes sobre el uso de su dominio.
Puertos Estándar de los Protocolos de Correo
- SMTP: 25 (sin cifrado), 587 (TLS/STARTTLS), 465 (SSL/SMTPS).
- POP3: 110 (sin cifrado), 995 (SSL/POP3S).
- IMAP: 143 (sin cifrado), 993 (SSL/IMAPS).