Предотвращение доступа к TTY при завершении работы X

Предотвращение доступа к TTY при завершении работы X

Предположим, я запускаю X-сервер вручную с виртуальной консоли /dev/tty1с помощью xinitили startx, со строкой, id:3:initdefault:установленной в /etc/inittab. X-сервер запускается и помещается на другую виртуальную консоль, обычно это /dev/tty7. Через некоторое время я решаю заблокировать экран с помощью xscreensaver --lockи отхожу от компьютера. Чтобы разблокировать экран, нужно знать пароль моего пользователя. Если кто-то теперь решит завершить работу X-сервера, он или она вернется в оболочку, работающую в , /dev/tty1и практически получит доступ к моему компьютеру. Обычно X-сервер можно завершить с помощью Ctrl+Alt+Backspaceили переключившись на начальную консоль и на SIGTERMработающий процесс с помощью ^C.

Это тривиально сделать - значит, должны быть тривиальные способы предотвратить это. Я используюvlockчтобы заблокировать мою виртуальную консоль /dev/tty1и предотвратить это:

$ xinit && vlock || vlock

Когда X-сервер теперь вернется, изящно &&или нет ||, консоль будет заблокирована. Это может быть не оптимальным решением. Я читалэтотнить иэтотСтатья в Википедии, объясняющая различные решения.

Какие еще есть методы для предотвращения такого доступа к виртуальным консолям из сеансов X? Достаточно ли безопасен вышеуказанный метод? Как предотвратить это в вашей системе? Я не собираюсь использовать дисплейный менеджер.

решение1

Вы можете запретить переключение консоли из Xorg, добавивOption "DontVTSwitch" "yes"в ваш конфигурационный файл Xorg.

Чтобы предотвратить Ctrl+ Alt+, Backspaceвам нужно добавитьDontZapпараметр в вашем файле конфигурации Xorg. Конечно, это не полностью заблокирует доступ к консоли. Если Xпо какой-то причине произойдет сбой, например, из-за проблем с драйвером, злоумышленник все равно получит доступ к вашей консоли.

Вы также можете использовать exec startxвместо startxwhich заменит bash на startx, это означает, что даже если кто-то сможет прервать, Xон не сможет получить доступ к вашей консоли. Вы также можете использовать дисплейный менеджер, такой как lightdm, kdm, gdm, или xdm, поэтому вам не понадобится существующий сеанс оболочки для запуска сеанса ax.

решение2

У меня в . есть следующая запись .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

Если я выбираю войти в X, я использую TTY1. Это logoutгарантирует, что после Xзапуска на TTY7 я выйду из TTY1. Я используюxautolockислоккак мои инструменты блокировки экрана.

Если Xон будет убит, меня перебросит обратно на пустой TTY7, а затем мне придется переключиться на один из шести активных getty, чтобы снова войти в систему.

Связанный контент