Documentación y hojas de referencia
Referencias rápidas para tener a mano mientras trabajas. Busca en todas las fichas a la vez.
Ciberseguridad
OWASP Top 10 (2021)
Los diez riesgos de seguridad más críticos de las aplicaciones web y qué significa cada uno.
| Riesgo | Qué significa |
|---|---|
| A01 | Fallos de control de acceso: los usuarios acceden a datos o acciones que no les corresponden. |
| A02 | Fallos criptográficos: datos sensibles enviados o almacenados sin un cifrado robusto. |
| A03 | Inyección: la entrada se ejecuta como SQL, comandos de shell u otro código. Incluye cross-site scripting. |
| A04 | Diseño inseguro: no se tuvo en cuenta la seguridad desde el principio. |
| A05 | Configuración de seguridad incorrecta: contraseñas predeterminadas, almacenamiento abierto y errores demasiado detallados. |
| A06 | Componentes vulnerables y desactualizados: bibliotecas antiguas con fallos conocidos. |
| A07 | Fallos de identificación y autenticación: accesos débiles, ausencia de MFA y sesiones mal gestionadas. |
| A08 | Fallos de integridad del software y los datos: actualizaciones y pipelines sin verificar. |
| A09 | Fallos de registro y supervisión de seguridad: los ataques pasan desapercibidos. |
| A10 | Falsificación de solicitudes del lado del servidor: se engaña al servidor para que acceda a direcciones internas. |
Ciberseguridad
Pasos de respuesta a incidentes
El ciclo de vida de respuesta a incidentes del NIST, en el orden en que se aplica.
| Paso | Qué haces |
|---|---|
| Preparación | Ten preparados planes, contactos, herramientas y copias de seguridad antes de que ocurra algo. |
| Detección y análisis | Detecta el incidente, confírmalo y evalúa su gravedad. |
| Contención | Detén la propagación: aísla equipos y bloquea cuentas o direcciones. |
| Erradicación | Elimina la causa: malware, puertas traseras y cuentas comprometidas. |
| Recuperación | Restaura los sistemas desde copias de seguridad limpias y supervísalos de cerca. |
| Lecciones aprendidas | Documenta lo ocurrido y corrige las deficiencias para que no se repita. |
Redes
Puertos comunes
Puertos que encontrarás en servidores, escaneos y reglas de firewall.
| Puerto | Servicio |
|---|---|
| 20/tcp · FTP data | Canal de datos para la transferencia de archivos. Sin cifrar: es preferible usar SFTP. |
| 21/tcp · FTP | Control de transferencia de archivos. Envía contraseñas en texto plano. |
| 22/tcp · SSH | Inicio de sesión remoto y copia de archivos seguros (SFTP, SCP). |
| 23/tcp · Telnet | Inicio de sesión remoto antiguo sin cifrado. Desactívalo y usa SSH. |
| 25/tcp · SMTP | Entrega de correo electrónico entre servidores de correo. |
| 53/tcp/udp · DNS | Consultas de nombres de dominio. |
| 67/udp · DHCP | Asigna direcciones IP en una red local. |
| 80/tcp · HTTP | Tráfico web sin cifrar. Redirígelo a HTTPS. |
| 110/tcp · POP3 | Descarga de correo electrónico (antiguo, sin cifrar). |
| 123/udp · NTP | Sincronización horaria. |
| 143/tcp · IMAP | Lectura de correo en el servidor (sin cifrar). |
| 161/udp · SNMP | Supervisión de dispositivos de red. Cambia las cadenas de comunidad predeterminadas. |
| 389/tcp · LDAP | Servicios de directorio como Active Directory. |
| 443/tcp · HTTPS | Tráfico web cifrado (HTTP sobre TLS). |
| 445/tcp · SMB | Uso compartido de archivos de Windows. Nunca lo expongas a internet. |
| 587/tcp · SMTP submission | Envío de correo desde una aplicación o un cliente de correo, con TLS. |
| 993/tcp · IMAPS | Lectura de correo mediante TLS. |
| 1433/tcp · MS SQL | Base de datos Microsoft SQL Server. |
| 3306/tcp · MySQL | Bases de datos MySQL y MariaDB. Mantén el acceso privado. |
| 3389/tcp · RDP | Escritorio remoto de Windows. Un objetivo habitual: protégelo con una VPN. |
| 5432/tcp · PostgreSQL | Base de datos PostgreSQL. Mantenla privada. |
| 6379/tcp · Redis | Caché Redis. A menudo se deja abierta sin contraseña. |
| 8080/tcp · HTTP alt | Puerto común para servidores de desarrollo y proxies. |
| 27017/tcp · MongoDB | Base de datos MongoDB. Mantenla privada. |
Desarrollo de software
Códigos de estado HTTP
Qué significan los números en las respuestas de las API y los errores del navegador.
| Código | Significado |
|---|---|
| 200 OK | La solicitud se completó correctamente. |
| 201 Created | Se ha creado un nuevo recurso. |
| 204 No Content | La operación se realizó correctamente y no hay nada que devolver. |
| 301 Moved Permanently | La dirección ha cambiado de forma permanente; usa la nueva. |
| 304 Not Modified | Tu copia en caché sigue actualizada. |
| 400 Bad Request | La solicitud tiene un formato incorrecto o no es válida. |
| 401 Unauthorized | No has iniciado sesión, o el token falta o ha caducado. |
| 403 Forbidden | Has iniciado sesión, pero no tienes permiso para hacer esto. |
| 404 Not Found | No existe nada en esta dirección. |
| 409 Conflict | La solicitud entra en conflicto con el estado actual, por ejemplo, por un duplicado. |
| 429 Too Many Requests | Se ha alcanzado un límite de solicitudes; espera y vuelve a intentarlo. |
| 500 Internal Server Error | Algo ha fallado en el servidor. |
| 502 Bad Gateway | Un servidor intermediario recibió una respuesta no válida del siguiente servidor. |
| 503 Service Unavailable | El servidor está sobrecargado o fuera de servicio por mantenimiento. |
Desarrollo de software
Hoja de referencia de comandos Git
Los comandos de Git que cubren casi cualquier jornada de trabajo.
| Comando | Qué hace |
|---|---|
| git clone <url> | Copia un repositorio en tu equipo. |
| git status | Ver qué ha cambiado y qué está preparado para el commit. |
| git add -p | Preparar los cambios para el commit por partes tras revisarlos. |
| git commit -m "message" | Guarda una instantánea con un mensaje. |
| git switch -c feature | Crea una rama y cámbiate a ella. |
| git pull --rebase | Obtener los últimos cambios y volver a aplicar los tuyos sobre ellos. |
| git push -u origin feature | Sube tu rama y configura su seguimiento. |
| git log --oneline --graph | Mostrar un historial compacto con ramas. |
| git diff | Mostrar los cambios que aún no están preparados para el commit. |
| git stash | Aparta los cambios sin terminar para más adelante. |
| git revert <commit> | Deshaz un commit con un nuevo commit, conservando el historial. |
Nube y Linux
Guía rápida de comandos de Linux
Los comandos que usarás a diario en un servidor Linux.
| Comando | Qué hace |
|---|---|
| pwd | Mostrar la carpeta en la que estás. |
| ls -la | Lista todos los archivos con detalles, incluidos los ocultos. |
| cd /var/log | Mueve a otra carpeta. |
| cat file.txt | Muestra un archivo. |
| less file.txt | Lee un archivo largo página por página. |
| grep -i error app.log | Buscar líneas que contengan una palabra, sin distinguir mayúsculas de minúsculas. |
| chmod 755 script.sh | Cambia los permisos de un archivo. |
| chown user:group file | Cambia el propietario de un archivo. |
| ps aux | Lista los procesos en ejecución. |
| top | Observa el uso de CPU y memoria en tiempo real. |
| df -h | Mostrar el espacio libre en disco. |
| sudo apt update && sudo apt upgrade | Instala actualizaciones en Debian o Ubuntu. |
| ssh user@host | Conéctate a un servidor remoto. |
| tail -f /var/log/syslog | Seguir un archivo de registro a medida que crece. |
Nube y Linux
Comandos de Docker y Kubernetes
Crea, ejecuta y depura contenedores y luego gestiónalos en un clúster.
| Comando | Qué hace |
|---|---|
| docker build -t app . | Crea una imagen a partir del Dockerfile de esta carpeta. |
| docker run -p 8080:80 app | Ejecuta la imagen y expón el puerto 80 como 8080. |
| docker ps | Lista los contenedores en ejecución. |
| docker logs -f <id> | Seguir la salida de un contenedor. |
| docker exec -it <id> sh | Abre una shell dentro de un contenedor en ejecución. |
| kubectl get pods | Lista los pods del namespace actual. |
| kubectl describe pod <name> | Mostrar detalles y eventos recientes de un pod. |
| kubectl logs <pod> | Muestra los registros de un pod. |
| kubectl apply -f deploy.yaml | Crea o actualiza recursos a partir de un archivo. |
| kubectl rollout undo deployment/app | Vuelve a la versión anterior. |
Redes
Tipos de registros DNS
Los registros que encontrarás en una zona DNS y la función de cada uno.
| Registro | Finalidad |
|---|---|
| A | Asocia un nombre a una dirección IPv4. |
| AAAA | Asocia un nombre a una dirección IPv6. |
| CNAME | Convierte un nombre en alias de otro. |
| MX | Indica qué servidores de correo reciben los mensajes del dominio. |
| TXT | Texto libre, usado para SPF, DKIM y comprobaciones de propiedad del dominio. |
| NS | Enumera los servidores de nombres responsables del dominio. |
| SOA | Inicio de autoridad: la configuración principal de la zona y su número de serie. |
| PTR | Resolución inversa: convierte una dirección IP en un nombre. |
| SRV | Apunta al host y al puerto de un servicio específico. |
| CAA | Limita qué autoridades de certificación pueden emitir certificados. |
Redes
Tabla de CIDR y máscaras de subred
Longitud del prefijo, máscara de subred, direcciones totales y hosts utilizables.
| Prefijo | Máscara · total · utilizables |
|---|---|
| /8 | 255.0.0.0 · 16,777,216 · 16,777,214 |
| /16 | 255.255.0.0 · 65,536 · 65,534 |
| /20 | 255.255.240.0 · 4,096 · 4,094 |
| /22 | 255.255.252.0 · 1,024 · 1,022 |
| /24 | 255.255.255.0 · 256 · 254 |
| /25 | 255.255.255.128 · 128 · 126 |
| /26 | 255.255.255.192 · 64 · 62 |
| /27 | 255.255.255.224 · 32 · 30 |
| /28 | 255.255.255.240 · 16 · 14 |
| /29 | 255.255.255.248 · 8 · 6 |
| /30 | 255.255.255.252 · 4 · 2 |
| /32 | 255.255.255.255 · 1 · 1 |
Redes
Comandos para diagnosticar problemas de red
Comandos para averiguar dónde falla una conexión. Prueba únicamente sistemas propios o para los que tengas autorización.
| Comando | Qué hace |
|---|---|
| ping -c 4 example.com | Comprueba si un host responde y cuánto tarda. |
| traceroute example.com | Muestra todos los routers por los que pasa un paquete en su recorrido. |
| dig example.com A | Consultar los registros DNS de un nombre. |
| nslookup example.com | Una consulta DNS más sencilla que funciona en la mayoría de los sistemas. |
| curl -I https://example.com | Obtén solo las cabeceras de respuesta de una página web. |
| ip addr | Muestra tus interfaces de red y direcciones IP. |
| ip route | Muestra adónde se envía el tráfico, incluida la puerta de enlace predeterminada. |
| ss -tulpn | Listar los puertos en escucha y los programas que los abrieron. |
| nmap -sV 192.168.1.10 | Escanea un equipo de tu propiedad para ver los puertos abiertos y las versiones de los servicios. |
| tcpdump -i eth0 port 53 | Captura paquetes DNS en una interfaz. |
Desarrollo de software
Guía rápida de SQL
Las sentencias utilizadas en la mayoría de las operaciones con bases de datos. Pasa siempre las entradas del usuario como parámetros, nunca concatenando cadenas.
| Sentencia | Qué hace |
|---|---|
| SELECT name, email FROM users; | Leer columnas de una tabla. |
| SELECT * FROM orders WHERE total > 100; | Filtra filas mediante una condición. |
| ORDER BY created_at DESC LIMIT 10 | Ordena el resultado y conserva solo las primeras filas. |
| INSERT INTO users (name) VALUES ($1); | Añade una fila. $1 es un parámetro que se rellena de forma segura. |
| UPDATE users SET name = $1 WHERE id = $2; | Modifica filas existentes. Nunca olvides el WHERE. |
| DELETE FROM sessions WHERE expires_at < now(); | Eliminar las filas que coincidan. |
| JOIN orders ON orders.user_id = users.id | Combina filas de dos tablas que comparten un valor. |
| SELECT status, count(*) FROM orders GROUP BY status; | Agrupa filas y cuéntalas o suma sus valores. |
| CREATE INDEX ON users (email); | Acelera las búsquedas en una columna. |
| BEGIN; ... COMMIT; | Ejecuta varias sentencias como una única transacción de todo o nada. |
Desarrollo de software
Guía rápida de expresiones regulares
Patrones para buscar y validar texto. Pruébalos en la herramienta de prueba de expresiones regulares.
| Patrón | Coincidencias |
|---|---|
| . | Cualquier carácter individual excepto un salto de línea. |
| \d \w \s | Un dígito, un carácter de palabra, un carácter de espacio en blanco. |
| ^ $ | El inicio y el final del texto. |
| \b | Un límite de palabra. |
| * + ? | Cero o más, uno o más, cero o uno del elemento anterior. |
| {2,4} | Entre 2 y 4 del elemento anterior. |
| [abc] [^abc] | Uno de los caracteres indicados, o cualquier carácter que no esté en la lista. |
| (cat|dog) | Un grupo que coincide con cat o dog y recuerda la coincidencia. |
| (?:cat|dog) | El mismo grupo, pero sin recordarlo. |
| (?=x) | Una aserción de anticipación: solo si a continuación aparece x, sin consumirlo. |
Nube y Linux
Fundamentos de scripting en Bash
Los elementos básicos de los scripts de shell para automatización.
| Sintaxis | Significado |
|---|---|
| #!/usr/bin/env bash | Primera línea: qué programa ejecuta el script. |
| set -euo pipefail | Detén la ejecución ante errores, variables sin definir y fallos en tuberías. Una opción predeterminada más segura. |
| name="web01"; echo "$name" | Define y usa una variable. Ponla entre comillas para preservar los espacios. |
| if [ -f "$file" ]; then ... fi | Ejecuta comandos solo si se cumple una condición; en este caso, si existe un archivo. |
| for f in *.log; do ... done | Repetir comandos para cada elemento de una lista. |
| cmd1 | cmd2 | Envía la salida de un comando a otro. |
| cmd > out.txt cmd >> out.txt | Escribe la salida en un archivo, reemplazando su contenido o añadiéndola al final. |
| $? | El código de salida del último comando. 0 significa que se ejecutó correctamente. |
| cmd1 && cmd2 cmd1 || cmd2 | Ejecuta el segundo solo si el primero tiene éxito, o solo si falla. |
| chmod +x script.sh && ./script.sh | Dar permisos de ejecución a un script y ejecutarlo. |
Nube y Linux
Sintaxis de programación de cron
Cinco campos: minuto, hora, día del mes, mes y día de la semana. Pruébalos en la guía de Cron.
| Expresión | Ejecuciones |
|---|---|
| * * * * * | Cada minuto. |
| */15 * * * * | Cada 15 minutos. |
| 0 * * * * | Al comienzo de cada hora. |
| 0 2 * * * | Todos los días a las 02:00. |
| 30 9 * * 1-5 | A las 09:30 entre semana, de lunes a viernes. |
| 0 0 1 * * | A medianoche del primer día de cada mes. |
| 0 0 * * 0 | A medianoche cada domingo. |
| 0 8,20 * * * | Dos veces al día, a las 08:00 y a las 20:00. |
Nube y Linux
Modos de permisos de Linux
Valores habituales de chmod y cuándo usarlos. Lectura es 4, escritura es 2 y ejecución es 1.
| Modo | Significado |
|---|---|
| 777 rwxrwxrwx | Todos pueden hacer de todo. Casi nunca es lo correcto. |
| 755 rwxr-xr-x | Acceso completo para el propietario; lectura y ejecución para los demás. Habitual en programas y carpetas. |
| 750 rwxr-x--- | Acceso completo para el propietario; lectura y ejecución para el grupo; ningún acceso para los demás. |
| 700 rwx------ | Solo el propietario tiene acceso. Ideal para carpetas privadas. |
| 664 rw-rw-r-- | El propietario y el grupo pueden editar; los demás pueden leer. |
| 644 rw-r--r-- | El propietario puede editar y todos pueden leer. Habitual en archivos web. |
| 640 rw-r----- | El propietario edita y el grupo lee. Ideal para archivos de configuración con contraseñas. |
| 600 rw------- | Solo el propietario puede leer y escribir. Obligatorio para las claves privadas SSH. |
| 400 r-------- | Solo lectura para el propietario. Ideal para claves que nunca cambian. |
Ciberseguridad
Cabeceras de seguridad web e indicadores de cookies
Cabeceras de respuesta que hacen que los navegadores apliquen un comportamiento más seguro.
| Cabecera o indicador | Qué protege |
|---|---|
| Content-Security-Policy | Limita los orígenes desde los que pueden cargarse scripts, imágenes y marcos. Ofrece una protección sólida contra XSS. |
| Strict-Transport-Security | Indica a los navegadores que usen siempre HTTPS para este sitio. |
| X-Content-Type-Options: nosniff | Impide que los navegadores adivinen los tipos de archivo y ejecuten scripts camuflados. |
| X-Frame-Options: DENY | Impide que otros sitios muestren el tuyo dentro de un marco (clickjacking). |
| Referrer-Policy | Controla qué parte de tu dirección se envía a otros sitios. |
| Permissions-Policy | Desactiva funciones del navegador, como la cámara o la ubicación, para la página. |
| Set-Cookie: HttpOnly | Oculta la cookie a JavaScript para que XSS no pueda robarla. |
| Set-Cookie: Secure | Envía la cookie solo a través de HTTPS. |
| Set-Cookie: SameSite=Lax | Limita las cookies en solicitudes entre sitios, lo que reduce el riesgo de CSRF. |
| Access-Control-Allow-Origin | CORS: qué otros sitios web pueden leer las respuestas de tu API. |
Ciberseguridad
Criptografía de un vistazo
Qué algoritmo usar para cada tarea y cuáles evitar.
| Algoritmo | Qué es y cuándo usarlo |
|---|---|
| AES-256-GCM | Cifrado simétrico rápido para datos en reposo y en tránsito. La misma clave cifra y descifra. |
| ChaCha20-Poly1305 | Un cifrado simétrico moderno, ideal para móviles sin AES por hardware. |
| RSA 2048+ | Cifrado de clave pública y firmas. Más lento, se usa principalmente para intercambiar claves. |
| ECDSA / Ed25519 | Firmas compactas de clave pública con claves más pequeñas que las de RSA. |
| Diffie-Hellman | Permite que dos partes acuerden un secreto compartido a través de un canal abierto. |
| SHA-256 | Un hash criptográfico para huellas digitales y comprobaciones de integridad. No sirve para contraseñas. |
| HMAC | Un hash combinado con una clave secreta para demostrar que un mensaje no se ha modificado. |
| bcrypt / Argon2 | Hashes lentos con sal diseñados para almacenar contraseñas. |
| TLS 1.3 | El protocolo en el que se basa HTTPS. Úsalo y desactiva las versiones antiguas. |
| MD5 / SHA-1 | No son seguros. Nunca los uses para firmas ni contraseñas. |
Ciberseguridad
Glosario de ataques comunes
Definiciones sencillas de los ataques de los que más oirás hablar.
| Ataque | Qué es |
|---|---|
| Phishing | Mensajes falsos que engañan a las personas para que revelen contraseñas o hagan clic en enlaces maliciosos. |
| Ransomware | Malware que bloquea archivos y exige un pago para desbloquearlos. |
| DDoS | Saturar un servicio con tráfico desde muchas máquinas para que los usuarios reales no puedan acceder. |
| Ataque de intermediario | Interponerse en secreto entre dos partes para leer o modificar sus mensajes. |
| Fuerza bruta | Probar muchas contraseñas hasta que una funcione. |
| Relleno de credenciales | Probar pares de usuario y contraseña filtrados en otros sitios. |
| Día cero | Un ataque contra una vulnerabilidad que el proveedor aún desconoce, por lo que no existe ningún parche. |
| Ataque a la cadena de suministro | Comprometer un proveedor o paquete de software para llegar a sus clientes. |
| Escalada de privilegios | Convertir un acceso limitado en acceso de administrador. |
| Ingeniería social | Manipular a personas en lugar de sistemas informáticos para obtener acceso. |
| Amenaza interna | Daño causado por alguien con acceso legítimo, de forma intencionada o accidental. |
Ciberseguridad
Tácticas de MITRE ATT&CK
Las 14 etapas por las que pasan los atacantes: un lenguaje común para los defensores.
| Táctica | El objetivo del atacante |
|---|---|
| Reconocimiento | Recopilar información sobre el objetivo. |
| Desarrollo de recursos | Prepara la infraestructura, las cuentas y las herramientas para el ataque. |
| Acceso inicial | Conseguir acceso inicial, por ejemplo, mediante phishing. |
| Ejecución | Ejecutar código malicioso en el sistema. |
| Persistencia | Mantener el acceso tras reinicios y cambios de contraseña. |
| Escalada de privilegios | Obtener permisos superiores. |
| Evasión de defensas | Evitar la detección o el bloqueo. |
| Acceso a credenciales | Robar nombres de cuenta y contraseñas. |
| Descubrimiento | Conocer el entorno y lo que contiene. |
| Movimiento lateral | Pasar de un sistema a otros de la red. |
| Recopilación | Recopilar los datos de interés. |
| Mando y control | Comunicarse con sistemas comprometidos para controlarlos. |
| Exfiltración | Extraer los datos de la red. |
| Impacto | Interrumpir, destruir o bloquear sistemas y datos. |