Mapa de la ruta
Contenido detallado
🖥️ VPS
Un VPS es tu PC en la nube: una máquina Linux que permanece encendida las 24 horas del día y a la que puedes acceder desde cualquier lugar del mundo. Aquí contratas, accedes y cuidas tu primera.
VPS significa Virtual Private Server, un servidor privado virtual. Es una parte de una computadora potente, en un centro de datos, que queda solo para ti y funciona día y noche.
Con un VPS alojas sitios, bots, bases de datos y APIs sin depender de servicios listos para usar. Es tu computadora en la nube, bajo tu control total.
El VPS tiene una IP pública fija, ejecuta Linux y permanece siempre encendido. A diferencia de tu portátil, no se apaga cuando cierras la tapa.
Los proveedores son las empresas que alquilan VPS por mes. DigitalOcean es sencillo y tiene muchos tutoriales; Hetzner ofrece una excelente relación calidad-precio; Contabo ofrece muchos recursos a bajo costo.
Elegir el proveedor adecuado evita pagar de más o quedar atado. Para empezar, cualquiera de los tres sirve; lo que cambia es el precio, la ubicación del centro de datos y el soporte.
Compara el precio mensual, la RAM, la vCPU y la región. Elige un centro de datos cerca de tus usuarios para que el sitio responda más rápido.
El paso a paso para crear una cuenta, elegir el plan más barato (el «droplet» o «servidor»), seleccionar Ubuntu y hacer clic para crear la máquina.
Es el momento en que la máquina empieza a existir. En pocos minutos recibes una IP pública y una contraseña de acceso listas para usar.
Elige Ubuntu LTS, el plan más económico y una región cercana. Anota la IP y la contraseña de root que el proveedor muestra al final.
Todo proveedor ofrece una consola web: una terminal que se abre dentro del navegador y te conecta al servidor sin necesidad de ningún programa.
Es la forma más rápida de entrar al servidor por primera vez, incluso antes de configurar SSH. Funciona hasta cuando el acceso normal falla.
Inicia sesión como root con la contraseña que te envió el proveedor. La consola web es tu plan B de emergencia: guarda este acceso.
Una visión general de cómo funciona Linux en el servidor: el usuario root (jefe), los usuarios comunes, el árbol de carpetas y los permisos de archivo.
El servidor no tiene ventanas ni clics: todo se hace con comandos. Entender los usuarios y los permisos evita que dañes el sistema o dejes brechas abiertas.
Crea un usuario común y usa sudo en vez de usar root todo el tiempo. whoami muestra quién eres; los permisos controlan quién puede leer y escribir.
Los comandos para cuidar del servidor: apt update e apt upgrade para actualizar programas y revisar el espacio en disco y la memoria.
Un servidor desactualizado y con puertos abiertos es una puerta para los intrusos. Actualizarlo con frecuencia cierra brechas de seguridad y mantiene todo funcionando.
Ejecuta apt update && apt upgrade cada semana. Usa df -h para ver el disco y free -h para ver la memoria.
🔐 SSH
SSH es el túnel secreto entre tu computadora y el servidor: todo lo que pasa por él está cifrado. Con claves, entras sin escribir una contraseña y con mucha más seguridad.
SSH (Secure Shell) es un protocolo que crea un túnel cifrado entre tu computadora y el servidor. Todo lo que escribes viaja protegido.
Es la forma estándar de controlar cualquier servidor Linux del mundo. Sin SSH, no puedes operar máquinas remotas de forma segura.
Piensa en un túnel blindado: nadie en el camino puede leer lo que pasa. El servidor escucha SSH en el puerto 22 de forma predeterminada.
El comando ssh-keygen crea un par de claves: una privada (solo tú la tienes) y una pública (va al servidor). Juntas, demuestran quién eres.
Las claves son más seguras que las contraseñas: no se pueden adivinar y no viajan por la red. Son la base del acceso sin contraseña.
La privada (id_ed25519) nunca sale de tu PC; la pública (.pub) se puede distribuir. Protege la privada con una passphrase.
El paso para llevar tu clave pública al servidor, normalmente con ssh-copy-id, que la coloca en el archivo authorized_keys.
Sin la clave pública en el servidor, este no reconoce tu clave privada. Este paso conecta los dos extremos del túnel.
ssh-copy-id usuario@ip lo hace todo de una vez. La clave queda en ~/.ssh/authorized_keys dentro del servidor.
El comando ssh usuario@ip abre la conexión con el servidor. Si las claves están bien, entras directamente, sin escribir la contraseña.
Es la puerta de entrada a tu día a día en el servidor. A partir de aquí, cada comando que ejecutas ocurre allí, en la nube.
En la primera conexión te pregunta sobre la "fingerprint": escribe yes. Usa exit para salir y volver a tu PC.
El archivo ~/.ssh/config guarda alias para tus servidores, con IP, usuario y clave. Así escribes ssh meuserver en vez del comando completo.
Memorizar IPs y flags es agotador y propenso a errores. Un alias bien hecho permite acceder al instante y organizar varias máquinas.
Cada bloque empieza con Host apelido y enumera HostName, User e IdentityFile. Un archivo, varios servidores.
Una configuración en el servidor que prohíbe iniciar sesión con contraseña y exige una clave SSH. Editar sshd_config cierra la puerta a quienes no tienen la clave.
Las contraseñas pueden descifrarse por fuerza bruta; las claves, no. Desactivar la contraseña elimina de una vez la principal fuente de intrusiones en servidores.
Define PasswordAuthentication no y reinicia SSH. Prueba la clave primero antes de cerrar la contraseña, para no quedarte afuera.
🛡️ Firewall
El firewall es el portero del servidor: decide qué puertos quedan abiertos y quién puede entrar. Con él, expones solo lo necesario y bloqueas al resto del mundo.
Un firewall es un filtro que decide qué tráfico entra y cuál sale del servidor, puerto por puerto. Es el portero que revisa cada conexión antes de dejarla pasar.
Sin firewall, todos los servicios quedan expuestos en Internet. Con él, abres solo lo necesario y cierras el resto, lo que reduce mucho el riesgo de intrusión.
Los servicios escuchan en «puertos» numerados. El firewall aplica reglas para permitir (allow) y denegar (deny) por puerto y origen.
UFW (Uncomplicated Firewall) es la forma fácil de administrar el firewall en Ubuntu. Con pocos comandos puedes permitir o bloquear puertos enteros.
El firewall de Linux sin herramientas adicionales es complejo. UFW traduce todo en comandos simples y legibles, ideales para quienes están empezando.
ufw allow 22 abre, ufw deny cierra y ufw enable inicia. ufw status muestra las reglas activas.
Los tres puertos que casi todo servidor web necesita: 22 para SSH, 80 para HTTP y 443 para HTTPS.
Saber para qué sirve cada puerto evita dos errores clásicos: dejar todo abierto o cerrar el puerto SSH y perder el acceso.
Abre 22 (acceso), 80 y 443 (sitio) y cierra el resto. Nunca bloquea la 22 sin garantizar otra vía de entrada.
Fail2ban es un programa que vigila los logs y bloquea automáticamente cualquier IP que se equivoca de contraseña muchas veces seguidas, bloqueando los ataques de fuerza bruta.
Los servidores en internet reciben miles de intentos de intrusión al día. Fail2ban responde automáticamente, sin que tengas que estar pendiente.
Crea "jails" (cadenas) que supervisan servicios como SSH. Después de X intentos fallidos, la IP queda bloqueada durante un tiempo determinado.
Let's Encrypt es una autoridad que emite certificados SSL gratuitos. Con la herramienta certbot, tu sitio empieza a usar HTTPS con el candado.
HTTPS cifra el tráfico de tu sitio y los navegadores lo exigen. Sin el candado, los usuarios ven avisos de "sitio no seguro".
O certbot emite y renueva el certificado por sí solo. HTTPS usa el puerto 443 (recuerda abrirlo en el firewall).
Una lista de verificación que reúne las protecciones del recorrido: usuario común, clave SSH, contraseña desactivada, firewall activado, Fail2ban y HTTPS.
La seguridad es la suma de varias capas. Una lista de verificación garantiza que no olvidaste ninguna y que el servidor quedó protegido.
Revisa cada elemento antes de poner algo importante en producción. Repite la lista de verificación cada vez que crees un servidor nuevo.
🎫 Tokens y acceso
Los tokens son las llaves del reino: dan acceso a APIs y servicios. Aquí aprendes a guardarlos, cambiarlos y auditar quién entra, sin exponer nunca un secreto.
Un panorama de los principales tipos de credenciales: API key (clave simple), JWT (token firmado con datos), PAT (token personal de GitHub) y OAuth (acceso delegado).
Cada servicio usa un tipo de token. Saber distinguirlos evita confundir credenciales y usar la incorrecta en el lugar equivocado.
La clave de API es la más simple; JWT lleva información dentro; OAuth es el "Iniciar sesión con Google". Todos demuestran quién eres ante el servicio.
La práctica de guardar tokens en variables de entorno, generalmente en un archivo .env que queda fuera del código y de Git.
Un token escrito directamente en el código se filtra fácilmente a GitHub y a Internet. El .env separa el secreto del programa.
Agrega .env al .gitignore siempre. Ajusta los permisos del archivo para que solo el propietario pueda leerlo.
La rotación es el hábito de cambiar los tokens de vez en cuando; el vencimiento consiste en definir una fecha de validez para que dejen de funcionar por sí solos.
Un token que dura para siempre es peligroso: si se filtra, el daño es eterno. Rotarlo limita el tiempo durante el cual una filtración puede causar daños.
Prefiere tokens con vencimiento corto. Al cambiarlos, revoca el anterior. Si sospechas que hubo una filtración, rótalos de inmediato.
Los secrets managers son bóvedas digitales que guardan tokens y contraseñas de forma segura, controlan el acceso y registran quién usó cada secreto.
Cuando el proyecto crece, distribuir los archivos .env se convierte en un caos y en un riesgo. Un almacén central organiza y protege todos los secretos.
Ejemplos: Vault, AWS Secrets Manager, Doppler. La idea central es: el secreto nunca queda en el código; siempre viene de la bóveda cuando se usa.
Auditoría es revisar los registros (logs) del servidor para saber quién entró, cuándo y qué hizo. En Linux, comandos como last y los logs de autenticación lo muestran.
Si algo sale mal, los logs cuentan la historia. Vigilar los accesos ayuda a detectar pronto una intrusión o un uso indebido.
last lista los últimos inicios de sesión; /var/log/auth.log guarda los intentos. Los intentos extraños son señal de ataque.
Un conjunto de reglas de oro para manejar tokens y accesos: el menor privilegio posible, nunca incluir secretos en el control de versiones y separar los entornos (prueba y producción).
La mayoría de las filtraciones ocurren por descuido, no por hackers geniales. Seguir buenas prácticas elimina los errores más comunes y peligrosos.
Dale a cada token solo el acceso mínimo necesario. Nunca pegues secretos en el código ni en el chat. Mantén separados los tokens de prueba y de producción.