¿Está bien deshabilitar requiretty?

39

Estoy tratando de configurar una secuencia de comandos de implementación utilizando Capistrano. En un paso, la cap deploy:setupsecuencia de comandos se conecta a mi servidor e intento ejecutar comandos que crean directorios. Entonces veo un error:msudo: sorry, you must have a tty to run sudo

Hay una solución sugerida para deshabilitar requiretty en mi servidor. https://unix.stackexchange.com/a/49078/26271

Me pregunto si es seguro hacerlo.

desarrollador
fuente

Respuestas:

40

Hay una ventaja de seguridad muy limitada en tener requirettyun servidor. Si se explota algún código no root (un script PHP, por ejemplo), la requirettyopción significa que el código exploit no podrá actualizar directamente sus privilegios al ejecutarse sudo.

Puede haber otra forma para que el atacante obtenga root, y, por supuesto, el atacante aún podrá desfigurar su sitio, pero no permitir que el atacante obtenga root significa que otros servicios que se ejecutan como diferentes usuarios seguirán funcionando normalmente y el atacante ganó ' No podrá borrar los registros del sistema. Si ninguna de sus sudoreglas hace algo peligroso como crear un directorio , esto no es una preocupación.

Además, y para condenar más requiretty, no se necesita ningún privilegio para crear un tty, por ejemplo, con esperar . Por lo tanto, también puede desactivar requiretty: por sí solo, no proporciona una ventaja de seguridad. Proporciona una leve ventaja de auditabilidad cuando los usuarios lo ejecutan (porque los registros dan una mejor idea de quién invocó sudoy de dónde provienen), pero no cuando se ejecuta desde un trabajo en segundo plano.

Gilles 'SO- deja de ser malvado'
fuente
1
¿Quiere decir que si el usuario puede ejecutar expect(o screenpor ejemplo), entonces requirettyes inútil desde un punto de vista de seguridad? (No entendí muy bien lo que
querías
@ GeorgesDupéron Sí, eso es todo. Como cualquiera puede crear un tty, la requirettyopción no impide que nadie use sudo.
Gilles 'SO- deja de ser malvado'
3
requirettypuede evitar que un usuario filtre su contraseña en texto sin formato, si está ejecutando un comando sudo que requiere una contraseña a través de ssh. Está ahí para obligar al usuario a llamar a ssh -t.
Chris Betti
1
@ Chris Betti: ¿por qué es bueno hacer cumplir ssh -t ...?
Rop
Mi pensamiento en ese momento era que, en este caso, si está ejecutando un comando de sudo remoto que solicita una contraseña, entonces es mejor aprovechar el programa askpass de la máquina remota que completar la contraseña en texto sin formato a través de la consola. Sinceramente, no tengo idea de si hacerlo proporciona una seguridad mejorada, además de posiblemente evitar la situación en la que su contraseña se repite en la pantalla mientras la escribe. Creo que estaba pensando que un programa askpass no sería invocado sin un tty o pseudo-tty.
Chris Betti