Chapter 5. サービスに対するアクセスの制御

 Red Hat Linuxシステムのセキュリティを維持することが特に重要です。システムのセキュリティを管理する1つの方法として、システムのサービスに対するアクセスを注意深く管理することがあります。特定サービスに対する公衆アクセスを許可する必要があるかもしれません(たとえば、Webサーバーを運営する場合のhttpd)。ただし、サービスを提供する必要がないならば、サービスをオフにする必要があります。そうすることによって、バグを悪用される可能性が最小になります。

 システムサービスへのアクセスを管理する手段はいくつかあります。どの手段を使用するのかを、サービス、システムの構成、Linuxに関するユーザーの専門知識のレベルに従って決定する必要があります。

 サービスに対するアクセスを拒否するための最も簡単な方法は、単純にサービスをオフにすることです。xinetdによって管理されるサービス(このセクションの後半で説明します)と、/etc/rc.d階層に属するサービスの起動/停止を設定するには、ntsysvユーティリティやchkconfigを使用します。これらのツールの方が他の手段(/etc/rc.dの下にあるディレクトリ群の中にある多数のシンボリックリンクを手作業で編集したり、/etc/xinetd.dの中のxinetd設定ファイル群を編集したり)よりも使いやすいと感じることでしょう。

 ntsysvユーティリティは、サービスを有効化/無効化するための単純なインターフェイスを提供します。ntsysvを使用すれば、xinetdによって管理されるサービスのオン/オフを切り替えることができます。また、ntsysvを使用して、/etc/rc.d階層に含まれるサービスを起動/停止することもできます。どちらの場合でも、オプションなしのntsysvコマンドによって現在のランレベルに関する設定が行われます。別のランレベルに関する設定を行うには、ntsysv --levels 016のようなコマンドを使用します(この例では、ランレベル0、1、6用のサービスを設定することになります)。

 ntsysvインターフェイスは、テキストモードのインストールプログラムのような動き方をします。一覧を上下にナビゲートするには、上矢印キーと下矢印キーを使用します。スペースバーによってサービスの選択/選択解除を行います。また、[OK]ボタンや[キャンセル]ボタンを「押す」場合にもスペースバーを使用します。サービスの一覧、[OK]ボタン、[キャンセル]ボタンの間を移動するには、Tabキーを使用します。*はサービスがオンになっていることを示します。F1キーを押すと、各サービスに関する簡単な説明が表示されます。

 サービスを有効化/無効化するために、chkconfigを使用することもできます。chkconfig --listコマンドを使用した場合は、システムサービスの一覧と、各サービスがどのランレベル(0〜6)で起動され(on)、停止される(off)のかが表示されます(一覧の末尾には、xinetdによって管理されるサービス用のセクションがあります。このセクションの後半で説明します)。

 chkconfig --listを使うと、xinetdが管理するサービスを照会したり、xinetdサービスが起動している(on)か停止している(off)を確認したりできます。たとえば、以下のコマンドは、xinetdサービスとしてfingerが有効化されていることを示しています。

$
chkconfig --list finger
finger on

 上記のように、xinetdが稼動していれば、fingerは有効です。

 chkconfig --listによって/etc/rc.d のサービスを照会する場合は、以下のようにランレベルごとのサービス設定が表示されます。

$
/sbin/chkconfig --list anacron
anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off

 さらに重要なのは、chkconfigを使用すれば、指定したランレベルでサービスが起動する(しない)ように設定できることです。たとえば、ランレベル3、4、5においてnscdをオフにしたい場合は、以下のようなコマンドを使用します。

chkconfig --level 345 nscd off

 chkconfigの詳しい使い方については、manページを参照してください。

Warning変更内容を有効にする
 

 ntsysvchkconfigを使用しても、変更内容がすぐに反映されるわけではありません。service daemon stopコマンドを使って、各サービスを停止または機能する必要があります。前出の例では、daemonに停止するサービスの名前(たとえば、httpd)を指定します。stopの代わりに、startrestartを指定すると、サービスを起動または再起動することができます。xinetdが管理するサービスを起動または停止する場合は、service xinetd restartコマンドを使用します。

 インターネットサービスへのアクセスを制御するもう1つの方法として、xinetdを使用することがあります。これは、inetdの代わりになるもので、より安全です。xinetdデーモンはシステム資源を保護し、アクセスを制御し、ログをとります。また、特殊目的のサーバー群を起動するために使用することもできます。xinetdを使用すれば、特定ホストへのアクセスのみを許可したり、特定ホストへのアクセスを禁止したり、特定の時間帯にのみサービスへのアクセスを許可したり、受信接続の割合や接続による負荷を制限したりすることができます。

 xinetdは停止することなく動作し続け、すべてのポート上で管理対象のサービスを監視します。管理対象のサービスのいずれかに対する要求が到着すると、xinetdは該当するサービスに適したサーバーを起動します。

 xinetd用の設定ファイルは/etc/xinetd.conf ですが、このファイルの内容を調べてみれば、ファイルには、いくつかのデフォルト値と/etc/xinetd.d ディレクトリをインクルードするための命令しかないことがわかるでしょう。xinetdサービスを有効化または無効化するには、/etc/xinetd.dディレクトリ内の設定ファイルを編集します。disable 属性がyesに設定されている場合は、サービスは無効です。disable属性がnoに設定されている場合は、サービスは有効です。xinetd設定ファイルの内容を編集したり、ntsysvchkconfigを使用して有効なステータスを変更したりした場合には、変更内容を反映させる前に、service xinetd restartコマンドを使って、xinetdを再起動する必要があります。

 多くのUNIXシステム管理者は、TCPラッパーを使用して特定のネットワークサービスへのアクセスを管理することに慣れています。xinetdによって管理されるすべてのネットワークサービス(そしてlibwrapのサポートが組み込まれているプログラム)は、TCPラッパーを使用してアクセスを管理することができます。xinetdは、/etc/hosts.allow/etc/hosts.denyファイルを使用することによってシステムサービスへのアクセスを設定することができます。TCPラッパーを使用したい場合は、hosts_access (5)のmanページを参照してください。

 システムサービスへのアクセスを管理するためのもう1つの方法として、ipchainsによってIPファイアウォールを設定することもできます。しかし、Linuxの初心者には、ipchainsが最良の策ではない場合があるということを理解してください。初心者にとってipchainsの設定は複雑かもしれません。またその扱い方を最もよく知っているのは、経験のあるUNIX/Linuxのシステム管理者です。

 とはいうものの、ipchainsを使用するメリットは、その柔軟性にあります。たとえば、あるホストに対するアクセスを特定のサービスに許可するようにカスタマイズしたい場合でも、ipchainsならば可能です。ipchainsの詳細については、http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.htmlにあるLinux IPCHAINS-HOWTOを参照してください。Linux IPCHAINS-HOWTO は、ドキュメンテーションCD-ROMにも収録されています。

 そのほかに、家庭用マシン用の一般的なアクセス規則を設定するためのユーティリティを探している場合、またはあなたがLinuxの初心者である場合には、gnome-lokkitユーティリティを試してみるべきです。gnome-lokkit は、あなたがどのようにマシンを使いたいかを尋ねるGUIユーティリティです。ユーザーの応答にしたがって、gnome-lokkitは自動的に単純なファイアウォールを設定します。

参考資料

xinetdの詳細については、次のリソースを参照してください。

インストールされているドキュメント

  • man xinetdxinetd manページ

  • man xinetd.confxinetd.conf設定ファイルのmanページ

役立つWebサイト

  • http://www.xinetd.orgxinetd Webページ。詳細な機能一覧や設定ファイルのサンプルが含まれています。