Bandit Nivel 13 a 14
Nivel oficial: https://overthewire.org/wargames/bandit/bandit14.html
Este nivel introduce uno de los conceptos más importantes de la seguridad en sistemas Linux: la autenticación SSH por clave privada. En lugar de una contraseña, usarás un archivo especial (una clave) para entrar como otro usuario (bandit14) y leer su contraseña.
Cambio reciente de OverTheWire: el método clásico (
ssh ... bandit14@localhost) ya no funciona porque ahora bloquean conectarse alocalhost:2220desde dentro del servidor. Hay que hacerlo desde tu propia máquina (ver Paso 3).
Objetivo
No hay una contraseña directa para bandit14 que puedas leer como bandit13. La contraseña está en /etc/bandit_pass/bandit14, pero ese archivo solo lo puede leer el usuario bandit14. Lo que sí tienes en tu directorio home es una clave SSH privada llamada sshkey.private. Esa clave te permite autenticarte como bandit14 sin saber su contraseña.
Qué aprendes
| Concepto / Comando | Para qué sirve |
|---|---|
ssh -i <archivo> | Conectar por SSH usando una clave privada en lugar de contraseña |
localhost | Dirección que apunta al mismo servidor donde estás |
/etc/bandit_pass/ | Directorio del juego donde viven las contraseñas de cada nivel |
cat | Leer el contenido de un archivo de texto |
| Clave SSH privada | Credencial criptográfica que sustituye a una contraseña |
Concepto clave: autenticación por clave SSH
SSH puede autenticarte de dos maneras:
- Por contraseña: escribes la pass manualmente.
- Por par de claves: hay una clave privada (secreta, tuya) y una clave pública (en el servidor al que quieres entrar). Si la privada encaja con la pública, entras sin contraseña.
El flag -i de ssh significa identity file: le dices a SSH qué archivo usar como clave privada.
Paso a paso
1. Conectarte al nivel 13
Desde tu máquina local:
ssh [email protected] -p 2220Usa la contraseña que obtuviste al completar el nivel 12. Verás algo como:
bandit13@bandit:~$
2. Ver qué hay en el directorio home
ls -laSalida esperada:
total 24
drwxr-xr-x 2 root root 4096 Apr 23 18:04 .
drwxr-xr-x 70 root root 4096 Apr 23 18:04 ..
-rw-r--r-- 1 root root 220 Mar 31 2024 .bash_logout
-rw-r--r-- 1 root root 3526 Mar 31 2024 .bashrc
-rw-r--r-- 1 root root 807 Mar 31 2024 .profile
-rw-r----- 1 bandit14 bandit13 1679 Apr 23 18:04 sshkey.private
El archivo sshkey.private pertenece a bandit14 (propietario) y al grupo bandit13 (tú puedes leerlo, pero no modificarlo). Es una clave SSH privada RSA.
3. Conectarte como bandit14 usando la clave
El método clásico
ssh -i sshkey.private bandit14@localhost -p 2220desde dentro del servidor ahora está BLOQUEADO: verásConnecting from localhost is blocked to conserve resources. Hay que hacerlo desde tu propia máquina.
Método que funciona (desde tu portátil):
a) Estando dentro como bandit13, muestra la clave y cópiala ENTERA (desde -----BEGIN ... PRIVATE KEY----- hasta -----END ... PRIVATE KEY-----):
cat sshkey.privateb) En otra terminal de tu portátil (no la del juego), guárdala en un archivo y protégela (SSH rechaza claves con permisos abiertos):
nano sshkey.private # pega la clave, guarda (Ctrl+O, Enter, Ctrl+X)
chmod 600 sshkey.privatec) Conéctate como bandit14 al hostname real (no localhost) — al venir de fuera no está bloqueado:
ssh -i sshkey.private [email protected] -p 2220Si la clave es válida, entras sin contraseña:
bandit14@bandit:~$
Ya eres bandit14.
Atajo: a veces basta con usar el hostname real en vez de
localhostdesde dentro del propio servidor (ssh -i sshkey.private [email protected] -p 2220), si el firewall interno permite la salida. Si no, usa el método a-b-c desde tu portátil, que siempre va.
4. Leer la contraseña del nivel 14
cat /etc/bandit_pass/bandit14Salida:
<cadena_de_~32_caracteres>
Esa cadena es la contraseña de bandit14. Cópiala: la necesitarás para el nivel 14→15.
Por qué funciona
El archivo sshkey.private es la mitad privada de un par de claves RSA. La mitad pública ya está registrada en el servidor dentro del archivo ~/.ssh/authorized_keys del usuario bandit14. Cuando ejecutas ssh -i sshkey.private bandit14@<servidor>, el proceso es:
- Tu cliente SSH presenta la clave privada (sin enviarla, solo demuestra que la tiene mediante criptografía).
- El servidor comprueba si la clave pública correspondiente está en
authorized_keysdebandit14. - Si coincide, te autentica sin necesitar contraseña.
El directorio /etc/bandit_pass/ contiene un archivo por cada nivel, con permisos estrictos: solo el usuario propietario puede leerlo. Por eso bandit13 no puede leer el archivo de bandit14 directamente, pero una vez que eres bandit14, sí puedes.
Errores comunes
WARNING: UNPROTECTED PRIVATE KEY FILE!
SSH rechaza claves privadas con permisos demasiado abiertos. Si ves este error, es porque el archivo tiene permisos que permiten que otros lo lean. Solución:
chmod 600 sshkey.privateEn este nivel concreto el juego ya tiene los permisos correctos (lectura solo para el grupo), pero en tu vida real siempre protege tus claves con chmod 600.
Permission denied (publickey)
Significa que la clave no coincide con ninguna entrada en authorized_keys del usuario destino, o que especificaste el archivo equivocado. Comprueba que el nombre del archivo y el usuario sean correctos.
Olvidar el flag -p 2220
El servidor de Bandit no usa el puerto SSH estándar (22), sino el 2220. Sin -p 2220 la conexión fallará o se conectará a otro servicio.
Intentar leer /etc/bandit_pass/bandit14 como bandit13
Dará Permission denied. El archivo tiene permisos r-------- para el usuario bandit14. Debes autenticarte primero como ese usuario.
Connecting from localhost is blocked to conserve resources / no authentication methods enabled
Cambio reciente de OverTheWire: ya NO puedes hacer ssh ... @localhost desde dentro del servidor. Solución: ejecuta el ssh -i desde tu propia máquina apuntando al hostname real (bandit.labs.overthewire.org), copiando antes la clave con cat sshkey.private (ver Paso 3). El aviso Could not create directory '/home/bandit13/.ssh' es inofensivo (no puedes escribir en el home).
Pasar al siguiente nivel
Una vez que tienes la contraseña de bandit14 (obtenida con cat /etc/bandit_pass/bandit14), sal de ambas sesiones SSH y conéctate al nivel 14:
ssh [email protected] -p 2220Cuando te pida contraseña, pega la cadena que copiaste de /etc/bandit_pass/bandit14.
Conexiones
- 00_README
- MOC_Ciberseguridad
- git-en-detalle (no aplica en este nivel)