9.9. マジック SysRq キー

‘マジック SysRq キー’ というのは、 いくつかの基本的なコマンドを、 直接カーネルに渡せるキーシーケンスのことです。 カーネルソフトウェアの開発者たちは、 このインタフェースを使って、自分たちのソフトウェアをデバッグします。 一般の環境では、 コンピュータをリブートする最後の手段にも使えるし、 リモートで行なうのが困難だったり高くつくような、他のことにも使えます。

カーネルソフトェアの開発以外で使っているコンピュータでこのマジック SysRq キーを使うと、 そのマシンは申し分のないサービス拒否デバイスになってしまいます。 不正なキーストロークを2、3行なえば、 そのコンピュータはどうにもならなくなるのです。 シリアルにせよ他のものにせよ、 コンソールは信頼できる人だけがアクセスできる場所に設置して下さい。

シリアルコンソールは RS-232 のブレーク機能を、 ‘マジック SysRq キー’ に使っています。 ‘ブレーク’ とは、 シリアルライン上で何も転送していない期間のことで、 従来の端末では、Break というラベルが付いたキーを押下するとブレーク状態になります。

モデムに電話をかけて接続し、ブレークを送るのは、誰にでもできます。 ですから、もしシリアルコンソールがモデムにつながっている場合は、 このマジック SysRq キーを無効にする必要があります。 シリアルコンソールがターミナルサーバーにつながっていて認証を要求してきたり、 ヌルモデムケーブルを使って直接別の端末につながっている場合は、 マジック SysRq キーを有効にしてもかまいません。

マジック SysRq キーは、カーネルの変数を設定するか、 そのキーをサポートしないようにコンパイルすれば無効にできます。

/proc/sys/kernel/sysrq0 を書き込めば、 マジック SysRq キーは無効になります。 以下のように sysctl コマンドも使えます。

Figure 9-10. sysctl を使って、マジック SysRq キーを無効にする。

bash# sysctl -w kernel.sysrq=0

ご自分の Linux ディストリビューションには /etc/sysctl.conf ファイルがあって、 マシンのブート中にそのファイルを使って sysctl を実行しているかも知れません。その場合は次の行を追加して下さい。

Figure 9-11. マジック SysRq キーを無効にする、 /etc/sysctl.conf の設定。

# マジック SysRq キーを無効にする。
kernel.sysrq = 0

/etc/sysctl.conf でマジック SysRq キーをオフにしたとしても、 カーネルがブートしてからそのファイルの内容が適用されるまでの間が 弱点になります。

ですから、自分のカーネルをコンパイルして、 次のコンフィギュレーションパラメータを設定する方が、 はるかに優れています。

Figure 9-12. SysRq キーを無効にした、 カーネルの make menuconfig

Kernel hacking  --->
 [ ] Magic SysRq key

これで次のコンフィギュレーションパラメータが /usr/src/linux/.config に書かれます。

Figure 9-13. SysRq キーを無効にしている カーネルの .config

# CONFIG_MAGIC_SYSRQ is not set