Sudo contraseña cuando se autentica a través de SSH sin contraseña

25

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:

  1. ¿Debería preocuparme por esto, o estoy siendo demasiado paranoico?
  2. ¿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.

    
pregunta Chris Allen Lane 30.11.2011 - 00:21
fuente

2 respuestas

13

La razón por la que no se le solicita una contraseña sudo es porque su usuario (o grupo de usuarios) tiene habilitado NOPASSWD en / etc / sudoers. Puedes editar este archivo con visudo como root.

Con respecto a la autenticación sin contraseña, es correcto que la autenticación de clave pública sea un método preferido para autenticarse en los servidores. Si no hay una contraseña para adivinar, ningún intento de fuerza bruta puede tener éxito.

El hecho de que no tenga una contraseña de root en absoluto viola algunas de las mejores prácticas, pero como lo indicó correctamente, si se requiere una clave para ingresar al cuadro, es probable que esté bien. Tener una contraseña de root podría alentarlo a usar SSH para iniciar sesión como root, que debería estar deshabilitado en su sshd_config.

La única pregunta que tengo se relaciona con uno de sus últimos párrafos:

  

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í.

¿No pudo establecer una contraseña mientras estaba sudo en la raíz? ¿O simplemente como usuario regular? Tener la autenticación de clave pública en su lugar no debería impedirle configurar una contraseña de espacio de usuario, ni una contraseña de root. Parece que podría estar encontrando este problema, discutido en SuperUser , así que espero que eso ayude un poco.

Espero haber respondido a la parte de seguridad de tu pregunta; ¡Siéntase libre de agregar un comentario o seguimiento si necesita más información!

    
respondido por el dshaw 30.11.2011 - 00:50
fuente
3

Puede establecer una contraseña para rootear mientras tiene habilitada la autenticación de clave SSH. En Ubuntu, por ejemplo, la cuenta raíz está "deshabilitada". Puede sudo a la cuenta que se creó durante la instalación, que se ejecutará con privilegios de raíz.

Si ejecuta www-data$sudo -i , debería aparecer el siguiente mensaje:

www-data is not in the sudoers file.  This incident will be reported.

Lo que dshaw mencionado generalmente está deshabilitado en Ubuntu

# %sudo ALL=NOPASSWD: ALL

Así que es bueno comprobarlo, ya que no deberías poder ejecutar sudo -i y obtener root sin ingresar una contraseña.

Espero que esto ayude.

    
respondido por el Bassec 30.11.2011 - 01:18
fuente

Lea otras preguntas en las etiquetas