sysrq f(OOM-killer)を無効にし、他のsysrqキーを動作させたままにします。

sysrq f(OOM-killer)を無効にし、他のsysrqキーを動作させたままにします。

私は自己生成キーとtpm2変数を使用して起動時にハードドライブを自動的に復号化するためのガイドに従いますが、最終的にはこれが意味があるようです。https://blastrock.github.io/fde-tpm-sb.html#disable-the-magic-sysrq-key

魔法のSysRqキーを使用すると、いくつかの特別なカーネルタスクを実行できます。最も危険な機能はデフォルトで無効になっているため、セキュリティを最大化するにはその機能を維持する必要があります。

たとえば、そのうちの1つ(f)はOOM-killerを呼び出します。この機能はロック画面を終了し、悪意のあるユーザーがデスクトップへのフルアクセスを許可する可能性があります。

問題は、無効にする方法だけを見つけたことです。みんなsysrqキー(例:https://askubuntu.com/questions/911522/how-can-i-enable-the-magic-sysrq-key-on-ubuntu-desktopまたはhttps://askubuntu.com/questions/11002/alt-sysrq-reisub-doesnt-reboot-my-laptop/etc/sysctl.d/90-sysrq.conf次の行を使用してファイルを追加します。

kernel.sysrq=1

システムがクラッシュした場合は、可能であればREISUBなどの他のすべてのキーを使用してそのキーを無効にしたいと思いますF

私もこの記事を見つけました。https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html、次のようなビットマスクの追加について言及します。

  2 =   0x2 - enable control of console logging level
  4 =   0x4 - enable control of keyboard (SAK, unraw)
  8 =   0x8 - enable debugging dumps of processes etc.
 16 =  0x10 - enable sync command
 32 =  0x20 - enable remount read-only
 64 =  0x40 - enable signalling of processes (term, kill, oom-kill)
128 =  0x80 - allow reboot/poweroff
256 = 0x100 - allow nicing of all RT tasks

ただし、sysrq-fのみを無効にして他のすべてのキーをデフォルト値に設定する方法を理解していません。

私のノートブック(debian 12)の現在の設定は次のとおりです。

$ grep -IirF sysrq /etc/sysctl.*
/etc/sysctl.conf:# 0=disable, 1=enable all, >1 bitmask of sysrq functions
/etc/sysctl.conf:# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
/etc/sysctl.conf:#kernel.sysrq=438

$ grep -IirF sysrq /etc/sysctl.d/*
/etc/sysctl.d/99-sysctl.conf:# 0=disable, 1=enable all, >1 bitmask of sysrq functions
/etc/sysctl.d/99-sysctl.conf:# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
/etc/sysctl.d/99-sysctl.conf:#kernel.sysrq=438

答え1

起動後(initramfsを含む)どのプロセスも(おそらくコマンドを介して)何も書き込んでいない場合、デフォルトは/proc/sys/kernel/sysrqカーネルのコンパイル時に設定されているように設定されます。sysctl

以下で確認できます。

$ grep -i sysrq "/boot/config-$(uname -r)"
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
CONFIG_MAGIC_SYSRQ_SERIAL=y
CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""

私には(Debianでも)デフォルトで有効になっていますが、438の0x01b6または0b110110110を使用します。マスク

現在の値を確認するには:

$ cat /proc/sys/kernel/sysrq
438
$ sysctl kernel.sysrq
kernel.sysrq = 438

2|4|16|32|128|256です。

  2 =   0x2 - enable control of console logging level
  4 =   0x4 - enable control of keyboard (SAK, unraw)
 16 =  0x10 - enable sync command
 32 =  0x20 - enable remount read-only
128 =  0x80 - allow reboot/poweroff
256 = 0x100 - allow nicing of all RT tasks

したがって、次の点に加えて:

  8 =   0x8 - enable debugging dumps of processes etc.
 64 =  0x40 - enable signalling of processes (term, kill, oom-kill)

ビットマスクのどのビットがどのキーへの入力を許可しているかを確認できます。drivers/tty/sysrq.cカーネルソースコードから

f許可されたSYSRQ_ENABLE_SIGNALそして値0x0040、64より高いのは驚くべきことではありません。

このビットは、e(すべてのジョブ終了)、j(すべての固定FSロック解除)、i(すべてのジョブ終了)を制御します。

したがって、を除くすべてを有効にすることは不可能ですf。あなたができる最善の方法ef446を。ijcltpwzm/proc/sys/kernel/sysrq

ただし、システムへのシェルアクセスが失われるいくつかのカーネル関連の問題をデバッグしたり、管理者以外の人がキーボードまたはシステムのデフォルトに接続されているシリアル回線に物理的にアクセスできない場合にのみ、より安全な438から離れます。値。


また、sysrq_always_enabledすべての制限をバイパスするカーネルコマンドライン引数に注意してください。

関連情報