Abhilfe verspricht eine kleine Skriptsammlung unter dem Namen molly-guard, die sich sowohl bei Debian wie bei Ubuntu im Repository findet. Der Name soll sich von der Bezeichnung einer Plexiglas-Hülle über Reset-/Ausschaltern ableiten, zu der ihr Erfinder von seiner kleinen Tochter Molly inspiriert worden sein soll, die den Schalter mehrfach betätigte. Die Molly-Guard-Software installiert Links unter den Namen halt , reboot , shutdown und poweroff nach /usr/sbin , wo sie eher gefunden werden als die gleichnamigen Kommando-Originale. Damit das klappt muss allerdings /usr/sbin vor /sbin im Pfad stehen, was jedoch die Regel ist.
Tippt man dann aus der Ferne eines der gefährlichen Kommandos ein, erkennt das Skript /usr/share/molly-guard/shutdown , auf das alle /usr/sbin-Pendants verlinken, dass es in einer SSH-Sitzung aufgerufen wurde und fragt sicherheitshalber nach dem Hostnamen des herunterzufahrenden Systems. Ist der daraufhin eingegebene Hostname nicht mit dem Namen des Rechners identisch, auf dem der Admin eingeloggt ist, wird der Reboot verweigert.
root@klient:/home/jcb# reboot W: molly-guard: SSH session detected! Please type in hostname of the machine to reboot: hercules Good thing I asked; I won't reboot klient ... W: aborting reboot due to 30-query-hostname exiting with code 1.
Gibt man eines der geschützten Kommandos außerhalb einer SSH-Session in einem lokalen Terminal ein, wird der Befehl sofort durchgereicht. Davon kann man sich mit einem Trockenlauf überzeugen:
jcb@hercules:~$ reboot --molly-guard-do-nothing I: demo mode; molly-guard will not do anything due to --molly-guard-do-nothing. molly-guard: would run: /sbin/reboot
Tausend Prozent wasserdicht ist die Prävention allerdings nicht. So werden beispielsweise init 0 oder init 6 von molly-guard nicht abgefangen.