Enviar comando de apagado a través de ssh usando sudo de forma no interactiva

0

Con iOS 12 y la nueva aplicación de atajos de Siri , he estado pensando en formas en las que podría aprovechar el Capacidad de comando SSH en la aplicación. Para aquellos de ustedes que no lo saben, la aplicación le permite enviar un archivo o cadena bash a stdin y devuelve stdout como un archivo de texto sin formato, que se conecta mediante la autenticación de contraseña (sin autenticación de token).

Lo que me gustaría hacer es crear un acceso directo que ejecute sudo shutdown [...] en un servidor remoto a través de la acción del comando SSH. Dado que la acción no es interactiva y no es tty, no puedo ingresar la contraseña de manera interactiva, y me resisto a poner la contraseña como texto simple en la cadena de entrada de acción / stdin . Por otro lado, no quiero usar sudo -n y NOPASSWD para el comando shutdown , ya que es un riesgo de seguridad con el que no quiero lidiar. Pensé que quizás requeriría una cadena aleatoria para el mensaje shutdown para que NOPASSWD esté habilitado en el archivo sudoers (es decir, sudo shutdown -h now requeriría una contraseña, pero sudo shutdown -h now japos98vh92p3hoab982hfpa no), pero no lo hago " No sé si eso es más seguro o incluso posible.

En resumen, ¿cómo puedo enviar de forma segura un comando de apagado a través de SSH utilizando una sesión no interactiva, no tty?

    
pregunta Matt 19.09.2018 - 20:07
fuente

2 respuestas

0

Descubrí cómo hacerlo usando NOPASSWD y una cadena aleatoria. Agregué las siguientes líneas a mi archivo sudoers :

matt  ALL=(ALL) NOPASSWD: /sbin/shutdown -h now japos98vh92p3hoab982hfpa
matt  ALL=(ALL) NOPASSWD: /sbin/reboot japos98vh92p3hoab982hfpa

Esto funcionó como yo quería. :)

    
respondido por el Matt 26.11.2018 - 03:35
fuente
1

Aquí hay un montón de preguntas diferentes, algunas de las cuales no son preguntas de seguridad (por ejemplo, "cómo usar sudo en una sesión SSH no interactiva" es realmente una pregunta de programación / superusuario), y algunas de ellas solo puede responder (lo que cuenta como "seguro").

Así que, en lugar de responder a tu pregunta directamente, señalaré algunas cosas de seguridad en las que pensar con respecto a tus dos propuestas.

  

No quiero usar sudo -n y NOPASSWD para el comando shutdown , ya que es un riesgo de seguridad con el que no quiero lidiar.

Es posible que deba explicar en qué consiste ese riesgo de seguridad y por qué no quiere lidiar con él. Claramente, está de acuerdo con que Siri sepa su nombre de usuario y contraseña para SSH, lo cual, si los desarrolladores de iOS integraran un mecanismo para manejar las solicitudes de sudo o un atacante extrajera su nombre de usuario / contraseña del almacenamiento de Siri, sería suficiente para realizar cualquier acción de administrador en esa máquina.

La razón por la que sudo necesita una contraseña es para evitar que descargues malware en Firefox y luego se convierta en root. Desde el caso de uso que describe en su pregunta, si ssh user@machine 'sudo cmd' requiere que escriba su contraseña una o dos veces no hace una diferencia desde una perspectiva de seguridad; o el atacante conoce su contraseña o no la conocen.

  

sudo shutdown -h now japos98vh92p3hoab982hfpa

No sé cómo lograrías esto (¡pero me encantaría aprender si puedes explicar cómo en los comentarios!). Al omitir eso (y cualquier posible agujero de seguridad que abra en el proceso), supongo que esto se convierte en una segunda contraseña de administrador, por lo que un atacante debe conocer tanto la contraseña de su cuenta como esta "contraseña de administrador" para ejecutar shutdown . Esta "contraseña de administrador" se mostrará en más lugares: en texto sin formato en la aplicación Siri, en el historial de bash para su usuario, en el árbol de procesos mientras se está ejecutando (pruebe ps -u ), y probablemente en otros lugares: hay una razón cosas como sudo toman contraseñas a través de stdin, no a través de argumentos de línea de comandos.

Así que suponiendo

  1. Un atacante ha ingresado a su cuenta, ya sea a través de SSH o porque descargó malware en Firefox y lo ejecutó
  2. Has ejecutado este comando anteriormente y está en tu historial de bash

No estoy seguro de que exista una diferencia de seguridad entre esto y la configuración de shutdown en NOPASSWD .

    
respondido por el Mike Ounsworth 20.09.2018 - 00:29
fuente

Lea otras preguntas en las etiquetas