sábado, 24 de octubre de 2015

Protegerse de los peligros del 'sudo'

Hay cosas que un día lees en algún blog y se te aclaran los conceptos... aunque estos sean viejos y deberías haberlos tenido claros desde el principio. Un caso típico es la diferencia entre el comando 'su' y el comando 'sudo'... y los potenciales peligros de usar este último... sobre todo porque, comúnmente, los usamos para 'elevar los privilegios' y actuar como superusuario, o root para instalar o desinstalar o para modificar archivos sensibles.
Y lo digo porque yo me he acostumbrado a usar, en la consola, cuando necesite privilegios de root, el famoso 'sudo...' … y resulta que contiene un riesgo potencial que conviene hacer notar. Pero antes vamos a fijar conceptos:
Y el concepto principal es que los comandos su y sudo hacen prácticamente lo mismo, pero con algunos matices. Veámoslo:

El comando 'su'
En realidad 'su' proviene de 'substitute user' (usuario substituto) porque lo que hace el comando es permitir a un usuario, sin salir de su entorno, abrir la consola de otro usuario. Y es lo que sucede si escribimos...
su nombre_de_otro_usuario
… donde te pedirá la contraseña de ese otro usuario y entrarás en su consola.
Y hay que aclarar que lees, muchas veces, que proviene de 'superuser', porque se emplea, normalmente, para entrar en una consola como root. Si escribes 'man su' o mejor, 'su -h' verás que hay varias opciones ('su -', 'su -c'...)
Pero bueno, yo me queda con el concepto de que con...
su
(y te pide contraseña) entras en la consola de root. Y con
su name_user
(y metes la contraseña del otro user) entras en la consola de ese usuario.
Y, es importante, para salir del 'su' solo basta escribir, en la consola
exit

El comando 'sudo'
Es decir 'sustitute user do'. Su función es similar, pero con dos diferencias:
a) Quien use sudo, no necesita la contraseña del nuevo usuario, debe usar la propia tuya.
b) Pero para eso se necesita que este usuario (el primero) esté incluido en una lista, que debe ser restringida, y que se crea 'como root' que es la /etc/sudoers.
(Moraleja: si eres administrador (posees la contraseña de 'root') y tu PC tiene varios usuarios, no los incluyas en la lista de 'sudoers')

Pero no me voy a extender sobre el uso del su y el sudo (sobre todo para actuar como 'root'), solo voy a hablar del fondo de la cuestión inicial: del peligro potencial de usar 'sudo'
Y es que el comando sudo... parece ser que tiene un 'periodo de gracia' 

¿Qué es esto? Pues, simplemente que el uso de 'su' es 'por acto', cada vez que cierras la consola y vuelves a usarlo tienes que introducir la contraseña... pero si trabajas con 'sudo' la primera vez te pedirá la contraseña pero luego, durante unos 15 minutos, puedes seguir actuando como ese nuevo usuario... sin que te pida volver a meterla.
¿Te imaginas lo que puede pasar si, durante esos 15 minutos, alguien entra en consola con la orden 'sudo su'?
Pues sencillo: que se le abre una consola como root... y a partir de ahí puede hacer 'lo que quiera'. Por eso algunos recomiendan que se restrinja ese periodo de gracia… si aceptas el coñazo de introducir la contraseña cada vez que hagas un 'sudo...'.

Y esto es muy fácil, basta editar (por supuesto, con privilegios de root) el archivo /etc/sudoers y añadir esta línea:
Defaults timestamp_timeout=0
bueno, algunos blogueros sugieren meter esta otra, que supongo que será lo mismo:
Defaults: ALL timestamp_timeout=0

Así que…
sudo nano /etc/sudoers
y en la imagen que sigue se puede ver la línea añadida (y donde se añade):


Como dice el refrán… 'nunca te acostarás sin saber una cosa más'

1 comentario:

  1. le abre una consola como root... y a partir de ahí puede hacer 'lo que quiera'. Por eso algunos recomiendan que se restrinja ese periodo de gracia… si aceptas el coñazo de introducir la contraseña cada vez que hagas un 'sudo https://coaching-mastery.com/cual-es-el-mejor-tratamiento-para-el-blanqueamiento-dental/

    ResponderEliminar