¿Existe algún criterio para permitir o no permitir la ejecución de scripts de bash como root con sudo?

1

¿Qué criterios puedo tomar para permitir o no la ejecución de scripts de bash con sudo como root?

Sé que debo analizar el script pero no tengo suficiente tiempo y confío en mis desarrolladores.

Mi criterio de hoy es solicitar el propietario del usuario del script, el propietario del grupo y los permisos solo para asegurarse de que el propietario y el grupo sean root y los permisos no permitan al usuario modificar el script.

Por ejemplo, ¿existe alguna herramienta para extraer los comandos ejecutados dentro de un script de bash? Creo que con esta lista de comandos podría evaluar si todos los comandos requieren privilegios de root o no. .

    
pregunta Eloy Roldán Paredes 07.09.2016 - 16:34
fuente

4 respuestas

2

Algunas opciones:

  • Lea el guión una vez, hágalo r-x, cambie la propiedad y agregue la secuencia de comandos a la entrada sudoers para los desarrolladores
  • Requerir que el los desarrolladores utilizan sudo en el script, en lugar de ejecutar el secuencias de comandos y comandos de la lista blanca en el archivo sudoers
  • Confíe en sus desarrolladores y acepte el riesgo

En cuanto a la extracción de comandos, solo hay una forma correcta de hacerlo: leer el script. Puede activar la auditoría o leer el historial de comandos o algo así, pero si es realmente malicioso, no se puede confiar en ellos.

    
respondido por el Jesse Keilson 07.09.2016 - 19:23
fuente
1

Tuve el mismo problema con el script SQL lanzado con un usuario avanzado (no exactamente root, pero cerca). Así que hice una lista de comandos que armarían mi base de datos y mantuve esta lista a lo largo del tiempo.

Puede mantener una lista de comandos prohibidos: no podemos decir lo que quiere evitar, pero me parece difícil prohibir rm .. puede hacer una advertencia cuando haga su comprobación.

Entonces, la idea sería hacer que un comando grep haga eso por usted; aquí usa una lista de patrones en pattern_file y -r en caso de que tenga subdirectorios para buscar:

grep -f pattern_file.txt -r /sudo_shells_repo/* 

Haga que se ejecute como un script de verificación cada vez que alguien venga y agregue un script "ejecutable con sudo" en el repositorio.

    
respondido por el J. Chomel 07.09.2016 - 16:48
fuente
1
  

hay alguna herramienta para extraer los comandos ejecutados dentro de un script bash

Sí - bash.

Pero un poco menos facetamente, no. Incluso en una versión instrumentada, el intérprete de comandos solo le mostrará lo que el script ha hecho después de haberlo hecho. Y considerar el script como una caja negra significa que nunca podrá estar seguro de lo que hará en el futuro, incluso suponiendo que pueda capturar con precisión los estados antes y después de ejecutar el script.

 stuff='tmp/deletme'

 if [ ! -d "/home/disgruntled" ] ; then 
    unset stuff
 fi

 rm -rf "$stuff/"
    
respondido por el symcbean 07.09.2016 - 16:59
fuente
1
  

extraer los comandos ejecutados dentro de un script bash?

Está efectivamente tratando de hacer coincidir el código con un conjunto de firmas incorrectas conocidas, similar a lo que hacen los IDS y los antivirus en el caso más simple. Pero esto no funciona porque bash es un lenguaje muy capaz donde puedes crear comandos dinámicamente y ejecutarlos. Esto no se puede encontrar mediante una coincidencia de patrón simple.

Por ejemplo, lo siguiente ejecutará bash -i , es decir, un shell interactivo que proporciona al atacante un shell privilegiado cuando se ejecuta con sudo.

foo=bas
bar='h -i'
$foo$bar

Incluso si creas una firma para este código, se puede modificar fácilmente para que ya no coincida con la firma. O que la firma coincida también con el código válido, es decir, falso positivo. Y si está probando un análisis dinámico más avanzado, también es posible hacer que este código dependa de la hora o los archivos o simplemente lea nuevos comandos directamente desde un archivo o socket, etc.

Conclusión : No se debe autorizar ningún script sin análisis manual.

    
respondido por el Steffen Ullrich 07.09.2016 - 17:58
fuente

Lea otras preguntas en las etiquetas