ubuntuusers.de

Anhang: ist-zuhause

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#! /bin/dash -e
# /usr/local/sbin/ist-zuhause	tested, ob Rechner im heimatlichen Netzwerk
# Copyright (c) 2023		kB @ UbuntuUsers.de
# SPDX-License-Identifier:	GLWTPL
# https://spdx.org/licenses/GLWTPL.html (Good Luck With That Public License)

# Die nächste Zeile lt. Anleitung individuell anpassen!
TOKEN='fe80::3681:c4ff:fe▒▒:▒▒▒▒ dev cable lladdr 34:81:c4:▒▒:▒▒:▒▒ router'

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

case $PAM_TYPE
in (auth)	test -n "$PAM_USER"					&&
		  getent group nopasswdlogin | grep -wq "$PAM_USER"	&&
		    ip -6 neigh | grep -q "$TOKEN"			&&
		      exit 0	# 0 = SUCCESS
;; (*)		false
esac		|| exit 9	# 9 = AUTH_ERR
exit 255

Anhang herunterladen

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:

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:

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:

  1. Wurde überhaupt ein Benutzername benannt?

  2. 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.

  3. 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.

Diese Revision wurde am 18. Juli 2023 14:07 von ubuntuusers erstellt.