9.4. コンソールメッセージを制限する

9.4.1. システムログが出力するコンソールメッセージを制限する

コンソールメッセージを間断無く流すようにしておくと、 簡単に 9600bps のリンクが飽和することがあります。

すべての syslog メッセージをコンソールに表示するのはうまい考えのように見えますが、 実は、権限の無いユーザーが簡単な方法を使って、 リモートコンソールを実質的に使えなくしてしまえるのです。

ですから、 コンソールに出力するシステムログメッセージは、 本当に必要最小限にするように設定してください。 /etc/syslog.conf をちょっと覗いて、 /dev/console で終っている行を探してみて下さい。

この設定ファイルを変更して、 すべてのログメッセージを別のマシンに送り、 そこで記録し解析するという方法を考えてみましょう。 Red Hat Linux 7.2 標準の /etc/syslog.conf を、ログメッセージをログサーバーで記録するように修正したものを Figure 9-2 に示してあります。 syslog.conf の各行を繰り返して、 メッセージのコピーをログサーバーへ送るようにしました。 ログサーバーには loghost.example.edu.au という、DNS の別名があります。 こうしておくと、すべてのリモート機の設定を更新しなくても、 ログサーバーの移動が可能になります。 これで、システム障害の原因を特定する方法が、 もうログメッセージのローカルコピーしかないなどということは無くなります。 ですから、同期をとってファイルに書き込むのを止めれば、 ファイルシステムに不整合が発生する確率は増加しますが、 性能面で多少有利になります (これはファイルシステムがジャーナルを取らないから起こる問題点です)。 ファイル名の直前に - を置けば、 ファイルへの書き込みが同期しなくなります。

ログサーバーは標準の /etc/syslog.conf を使って設定しますが、このファイルは、 リモートの syslog メッセージを受け取れるようにしておきます。 Red Hat Linux 用に設定したこのファイルを、 Figure 9-3 に示します。 システムのログデーモンの設定に加えて、 syslog メッセージの送信元を制限するように IP Tables を設定して、 サービス拒否攻撃も防御して下さい。 また、nscd が動いていて、DNS の逆引きをキャッシュしているのを確認して、 性能改善も行なって下さい。

9.4.2. コンソールに対するブロードキャストメッセージを制限する

シリアルコンソールにログインしているユーザーは、 ブロードキャストメッセージを受け取らないでください。 そうするには、 /etc/profile.d に新しいファイルを追加します。 Figure 9-6 に Bourneシェルで使うファイルを示しています。

このファイルは頻繁に実行するので、 コードは今より読みずらくはなりますが、 もっと高速にした Figure 9-6 というバージョンを使うことにします。 このバージョンは Figure 9-7 に示しました。

C シェル用も必要ですから、 Figure 9-8 に示しました。

mesg.shmesg.csh は 親シェルが実行するというよりも親シェルに付随するものですが、このファイル には実行パーミッションを設定する必要があります。 このファイルのインストールとパーミッションの設定は、 Figure 9-9 に示した手順で行ないます。