From 68abea131a60a421c60060bec1d0dc083984454a Mon Sep 17 00:00:00 2001 From: Ryusuke SUZUKI Date: Sat, 25 Mar 2017 04:30:55 +0000 Subject: [PATCH] - Merge the following from the English version: r22195 -> r22219 head/ja_JP.eucJP/books/handbook/security/chapter.xml --- .../books/handbook/security/chapter.xml | 238 +++++++++++++++++- 1 file changed, 237 insertions(+), 1 deletion(-) diff --git a/ja_JP.eucJP/books/handbook/security/chapter.xml b/ja_JP.eucJP/books/handbook/security/chapter.xml index 574458425e..98e215c3e1 100644 --- a/ja_JP.eucJP/books/handbook/security/chapter.xml +++ b/ja_JP.eucJP/books/handbook/security/chapter.xml @@ -3,7 +3,7 @@ The FreeBSD Documentation Project The FreeBSD Japanese Documentation Project - Original revision: r22195 + Original revision: r22219 $FreeBSD$ --> @@ -53,6 +53,11 @@ ワンタイムパスワード認証の設定方法 + + inetd と組み合わせて + TCP Wrappers を設定する方法 + + &os; 5.0 より前のリリースにおける、 KerberosIV の設定方法 @@ -1611,6 +1616,237 @@ permit port ttyd0 + + TCP Wrappers + + + + Tom + Rhodes + + 執筆: + + + + + TCP Wrappers + + &man.inetd.8; に詳しい方であれば、 + TCP Wrappers について聞いたことがあるでしょう。 + しかし、 + その有効性をネットワーク環境において完全に理解している人はほとんどいなく、 + 誰もがネットワーク接続を取り扱うために、 + ファイアウォールをインストールしたいと考えているようです。 + ファイアウォールは、幅広い用途がある一方で、 + 接続元に対しテキストを送るといった、取り扱ない作業があります。 + TCP ソフトウェアは、これ以上のことができます。 + 以下の節では、 + TCP Wrappers の多くの機能が説明されています。 + そして、適応できる場合には、設定行の例が紹介されています。 + + TCP Wrappers ソフトウェアは、 + inetd + の管理のもとにすべてのサーバデーモンに対応する機能を拡張します。 + この方法を使うことで、ログへの対応、 + 接続に対してメッセージを返したり、 + 内部の接続だけを許可するようにデーモンを設定することなどが可能となります。 + これらの機能のいくつかはファイアウォールでも実装できますが、 + 保護のための特別なレイヤを追加するだけでなく、 + ファイアウォールが提供する以上の管理を提供します。 + + TCP Wrappers 機能の追加は、 + ファイアウォールのより良い置き換えと考えるべきではありません。 + システムを守るためのレイヤを追加するためには、 + ファイアウォールおよび他のセキュリティ設定と組み合わせて使うべきです。 + + この設定は inetd の設定の拡張なので、 + inetd の設定 + 章をすでに読んでいることを想定しています。 + + + 初期設定 + + &os; 上で TCP Wrappers + を使用ために必要となるのは、 + rc.conf から + オプションで + inetd サーバが起動されることを確認するだけです。 + これはデフォルトの設定です。 + もちろん、 + /etc/hosts.allow + も適切に設定されていることが前提です。 + この場合、&man.syslogd.8; + はシステムログにメッセージを出力します。 + + + 他の TCP Wrappers の実装と異なり、 + hosts.deny は廃止されました。 + すべての設定オプションは /etc/hosts.allow + に書かれている必要があります。 + + + 最も簡単な設定におけるデーモンの接続ポリシは、 + /etc/hosts.allow の中で、 + オプションごとに許可またはブロックするように設定するというものです。 + &os; のデフォルトの設定では、inetd + から起動されたすべてのデーモンの接続を許可します。 + この設定を変更することについては、 + 基本的な設定を理解した後で議論されるべきです。 + + 基本的な設定は、通常 + daemon : host option(s) : action + という形式です。ここで、 + daemon は、 + inetd が起動するデーモンの名前です。 + address の部分は、有効なホスト名、 + IP アドレスまたは、 + 括弧 ([ ]) で囲まれた IPv6 アドレスです。 + action フィールドの部分は、アクセスを適切に許可または拒否をするように、 + allow または deny となります。 + 最初のマッチしたルールが適用されると、 + 設定はそこで終わることを覚えておいてください。 + これは、設定ファイルは昇順にルールのマッチをスキャンされ、 + マッチすると、ルールが適用され、 + 検索のプロセスは停止することを意味しています。 + + 他にもいくつかのオプションが存在し、以降の節で説明されます。 + 簡単な設定の行は、上記の情報のみで簡単に構成されます。 + 例として、POP3 の接続を、 + mail/qpopper + デーモンから許可するには、以下の行を + hosts.allow に追加してください。 + + # This line is required for POP3 connections: +qpopper : ALL : allow + + この行を追加したら、inetd を再起動してください。 + これを行うには、&man.kill.1; コマンドを使うか、 + restart パラメータとともに、 + /etc/rc.d/inetd を使ってください。 + + + + 高度な設定 + + TCP Wrappers で高度な設定もできます。 + 接続を取り扱う以上の制御を行うことができるのです。 + ある時は、接続しているホストまたはデーモンにコメントを返すことが良い考えのことがあります。 + 別の場合では、おそらくログファイルを記録したり、 + 管理者にメールで送る必要があることもあるでしょう。 + またその他の状況としては、 + サービスをローカルの接続のみで使用できる必要がある場合もあります。 + これらはすべて、ワイルドカード + と呼ばれる設定のオプション (拡張文字および外部コマンドの実行) + で可能となります。 + 以下の 2 つの節では、 + このような状況への対応について触れています。 + + + 外部コマンド + + 接続は拒否しなければならないが、 + その理由を接続の確立を試みた相手に送りたい状況を考えてください。 + これは、どのように行うことができるでしょうか? + このアクションは、 + オプションを使うことで実現可能です。 + 接続が試みられると、 + はシェルコマンドまたはスクリプトの実行を要求します。 + この場合の例は、 + hosts.allow ファイルに書かれています。 + + # The rest of the daemons are protected. +ALL : ALL \ + : severity auth.info \ + : twist /bin/echo "You are not welcome to use %d from %h." + + この例は、 + You are not allowed to use daemon + from hostname. というメッセージを、 + アクセスファイルの中で設定されていないすべてのデーモンに対して返します。 + 接続元に対し、確立された接続が破棄された直後に返答することは、 + 非常に有効です。 + 返信に使われるメッセージは、" 文字で囲む + 必要 があります。 + この規則に例外はありません。 + + + 攻撃者や攻撃者のグループは、 + これらのデーモンの接続のリクエストであふれさせることにより、 + サーバに対して DoS 攻撃を仕掛けることができます。 + + + このような状況において、他の可能性は + オプションを使うことです。 + と同様に、 + は、暗黙のうちに接続を拒否し、 + 外部のシェルコマンドやスクリプトを実行できます。 + と異なり、 は、 + 接続を確立した相手に対し、返事を返すことはありません。 + たとえば、以下のような設定の行を考えてみてください。 + + # We do not allow connections from example.com: +ALL : .example.com \ + : spawn (/bin/echo %a from %h attempted to access %d >> \ + /var/log/connections.log) \ + : deny + + この行は、 + *.example.com + ドメインからの接続をすべて拒否します。 + 同時にホスト名、IP + アドレスおよびアクセスを試みたデーモンが、 + /var/log/connections.log + ファイルに記録されます。 + + すでに説明した置換文字 (たとえば %a) 以外にも置換文字があります。 + 完全な一覧は + &man.hosts.access.5; マニュアルページをご覧ください。 + + + + ワイルドカードオプション + + これまでの例においては、継続して + ALL を使用する例が用いられてきました。 + この機能を拡張する他のオプションも存在します。たとえば、 + ALL は、 + デーモン、ドメインまたは IP + アドレスのすべてのインスタンスのどれかにマッチするかどうかに使われます。 + 他のワイルドカードは、偽造された IP + アドレスを提供するホストにマッチするかどうかに用いられる + PARANOID です。 + 言い換えると、paranoid を使うことで、 + ホスト名と異なる IP + アドレスからの接続があった時のアクションを定義できます。 + 以下の例は、これらの説明を明確にするでしょう。 + + # Block possibly spoofed requests to sendmail: +sendmail : PARANOID : deny + + この例では、ホスト名から検索される + IP アドレスと異なる + IP アドレスを持つ + sendmail + への接続のすべてのリクエストを拒否します。 + + + クライアントもしくはサーバの DNS + の設定が間違っている場合に、 + PARANOID を使うと、 + サーバがとても使いづらくなります。 + 管理者の慎重さが求められます。 + + + ワイルドカードおよび関連する機能についてもっと知りたい場合には、 + &man.hosts.access.5; マニュアルページをご覧ください。 + + 上記の設定が動作するには、hosts.allow + の中で、最初の設定の行がコメントアウトされている必要があります。 + これはすでにこの章の最初で説明した通りです。 + + + + <application>KerberosIV</application>