Supposons que je démarre manuellement un server X à partir d'une console virtuelle /dev/tty1
avec xinit
ou startx
, avec l' id:3:initdefault:
ligne id:3:initdefault:
set in /etc/inittab
. Le server X est exécuté et mis sur une autre console virtuelle, normalement /dev/tty7
. Après un certain time, je décide de verrouiller l'écran avec xscreensaver --lock
et quitter mon ordinateur. Pour déverrouiller l'écran, il faudrait connaître le mot de passe de mon user. Si quelqu'un décide de tuer le server X en cours d'exécution, il sera renvoyé au shell exécutant /dev/tty1
et aura à peu près access à mon ordinateur. Typiquement, le server X peut être tué avec Ctrl+Alt+Backspace
ou passer à la console initiale et SIGTERM
le process en cours d'exécution avec ^C
C'est sortingvial à faire – ce qui signifie qu'il doit y avoir des moyens sortingviaux pour empêcher que cela se produise. J'utilise vlock
pour verrouiller ma console virtuelle /dev/tty1
pour éviter cela:
$ xinit && vlock || vlock
Lorsque le server X revient maintenant, gracieusement &&
ou pas ||
, la console sera verrouillée. Cela peut ne pas être la solution optimale. J'ai lu ce fil de discussion et cet article wiki, expliquant différentes solutions.
Quelles autres methods existent pour empêcher ce type d'access aux consoles virtuelles à partir des sessions X? La méthode ci-dessus est-elle suffisamment sûre? Comment prévoyez-vous cela sur votre système? Je ne vais pas utiliser un gestionnaire d'affichage.
Vous pouvez empêcher les commutateurs de console depuis Xorg en ajoutant l' Option "DontVTSwitch" "yes"
à votre file de configuration Xorg.
Pour empêcher Ctrl + Alt + Backspace, vous devez append l'option DontZap
à votre file de configuration Xorg. Bien sûr, cela n'empêchera pas complètement l'access à la console. Si X
termine pour une raison quelconque, par exemple un problème avec un pilote, l'attaquant aura toujours access à votre console.
Vous pouvez aussi utiliser exec startx
au lieu de startx
qui replacea bash par startx, cela signifie que même si quelqu'un est capable d'abandonner X
il ne pourra pas accéder à votre console. Vous pouvez également utiliser un gestionnaire d'affichage comme lightdm
, kdm
, xdm
ou xdm
pour ne pas avoir besoin d'une session shell existante pour démarrer la session.
J'ai l'input suivante dans mon .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
Si je choisis de me connecter à X
, j'utilise TTY1. La logout
garantit que, après le démarrage de X
sur TTY7, je suis déconnecté de TTY1. J'utilise xautolock et slock comme mes outils de locking d'écran.
Si X
est tué, je suis renvoyé à un TTY7 vide et doit ensuite passer à l'un des six gettys actifs pour se reconnecter.