Écrivez un script de panique pour sécuriser à distance un Mac Pro d'un utilisateur local non fiable [fermé]

12

La situation

Supposons que j'autorise l'accès administrateur "Shady Sam" sur mon poste de travail à effectuer une tâche administrative importante sur mon Mac Pro pour moi en leur donnant un mot de passe de connexion root temporaire. (Supposons qu'ils étaient dignes de confiance, peut-être un administrateur système pour mon entreprise.)

Depuis un endroit éloigné (par exemple la maison), j'utilise mon ordinateur portable MacBook Pro pour observer les activités de Sam et apprendre à faire la tâche moi-même via Remote Desktop (VNC).

Sans avertissement, Shady Sam fait quelque chose de lâche! Peut-être que je le vois essayer de supprimer des données de mon disque dur ou de fouiller dans des dossiers restreints, etc.

Étant donné que nous partageons la souris et le clavier, je ne pouvais pas effectuer une action de manière fiable à partir du Bureau à distance (en outre, ils pouvaient fermer la connexion). Je devrais écrire un script et l'exécuter à distance.

Le défi

Quel est le meilleur script (par exemple panicScript.shou panicScript.py) que je pourrais exécuter à distance pour empêcher Shady Sam d'exécuter son acte ignoble et l' empêcher de recommencer?

Je m'imagine le faire fonctionner de la manière suivante:

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

Caractéristiques possibles:

D'autres idées sont expressément encouragées!

  • Changer les mots de passe de n'importe quel / tous les comptes sur remoteMachine
  • Désactivez le clavier ou la souris
  • Désactiver le moniteur
  • Redémarrez la machine

Hypothèses

Shady Sam ne sera pas endommager le Mac Pro de quelque façon ou supprimer l' un de ses composants (par exemple , retirer physiquement un disque dur ou d'une connexion réseau filaire), mais il va tenter de re-login et continuer son acte ignoble le plus rapidement possible. Sam a (sinon) un accès physique illimité à l'ordinateur et un mot de passe de connexion root.

Supposons que le Mac Pro dispose d'un moniteur, d'un clavier, d'une souris, d'un disque dur externe et d'une connexion Ethernet pour Internet. Supposons qu'il puisse imprimer sur une imprimante réseau dans une zone commune. Pour le plaisir, supposons que j'ai un compte utilisateur standard sur plusieurs postes de travail de collègues, qui sont identiques au mien (afin que je puisse me connecter à leurs machines via ssh).

Supposons qu'il y ait une douzaine de cabines en plein air regroupées afin que les collègues puissent se lever et parler entre eux. Mes collègues, cependant, ne soupçonneront généralement pas que Shady Sam fait quelque chose de douteux s'ils le voient sur mon ordinateur parce qu'il a aidé plusieurs d'entre eux dans le passé et n'a pas fait de choses ignobles à leurs ordinateurs.

Contraintes

Le script de panique est initialement sur mon ordinateur portable à la maison. Vous pouvez le scpfaire sur ma machine et l'exécuter là-bas, ou l'exécuter directement depuis mon ordinateur portable à la maison. (Précisez dans votre réponse!)

Toutes les actions prises par le script doivent être non dommageables et / ou réversibles depuis mon emplacement distant afin que je puisse y accéder ultérieurement à partir de mon emplacement distant, et doivent être des fonctionnalités / commandes standard sur un Mac Pro.

Le script peut appeler d'autres scripts / programmes tant qu'ils sont fournis en standard avec la machine. Les outils de script en ligne de commande (par exemple awk) sont corrects tant que leurs commandes sont contenues dans le script principal (par exemple history | awk '{print $2}'). Certes, cela limite les langages de script qui pourraient être utilisés.

Appeler un script ou un programme personnalisé que vous avez écrit (par exemple . ~/myOtherScriptOfKungFoo.sh) n'est pas correct, sauf si vous le générez à partir de votre script et que le script généré contient moins de 32 caractères:

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

Je ne devrais pas avoir à interagir avec le script plus d'une fois (par exemple pour taper un mot de passe).

Critères

Le script doit être court (30 lignes maximum), mais lisible. Les critères principaux sont la minutie, les caractéristiques créatives et le style, ce qui est mieux que la simplicité.

En fin de compte, le plus de votes gagne!

jvriesem
la source
28
Astuce: n'embauchez personne du nom de Shady Sam.
Geobits

Réponses:

10

Le script de panique doit être envoyé à la machine distante (Mac Pro) à l'aide de scp, puis exécuté (aucun sudo ou aucune entrée requis):

Voici le script: (cela suppose que vous êtes 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

Pour une efficacité maximale, vous devez l'exécuter sur chaque machine dans la pièce pour vous assurer que tout le monde remarquera le problème et l'arrêtera.

Hannes Karppila
la source