Tengo algunas cajas conectadas en red en Amazon EC2, cada una de las cuales está en comunicación automática entre sí a través de SSH (rsync, etc.). Como tal, he creado claves SSH en cada una de estas máquinas para permitir que se conecten entre sí sin necesidad de una contraseña. Del mismo modo, mi cuenta personal también está basada en claves y sin contraseña.
A mi leal saber y entender, he asegurado a SSH de manera adecuada utilizando los métodos bien documentados.
Bajo esta configuración, me doy cuenta de que no tengo que proporcionar una contraseña para usar sudo
. Si trato de su root
, no llego a ninguna parte, porque root no tiene una contraseña. Sin embargo, si ejecuto un sudo -i
, se me pide una contraseña y se me concede la raíz de inmediato. Eso me preocupa un poco.
Entonces, dos preguntas:
- ¿Debería preocuparme por esto, o estoy siendo demasiado paranoico?
- ¿Es posible establecer una contraseña sudo cuando se usa la autenticación SSH basada en clave?
Varios de estos cuadros son servidores web, y alojan aplicaciones web de lo que temo que sean de dudosa calidad. (¡No los escribí, por lo que son dudosos!) Tengo Apache y los permisos en los servidores configurados de tal manera que un usuario poco privilegiado de muy (www-data) está sirviendo los archivos, pero mi temor es que, de alguna manera, un atacante podría comprometer una aplicación web, escalar privilegios a un usuario más privilegiado y luego simplemente sudo -i
a la raíz.
No tengo conocimiento de una vulnerabilidad en mi software que permita a www-data escalar sus privilegios, pero preferiría tener una contraseña implementada para usar sudo
si eso sucediera de alguna manera.
También, para el registro: intenté establecer una contraseña iniciando sesión a través de SSH y luego ejecutando passwd
, pero arrojó un error. No recuerdo la frase exacta, pero era algo acerca de un "token". De cualquier manera, la contraseña no se pegó, lo que me hace pensar que estoy entendiendo mal algo en un nivel fundamental aquí.
Cualquier iluminación sobre el tema sería muy apreciada. Gracias.
- Actualización: 7 de diciembre de 2011 -
Gracias por las explicaciones reflexivas, todos. De hecho, parece que el problema está en /etc/sudoers
. Gracias por señalarme en esa dirección.
Pensé que documentaría esto por el bien de completar la discusión. Cuando busqué en /etc/sudoers
, encontré las siguientes líneas:
# ubuntu user is default user in ec2-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL
De hecho, estoy usando el usuario de ubuntu para mis operaciones privilegiadas (aunque, nuevamente, el servidor web solo se ejecuta como www-data
), así que supongo que eso explica el problema que estaba teniendo.
Si alguien quiere seguir con una suposición por qué el usuario de ubuntu necesita la funcionalidad de sudo sin contraseña, me encantaría escucharla. De lo contrario, al menos por el momento, creo que dejaré lo suficientemente bueno y dejaré la configuración como está. No quiero romper un sistema en funcionamiento mientras intento resolver de manera preventiva un problema inexistente.
Gracias de nuevo por prestar su tiempo y experiencia.