web-dev-qa-db-ja.com

Xが殺されたときにTTYへのアクセスを防ぐ

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セッションから仮想コンソールへのこの種のアクセスを防ぐために他にどのような方法がありますか?上記の方法で十分安全ですか?システムでこれをどのように防止しますか?ディスプレイマネージャは使用しません。

6
user13742

Option "DontVTSwitch" "yes" をXorg構成ファイルに追加することで、Xorgからのコンソール切り替えを防ぐことができます。

防ぐために Ctrl+Alt+Backspace Xorg構成ファイルに DontZap オプションを追加する必要があります。もちろん、これによってコンソールへのアクセスが完全に妨げられるわけではありません。 Xが何らかの理由で終了した場合。ドライバーの問題により、攻撃者は引き続きコンソールにアクセスできます。

startxの代わりにexec startxを使用してbashをstartxに置き換えることもできます。これは、誰かがXを中止できたとしても、コンソールにアクセスできないことを意味します。 lightdmkdmgdmxdmなどのディスプレイマネージャーを使用することもできるため、axセッションを開始するために既存のシェルセッションは必要ありません。 。

7
Ulrich Dangel

.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からログアウトすることを保証します。画面ロックツールとして xautolockslock を使用しています。

Xが強制終了されると、空のTTY7にダンプされ、6つのアクティブなgettyの1つに切り替えてログインし直す必要があります。

1
jasonwryan