Dieses Skript prüft für PAM, ob der ausführende Rechner sich im heimatlichen Netzwerk aufhält oder nicht und meldet das Ergebnis als Rückgabewert:
0 bedeutet: „Der Rechner ist zuhause.“,
9 (oder jeder andere Wert) bedeutet: „Er ist nicht zuhause oder es kann nicht entschieden werden.“
Das Skript muss herunter geladen und im Ordner /usr/local/sbin als ausführbare Datei abgelegt werden. Es muss root gehören und nur root darf in die Datei schreiben können. Auch die Ordner im Pfad /usr/local/sbin dürfen nur durch root beschreibbar sein. Dateibesitzer und Dateirechte sind ggf. mit dem Programmen chown und chmod richtig einzustellen.
Im Skript ist in der Zeile 8 der Wert für die Variable TOKEN individuell einzustellen. Dazu führt man im Heimatnetz den Befehl
ip -6 neigh
aus und kopiert aus dessen Ausgabe die Angaben für den eigenen Router als Wert in das Skript. Dabei ändern sich individuell:
die IPv6-Link-Local-Adresse des Routers fe80:…
der Name der Netzwerk-Schnittstelle (im Beispiel cable)
die Layer-2-Adresse des Routers (die 6 Hexadezimalzahlen nach lladdr)
der DNS-Name des Routers (im Beispiel router)
Nicht mit kopieren darf man das letzte Wort der Ausgabezeile mit dem momentanen Status der Nachbarschaftsangaben.
Das Skript ist vorgesehen für die Ausführung durch das PAM-Modul pam_exec. Dieses versorgt das Skript mit einigen Umgebungsvariablen wie PAM_TYPE, PAM_USER u.a.
Das Skript soll nur für das Thema auth etwas prüfen und liefert bei einem Aufruf in anderen Kontexten immer Misserfolg zurück. Für auth werden drei Prüfungen durchgeführt:
Wurde überhaupt ein Benutzername benannt?
Ist dieser Benutzer berechtigt, statt einer Passwort-Eingabe ein TOKEN zu verwenden? Dazu muss er zur Gruppe nopasswdlogin gehören. Diese Gruppe muss man selber anlegen und die gewünschten Benutzer dieser Gruppe zuordnen. Man kann aber auch ganz auf diese Prüfung verzichten.
Ist der Rechner im Heimatnetz?
Wenn alle Prüfungen bejaht wurden, meldet das Skript Erfolg zurück, sonst Misserfolg.
Natürlich ist das alles fälschbar und somit ist das Verfahren höchstens solange sicher, bis der Angreifer weiß, was er fälschen muss.