Xサーバーを仮想コンソール/dev/tty1
からxinit
またはstartx
で手動で起動し、id:3:initdefault:
の行を/etc/inittab
に設定するとします。 Xサーバーが実行され、通常は/dev/tty7
である別の仮想コンソールに配置されます。しばらくして、xscreensaver --lock
で画面をロックし、コンピューターを離れることにしました。画面のロックを解除するには、ユーザーのパスワードを知っている必要があります。誰かが実行中のXサーバーを強制終了することにした場合、その人は/dev/tty1
で実行されているシェルに戻り、ほとんど私のコンピューターにアクセスできます。通常、XサーバーはCtrl+Alt+Backspace
で強制終了するか、初期コンソールに切り替えてSIGTERM
実行中のプロセスを^C
で強制終了できます。
これは簡単なことです。つまり、それを防ぐための簡単な方法が必要です。これを防ぐために、仮想コンソール/dev/tty1
をロックするために vlock
を使用しています。
$ xinit && vlock || vlock
Xサーバーが正常に&&
または||
に戻らない場合、コンソールはロックされます。これは最適なソリューションではない可能性があります。 this スレッドと this wikiの記事を読み、さまざまな解決策を説明しました。
Xセッションから仮想コンソールへのこの種のアクセスを防ぐために他にどのような方法がありますか?上記の方法で十分安全ですか?システムでこれをどのように防止しますか?ディスプレイマネージャは使用しません。
Option "DontVTSwitch" "yes"
をXorg構成ファイルに追加することで、Xorgからのコンソール切り替えを防ぐことができます。
防ぐために Ctrl+Alt+Backspace Xorg構成ファイルに DontZap
オプションを追加する必要があります。もちろん、これによってコンソールへのアクセスが完全に妨げられるわけではありません。 X
が何らかの理由で終了した場合。ドライバーの問題により、攻撃者は引き続きコンソールにアクセスできます。
startx
の代わりにexec startx
を使用してbashをstartxに置き換えることもできます。これは、誰かがX
を中止できたとしても、コンソールにアクセスできないことを意味します。 lightdm
、kdm
、gdm
、xdm
などのディスプレイマネージャーを使用することもできるため、axセッションを開始するために既存のシェルセッションは必要ありません。 。
.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
は、TTY7でX
が開始された後、TTY1からログアウトすることを保証します。画面ロックツールとして xautolock と slock を使用しています。
X
が強制終了されると、空のTTY7にダンプされ、6つのアクティブなgettyの1つに切り替えてログインし直す必要があります。