Escriba una secuencia de comandos de pánico para proteger de forma remota una Mac Pro de un usuario local no confiable [cerrado]

12

La situación

Supongamos que permito el acceso administrativo de "Shady Sam" en mi estación de trabajo para realizar una tarea administrativa importante en mi Mac Pro para mí al darles una contraseña de inicio de sesión raíz temporal. (Suponga que eran confiables, tal vez un administrador de sistemas para mi empresa).

Desde una ubicación remota (p. Ej., En casa), uso mi computadora portátil MacBook Pro para observar las actividades de Sam y aprender cómo hacer la tarea yo mismo a través del Escritorio remoto (VNC).

Sin previo aviso, ¡Shady Sam hace algo horrible! Tal vez lo veo tratando de eliminar datos de mi disco duro o entrometiéndome en carpetas restringidas, etc. Sea cual sea el hecho, quiero bloquear a Shady Sam de inmediato y asegurar la computadora lo mejor posible desde mi ubicación remota.

Como compartimos el mouse y el teclado, no pude realizar de manera confiable una acción desde Escritorio remoto (además, podrían cerrar la conexión). Tendría que escribir un script y ejecutarlo de forma remota.

El reto

¿Cuál es el mejor guión (p. Ej., panicScript.shO panicScript.py) que podría ejecutar de forma remota para evitar que Shady Sam realice su acto cobarde y evitar que vuelva a intentarlo?

Me imagino ejecutándolo de la siguiente manera:

scp panicScript.sh remoteMachine:~/panicScript.sh
ssh remoteMachine . ~/panicScript.sh

Posibles características:

¡Se fomentan expresamente otras ideas!

  • Cambiar las contraseñas de cualquiera / todas las cuentas en remoteMachine
  • Desactiva el teclado o el mouse
  • Deshabilitar el monitor
  • Reiniciar la máquina

Supuestos

Shady Sam no dañará el Mac Pro en cualquier forma o eliminar cualquiera de sus componentes (por ejemplo, eliminar físicamente a un disco duro o una conexión de red cableada), pero él va a tratar de re-inicio de sesión y continuar con su vil acción lo más rápido posible. Sam tiene (de lo contrario) acceso físico sin restricciones a la computadora y una contraseña de inicio de sesión raíz.

Suponga que el Mac Pro tiene un monitor, teclado, mouse, disco duro externo y una conexión de ethernet para internet. Supongamos que puede imprimir en una impresora de red en un área común. Por diversión, supongamos que tengo una cuenta de usuario estándar en varias estaciones de trabajo de compañeros de trabajo, que son idénticas a las mías (para poder conectarme a sus máquinas a través de ssh).

Suponga que hay una docena de cubículos al aire libre agrupados para que los compañeros de trabajo puedan ponerse de pie y hablar entre ellos. Sin embargo, mis compañeros de trabajo generalmente no sospecharán que Shady Sam está haciendo algo cobarde si lo ven en mi computadora porque ha ayudado a varios de ellos en el pasado y no ha hecho cosas cobardes en sus computadoras.

Restricciones

La secuencia de comandos de pánico está inicialmente en mi computadora portátil en casa. Puede enviarlo scpa mi máquina y ejecutarlo allí, o ejecutarlo directamente desde mi computadora portátil en casa. (¡Especifique en su respuesta!)

Todas las acciones tomadas por el script deben ser no dañinas y / o reversibles desde mi ubicación remota para que pueda recuperar el acceso en un punto posterior desde mi ubicación remota, y deben ser funciones / comandos estándar en una Mac Pro.

El script puede llamar a otros scripts / programas siempre que sean estándar con la máquina. Las herramientas de secuencias de comandos de la línea de comandos (por ejemplo awk) están bien siempre que sus comandos estén contenidos en la secuencia de comandos principal (por ejemplo history | awk '{print $2}'). Es cierto que esto limita los lenguajes de secuencias de comandos que podrían usarse.

Llamar a un script o programa personalizado que escribió (por ejemplo . ~/myOtherScriptOfKungFoo.sh) no está bien, a menos que lo genere desde su script y el script generado tenga menos de 32 caracteres:

echo -e "#"'!'"/bin/bash\necho \"Hello, World\"" >> test.sh
chmod +x test.sh
. test.sh 

No debería tener que interactuar con el script más de una vez (por ejemplo, para escribir una contraseña).

Criterios

El script debe ser corto (límite de 30 líneas), pero legible. El criterio principal es la minuciosidad, las características creativas y el estilo, que es mejor que la simplicidad.

En definitiva, ¡la mayoría de los votos gana!

jvriesem
fuente
28
Pro-tip: No contrates a nadie llamado Shady Sam.
Geobits

Respuestas:

10

El script de pánico debe enviarse a la máquina remota (Mac Pro) usando scp y luego ejecutarse (no se requiere sudo ni ninguna entrada):

Aquí está el guión: (esto supone que usted es John Smith)

#!/bin/bash -m
f() {
 while true
 do
  pmset displaysleepnow
  sleep 0.1
 done
}
f&
while true
do
 osascript -e "set Volume 10"
 say -v Ralph "Stop Shady Sam now. He is trying to do something he is not allowed to."
 for n in {1..10};
 do
  afplay /System/Library/PrivateFrameworks/ScreenReader.framework/Versions/A/Resources/Sounds/Hit.aiff
  sleep 0.05
 done
 sleep 0.1
 say -v Ralph "This is John Smith speaking."
done

Para una máxima eficiencia, debe ejecutar esto en cada máquina en la habitación para asegurarse de que todos noten el problema y lo detengan.

Hannes Karppila
fuente