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.

RiesgoQué significa
A01Fallos de control de acceso: los usuarios acceden a datos o acciones que no les corresponden.
A02Fallos criptográficos: datos sensibles enviados o almacenados sin un cifrado robusto.
A03Inyección: la entrada se ejecuta como SQL, comandos de shell u otro código. Incluye cross-site scripting.
A04Diseño inseguro: no se tuvo en cuenta la seguridad desde el principio.
A05Configuración de seguridad incorrecta: contraseñas predeterminadas, almacenamiento abierto y errores demasiado detallados.
A06Componentes vulnerables y desactualizados: bibliotecas antiguas con fallos conocidos.
A07Fallos de identificación y autenticación: accesos débiles, ausencia de MFA y sesiones mal gestionadas.
A08Fallos de integridad del software y los datos: actualizaciones y pipelines sin verificar.
A09Fallos de registro y supervisión de seguridad: los ataques pasan desapercibidos.
A10Falsificació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.

PasoQué haces
PreparaciónTen preparados planes, contactos, herramientas y copias de seguridad antes de que ocurra algo.
Detección y análisisDetecta el incidente, confírmalo y evalúa su gravedad.
ContenciónDetén la propagación: aísla equipos y bloquea cuentas o direcciones.
ErradicaciónElimina la causa: malware, puertas traseras y cuentas comprometidas.
RecuperaciónRestaura los sistemas desde copias de seguridad limpias y supervísalos de cerca.
Lecciones aprendidasDocumenta 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.

PuertoServicio
20/tcp · FTP dataCanal de datos para la transferencia de archivos. Sin cifrar: es preferible usar SFTP.
21/tcp · FTPControl de transferencia de archivos. Envía contraseñas en texto plano.
22/tcp · SSHInicio de sesión remoto y copia de archivos seguros (SFTP, SCP).
23/tcp · TelnetInicio de sesión remoto antiguo sin cifrado. Desactívalo y usa SSH.
25/tcp · SMTPEntrega de correo electrónico entre servidores de correo.
53/tcp/udp · DNSConsultas de nombres de dominio.
67/udp · DHCPAsigna direcciones IP en una red local.
80/tcp · HTTPTráfico web sin cifrar. Redirígelo a HTTPS.
110/tcp · POP3Descarga de correo electrónico (antiguo, sin cifrar).
123/udp · NTPSincronización horaria.
143/tcp · IMAPLectura de correo en el servidor (sin cifrar).
161/udp · SNMPSupervisión de dispositivos de red. Cambia las cadenas de comunidad predeterminadas.
389/tcp · LDAPServicios de directorio como Active Directory.
443/tcp · HTTPSTráfico web cifrado (HTTP sobre TLS).
445/tcp · SMBUso compartido de archivos de Windows. Nunca lo expongas a internet.
587/tcp · SMTP submissionEnvío de correo desde una aplicación o un cliente de correo, con TLS.
993/tcp · IMAPSLectura de correo mediante TLS.
1433/tcp · MS SQLBase de datos Microsoft SQL Server.
3306/tcp · MySQLBases de datos MySQL y MariaDB. Mantén el acceso privado.
3389/tcp · RDPEscritorio remoto de Windows. Un objetivo habitual: protégelo con una VPN.
5432/tcp · PostgreSQLBase de datos PostgreSQL. Mantenla privada.
6379/tcp · RedisCaché Redis. A menudo se deja abierta sin contraseña.
8080/tcp · HTTP altPuerto común para servidores de desarrollo y proxies.
27017/tcp · MongoDBBase 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ódigoSignificado
200 OKLa solicitud se completó correctamente.
201 CreatedSe ha creado un nuevo recurso.
204 No ContentLa operación se realizó correctamente y no hay nada que devolver.
301 Moved PermanentlyLa dirección ha cambiado de forma permanente; usa la nueva.
304 Not ModifiedTu copia en caché sigue actualizada.
400 Bad RequestLa solicitud tiene un formato incorrecto o no es válida.
401 UnauthorizedNo has iniciado sesión, o el token falta o ha caducado.
403 ForbiddenHas iniciado sesión, pero no tienes permiso para hacer esto.
404 Not FoundNo existe nada en esta dirección.
409 ConflictLa solicitud entra en conflicto con el estado actual, por ejemplo, por un duplicado.
429 Too Many RequestsSe ha alcanzado un límite de solicitudes; espera y vuelve a intentarlo.
500 Internal Server ErrorAlgo ha fallado en el servidor.
502 Bad GatewayUn servidor intermediario recibió una respuesta no válida del siguiente servidor.
503 Service UnavailableEl 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.

ComandoQué hace
git clone <url>Copia un repositorio en tu equipo.
git statusVer qué ha cambiado y qué está preparado para el commit.
git add -pPreparar los cambios para el commit por partes tras revisarlos.
git commit -m "message"Guarda una instantánea con un mensaje.
git switch -c featureCrea una rama y cámbiate a ella.
git pull --rebaseObtener los últimos cambios y volver a aplicar los tuyos sobre ellos.
git push -u origin featureSube tu rama y configura su seguimiento.
git log --oneline --graphMostrar un historial compacto con ramas.
git diffMostrar los cambios que aún no están preparados para el commit.
git stashAparta 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.

ComandoQué hace
pwdMostrar la carpeta en la que estás.
ls -laLista todos los archivos con detalles, incluidos los ocultos.
cd /var/logMueve a otra carpeta.
cat file.txtMuestra un archivo.
less file.txtLee un archivo largo página por página.
grep -i error app.logBuscar líneas que contengan una palabra, sin distinguir mayúsculas de minúsculas.
chmod 755 script.shCambia los permisos de un archivo.
chown user:group fileCambia el propietario de un archivo.
ps auxLista los procesos en ejecución.
topObserva el uso de CPU y memoria en tiempo real.
df -hMostrar el espacio libre en disco.
sudo apt update && sudo apt upgradeInstala actualizaciones en Debian o Ubuntu.
ssh user@hostConéctate a un servidor remoto.
tail -f /var/log/syslogSeguir 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.

ComandoQué hace
docker build -t app .Crea una imagen a partir del Dockerfile de esta carpeta.
docker run -p 8080:80 appEjecuta la imagen y expón el puerto 80 como 8080.
docker psLista los contenedores en ejecución.
docker logs -f <id>Seguir la salida de un contenedor.
docker exec -it <id> shAbre una shell dentro de un contenedor en ejecución.
kubectl get podsLista 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.yamlCrea o actualiza recursos a partir de un archivo.
kubectl rollout undo deployment/appVuelve 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.

RegistroFinalidad
AAsocia un nombre a una dirección IPv4.
AAAAAsocia un nombre a una dirección IPv6.
CNAMEConvierte un nombre en alias de otro.
MXIndica qué servidores de correo reciben los mensajes del dominio.
TXTTexto libre, usado para SPF, DKIM y comprobaciones de propiedad del dominio.
NSEnumera los servidores de nombres responsables del dominio.
SOAInicio de autoridad: la configuración principal de la zona y su número de serie.
PTRResolución inversa: convierte una dirección IP en un nombre.
SRVApunta al host y al puerto de un servicio específico.
CAALimita 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.

PrefijoMáscara · total · utilizables
/8255.0.0.0 · 16,777,216 · 16,777,214
/16255.255.0.0 · 65,536 · 65,534
/20255.255.240.0 · 4,096 · 4,094
/22255.255.252.0 · 1,024 · 1,022
/24255.255.255.0 · 256 · 254
/25255.255.255.128 · 128 · 126
/26255.255.255.192 · 64 · 62
/27255.255.255.224 · 32 · 30
/28255.255.255.240 · 16 · 14
/29255.255.255.248 · 8 · 6
/30255.255.255.252 · 4 · 2
/32255.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.

ComandoQué hace
ping -c 4 example.comComprueba si un host responde y cuánto tarda.
traceroute example.comMuestra todos los routers por los que pasa un paquete en su recorrido.
dig example.com AConsultar los registros DNS de un nombre.
nslookup example.comUna consulta DNS más sencilla que funciona en la mayoría de los sistemas.
curl -I https://example.comObtén solo las cabeceras de respuesta de una página web.
ip addrMuestra tus interfaces de red y direcciones IP.
ip routeMuestra adónde se envía el tráfico, incluida la puerta de enlace predeterminada.
ss -tulpnListar los puertos en escucha y los programas que los abrieron.
nmap -sV 192.168.1.10Escanea un equipo de tu propiedad para ver los puertos abiertos y las versiones de los servicios.
tcpdump -i eth0 port 53Captura 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.

SentenciaQué 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 10Ordena 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.idCombina 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ónCoincidencias
.Cualquier carácter individual excepto un salto de línea.
\d \w \sUn dígito, un carácter de palabra, un carácter de espacio en blanco.
^ $El inicio y el final del texto.
\bUn 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.

SintaxisSignificado
#!/usr/bin/env bashPrimera línea: qué programa ejecuta el script.
set -euo pipefailDeté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 ... fiEjecuta comandos solo si se cumple una condición; en este caso, si existe un archivo.
for f in *.log; do ... doneRepetir comandos para cada elemento de una lista.
cmd1 | cmd2Envía la salida de un comando a otro.
cmd > out.txt cmd >> out.txtEscribe 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 || cmd2Ejecuta el segundo solo si el primero tiene éxito, o solo si falla.
chmod +x script.sh && ./script.shDar 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ónEjecuciones
* * * * *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-5A las 09:30 entre semana, de lunes a viernes.
0 0 1 * *A medianoche del primer día de cada mes.
0 0 * * 0A 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.

ModoSignificado
777 rwxrwxrwxTodos pueden hacer de todo. Casi nunca es lo correcto.
755 rwxr-xr-xAcceso 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 indicadorQué protege
Content-Security-PolicyLimita los orígenes desde los que pueden cargarse scripts, imágenes y marcos. Ofrece una protección sólida contra XSS.
Strict-Transport-SecurityIndica a los navegadores que usen siempre HTTPS para este sitio.
X-Content-Type-Options: nosniffImpide que los navegadores adivinen los tipos de archivo y ejecuten scripts camuflados.
X-Frame-Options: DENYImpide que otros sitios muestren el tuyo dentro de un marco (clickjacking).
Referrer-PolicyControla qué parte de tu dirección se envía a otros sitios.
Permissions-PolicyDesactiva funciones del navegador, como la cámara o la ubicación, para la página.
Set-Cookie: HttpOnlyOculta la cookie a JavaScript para que XSS no pueda robarla.
Set-Cookie: SecureEnvía la cookie solo a través de HTTPS.
Set-Cookie: SameSite=LaxLimita las cookies en solicitudes entre sitios, lo que reduce el riesgo de CSRF.
Access-Control-Allow-OriginCORS: 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.

AlgoritmoQué es y cuándo usarlo
AES-256-GCMCifrado simétrico rápido para datos en reposo y en tránsito. La misma clave cifra y descifra.
ChaCha20-Poly1305Un 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 / Ed25519Firmas compactas de clave pública con claves más pequeñas que las de RSA.
Diffie-HellmanPermite que dos partes acuerden un secreto compartido a través de un canal abierto.
SHA-256Un hash criptográfico para huellas digitales y comprobaciones de integridad. No sirve para contraseñas.
HMACUn hash combinado con una clave secreta para demostrar que un mensaje no se ha modificado.
bcrypt / Argon2Hashes lentos con sal diseñados para almacenar contraseñas.
TLS 1.3El protocolo en el que se basa HTTPS. Úsalo y desactiva las versiones antiguas.
MD5 / SHA-1No 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.

AtaqueQué es
PhishingMensajes falsos que engañan a las personas para que revelen contraseñas o hagan clic en enlaces maliciosos.
RansomwareMalware que bloquea archivos y exige un pago para desbloquearlos.
DDoSSaturar un servicio con tráfico desde muchas máquinas para que los usuarios reales no puedan acceder.
Ataque de intermediarioInterponerse en secreto entre dos partes para leer o modificar sus mensajes.
Fuerza brutaProbar muchas contraseñas hasta que una funcione.
Relleno de credencialesProbar pares de usuario y contraseña filtrados en otros sitios.
Día ceroUn ataque contra una vulnerabilidad que el proveedor aún desconoce, por lo que no existe ningún parche.
Ataque a la cadena de suministroComprometer un proveedor o paquete de software para llegar a sus clientes.
Escalada de privilegiosConvertir un acceso limitado en acceso de administrador.
Ingeniería socialManipular a personas en lugar de sistemas informáticos para obtener acceso.
Amenaza internaDañ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ácticaEl objetivo del atacante
ReconocimientoRecopilar información sobre el objetivo.
Desarrollo de recursosPrepara la infraestructura, las cuentas y las herramientas para el ataque.
Acceso inicialConseguir acceso inicial, por ejemplo, mediante phishing.
EjecuciónEjecutar código malicioso en el sistema.
PersistenciaMantener el acceso tras reinicios y cambios de contraseña.
Escalada de privilegiosObtener permisos superiores.
Evasión de defensasEvitar la detección o el bloqueo.
Acceso a credencialesRobar nombres de cuenta y contraseñas.
DescubrimientoConocer el entorno y lo que contiene.
Movimiento lateralPasar de un sistema a otros de la red.
RecopilaciónRecopilar los datos de interés.
Mando y controlComunicarse con sistemas comprometidos para controlarlos.
ExfiltraciónExtraer los datos de la red.
ImpactoInterrumpir, destruir o bloquear sistemas y datos.