- Merge the following from the English version:

r22195 -> r22219	head/ja_JP.eucJP/books/handbook/security/chapter.xml
This commit is contained in:
Ryusuke SUZUKI 2017-03-25 04:30:55 +00:00
parent 10480bd597
commit 68abea131a
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=50084

View file

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