¿Qué es el principio de mínimo privilegio?
El principio de mínimo privilegio dice que cada persona, programa y cuenta debe tener solo los permisos que necesita y ninguno más. Así, si algo falla, el daño es pequeño.
Piensa en las llaves de tu instituto: un alumno no tiene la del despacho. En esta lección verás cómo un permiso de más puede dar el control de toda una máquina.
Al terminar esta lección
Nota
Puedo explicar cómo un error pequeño de permisos da el control de una máquina.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Permiso | lo que una cuenta puede hacer con un archivo | rw-r--r-- |
| Root | la cuenta de Linux que puede hacerlo todo | |
| Mínimo privilegio | dar a cada cuenta solo lo que necesita | |
| Escalada de privilegios | pasar de una cuenta normal a tener más poder | |
| Setuid | un permiso que ejecuta un programa con los derechos de su dueño | |
| Sudo | una orden que deja ejecutar algo como otra cuenta |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
La regla de este laboratorio
Advertencia
Practica solo en tu máquina privada, con su cuenta de práctica. Nunca intentes subir de privilegios en un equipo que no sea tuyo, tampoco en el del instituto: es un delito. Aprendemos qué errores revisar para corregirlos.
Un permiso se lee en tres grupos
En Linux, cada archivo tiene un dueño y un permiso para tres grupos: el dueño, su grupo y todos los demás. Cada grupo puede leer (r), escribir (w) o ejecutar (x).
Cada letra vale un número: r vale 4, w vale 2 y x vale 1. Se suman por grupo, y así tres cifras resumen el permiso.
Ejemplo resuelto: de letras a número
| Permiso | Dueño | Grupo | Todos | Número |
|---|---|---|---|---|
| -rw-r--r-- | rw- es 6 | r-- es 4 | r-- es 4 | 644 |
| -rwxr-xr-x | rwx es 7 | r-x es 5 | r-x es 5 | 755 |
| -rw------- | rw- es 6 | --- es 0 | --- es 0 | 600 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Antes de empezar
Nota
Pulsa Iniciar el laboratorio en la barra superior y espera a que la máquina diga que está en marcha. Cada botón Ejecutar escribe su comando en el terminal de la máquina.
stat enseña el permiso y el dueño
La orden stat con -c dice lo que quieras de un archivo. Con %A escribe el permiso en letras y con %U escribe el nombre del dueño.
Mira un archivo que todos pueden leer y una carpeta que solo es de root.
Mira el permiso del archivo de cuentas
stat -c '%A %U' /etc/passwdSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Mira el permiso de la carpeta de root
stat -c '%A %U' /rootSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Mira el permiso del archivo de sudo
stat -c '%A %U' /etc/sudoersSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Root puede todo y se reparte poco
La cuenta root puede leer, cambiar y borrar cualquier cosa. Quien llega a ser root controla la máquina.
Por eso manda el mínimo privilegio. Las cuentas normales no tocan lo de root. Los programas corren con una cuenta que solo ve lo suyo, y si algo se rompe, se rompe poco.
Algunos permisos especiales dan los derechos de otro
Un programa con setuid se ejecuta con los derechos de su dueño y no con los de quien lo lanza. Se ve como una s en lugar de la x del dueño.
A veces hace falta. El programa que cambia tu clave lo tiene, porque debe escribir en un archivo que solo puede tocar root. Mira su permiso y el de la carpeta temporal.
Mira el permiso del programa passwd
stat -c '%A %U' /usr/bin/passwdSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Mira el permiso de la carpeta temporal
stat -c '%A' /tmpSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Tres errores pequeños que dan el control
Casi todos los casos de escalada vienen de tres tipos de error. Un programa con un setuid que no debería tener. Una regla de sudo que permite demasiado. Un archivo que ejecuta root a cada rato y que cualquiera puede cambiar.
Revisar los tres es lo que hace un administrador cuidadoso. En el laboratorio, esa revisión es tu trabajo.
Ejemplo resuelto: error, efecto y arreglo
| Error | Qué permite | Arreglo |
|---|---|---|
| Setuid de más en un programa | Usar los derechos de root | Quitar el setuid |
| Regla de sudo muy ancha | Ejecutar cosas como root | Permitir solo la orden justa |
| Archivo de root editable por todos | Cambiar lo que ejecuta root | Dejarlo solo de root |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un error frecuente
Advertencia
Mucha gente cree que dar sudo para un solo programa es seguro. Algunos programas pueden abrir una consola o lanzar otros programas. Por eso, una regla de sudo se limita a una orden y a sus argumentos exactos.
Para ir más lejos: el arreglo
Cuando termines el trabajo del laboratorio, escribe cómo arreglarías cada error que encuentres. Una buena respuesta dice qué se quita y qué se deja.
Antes, piensa en tu móvil: ¿qué app tiene más permisos de los que necesita? ¿Cuál le quitarías?