
Angenommen, ich starte einen X-Server manuell von einer virtuellen Konsole aus /dev/tty1
mit xinit
oder startx
, wobei die Zeile id:3:initdefault:
in gesetzt ist /etc/inittab
. Der X-Server wird ausgeführt und auf eine andere virtuelle Konsole gesetzt, normalerweise /dev/tty7
. Nach einiger Zeit beschließe ich, den Bildschirm mit zu sperren xscreensaver --lock
und meinen Computer zu verlassen. Um den Bildschirm zu entsperren, müsste man mein Benutzerkennwort kennen. Wenn sich nun jemand entscheidet, den laufenden X-Server zu beenden, würde er oder sie zur Shell zurückkehren, die unter ausgeführt wird, /dev/tty1
und hätte praktisch Zugriff auf meinen Computer. Normalerweise kann der X-Server mit Ctrl+Alt+Backspace
oder beendet werden, indem zur anfänglichen Konsole und SIGTERM
zum laufenden Prozess mit gewechselt wird ^C
.
Das ist trivial - was bedeutet, dass es triviale Möglichkeiten geben muss, dies zu verhindern. Ich verwendevlock
um meine virtuelle Konsole zu sperren /dev/tty1
und dies zu verhindern:
$ xinit && vlock || vlock
Wenn der X-Server nun zurückkehrt, ob ordnungsgemäß &&
oder nicht ||
, wird die Konsole gesperrt. Dies ist möglicherweise nicht die optimale Lösung. Ich habe gelesenDasFaden undDasWiki-Artikel, der verschiedene Lösungen erklärt.
Welche anderen Methoden gibt es, um diese Art des Zugriffs auf virtuelle Konsolen aus X-Sitzungen heraus zu verhindern? Ist die obige Methode sicher genug? Wie verhindern Sie dies auf Ihrem System? Ich werde keinen Display-Manager verwenden.
Antwort1
Sie können Console Switches von Xorg verhindern, indem Sie denOption "DontVTSwitch" "yes"
zu Ihrer Xorg-Konfigurationsdatei.
CtrlUm + Alt+ zu verhindern Backspace, müssen Sie dieDontZap
Option zu Ihrer Xorg-Konfigurationsdatei hinzufügen. Natürlich wird dies den Zugriff auf die Konsole nicht vollständig verhindern. Wenn der X
Vorgang aus irgendeinem Grund beendet wird, z. B. aufgrund eines Treiberproblems, hat der Angreifer weiterhin Zugriff auf Ihre Konsole.
exec startx
Sie können auch anstelle von verwenden startx
, wodurch bash durch startx ersetzt wird. Dies bedeutet, dass selbst wenn jemand abbrechen kann, X
er nicht auf Ihre Konsole zugreifen kann. Sie können auch einen Display-Manager wie lightdm
, kdm
, gdm
, oder verwenden xdm
, sodass Sie keine vorhandene Shell-Sitzung benötigen, um eine Ax-Sitzung zu starten.
Antwort2
Ich habe folgenden Eintrag in meiner .profile
:
# startx if on tty1 and tmux on tty2
if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/tty1 ]]; then
exec xinit -- :0 -novtswitch &>/dev/null &
logout
elif [[ $(tty) = /dev/tty2 ]]; then
tmux -f $HOME/.tmux/conf new -s secured
fi
Wenn ich mich anmelde X
, verwende ich TTY1. Das logout
stellt sicher, dass X
ich nach dem Start von auf TTY7 von TTY1 abgemeldet werde. Ich verwendexautolockUndschlackeals meine Bildschirmsperrtools.
Wenn X
es beendet wird, werde ich auf ein leeres TTY7 zurückgeleitet und muss dann zu einem der sechs aktiven Gettys wechseln, um mich wieder anzumelden.