- Merge the following from the English version:

r32597 -> r35396	head/ja_JP.eucJP/books/handbook/security/chapter.xml
This commit is contained in:
Ryusuke SUZUKI 2017-11-02 13:13:28 +00:00
parent 1bf19dd739
commit 8375ef08cf
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=51166

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: r32597 Original revision: r35396
$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">
@ -356,7 +356,7 @@
<command>telnet</command><command>rlogin</command> 経由では <command>telnet</command><command>rlogin</command> 経由では
<systemitem class="username">root</systemitem> で直接ログインできないようになります。 <systemitem class="username">root</systemitem> で直接ログインできないようになります。
これは、<filename>/etc/ssh/sshd_config</filename> を編集して これは、<filename>/etc/ssh/sshd_config</filename> を編集して
<literal>PermitRootLogin</literal><literal>NO</literal> <literal>PermitRootLogin</literal><literal>no</literal>
が設定されるようにすることで実現できます。 が設定されるようにすることで実現できます。
<application>sshd</application> のような、別のログインサービス <application>sshd</application> のような、別のログインサービス
を使っている場合でも同様に、直接 <systemitem class="username">root</systemitem> を使っている場合でも同様に、直接 <systemitem class="username">root</systemitem>
@ -559,8 +559,10 @@
権限の潜在的な穴で他に大きなものには、シ 権限の潜在的な穴で他に大きなものには、シ
ステムにインストールされた suid-root/sgid バイナリがあります。 ステムにインストールされた suid-root/sgid バイナリがあります。
これらのバイナリは、<application>rlogin</application> のように、 これらのバイナリは、<application>rlogin</application> のように、
<filename>/bin</filename>, <filename>/sbin</filename>, <filename class="directory">/bin</filename>, <filename
<filename>/usr/bin</filename>, <filename>/usr/sbin</filename> class="directory">/sbin</filename>, <filename
class="directory">/usr/bin</filename> または <filename
class="directory">/usr/sbin</filename>
に存在するものがほとんどです。100% 安全なものは存在しないとは に存在するものがほとんどです。100% 安全なものは存在しないとは
いえ、システムデフォルトの siud/sgid バイナリは比較的安全とい いえ、システムデフォルトの siud/sgid バイナリは比較的安全とい
えます。それでもなお、<systemitem class="username">root</systemitem> えます。それでもなお、<systemitem class="username">root</systemitem>
@ -657,28 +659,81 @@
モジュールを使って自分独自の <filename>bpf</filename> モジュールを使って自分独自の <filename>bpf</filename>
もしくはその他覗き見デバイス もしくはその他覗き見デバイス
を動作中のカーネルにインストールできます。この問題を を動作中のカーネルにインストールできます。この問題を
避けるため、システム管理者はカーネルをより高い安全レベル ( 避けるため、システム管理者はカーネルをより高いセキュアレベル、
securelevel)、少なくとも安全レベル 1 で実行させる必要がありま 少なくともセキュアレベル 1 で実行させる必要があります。</para>
す。安全レベルは <command>sysctl</command> を使って
<para>カーネルのセキュアレベルはいくつかの方法で設定できます。
現在動いているカーネルのセキュアレベルを高める最も簡単な方法は、
<command>sysctl</command> を使って
<varname>kern.securelevel</varname> <varname>kern.securelevel</varname>
変数を操作して設定できます。ひとたび安全レベルに 1 を設定すると、raw デバ カーネル変数を操作する方法です。</para>
イスに対する書き込みアクセスは拒否され、たとえば
<literal>schg</literal> のような特別な <screen>&prompt.root; <userinput>sysctl kern.securelevel=<replaceable>1</replaceable></userinput></screen>
<command>chflags</command> フラグの機能が
強制されます。システム起動に関わる重要なバイナリやディレクトリ、 <para>デフォルトでは、&os; のカーネルはセキュアレベル -1 で起動します。
スクリプトファイルなど、安全レベルが設定されるまでの間に実行さ このセキュアレベルは、管理者または &man.init.8;
れるすべてのものに対しても、確実に <literal>schg</literal> による起動時のスクリプトにより変更されない限り -1 のままです。
フラグを設定してください。この設定をやり過ぎても <filename>/etc/rc.conf</filename> ファイルで、
構いませんが、より高い安全レベルで動作している場合、システムの <varname>kern_securelevel_enable</varname> 変数を
アップグレードがはるかに困難になります。システムをより高い安全 <literal>YES</literal>
レベルで実行させるようにするが、すべてのシステムファイルとディ <varname>kern_securelevel</varname>
レクトリに <literal>schg</literal> 変数を必要とする値に設定することで、
システム起動時にセキュアレベルを高めることができます。</para>
<para>&os;
システムの起動スクリプト実行直後のデフォルトのセキュアレベルは
-1 です。
このセキュアレベルでは、
変更不可のファイルフラグを外したり、
すべてのデバイスに対して読み込みおよび書き込みができたりするので、
<quote>insecure mode</quote> と呼ばれます。</para>
<para>セキュアレベルを 1 以上に設定すると、
追加専用および変更不可ファイルのフラグを外すことはできなくなり、
また raw デバイスへのアクセスが拒否されます。
より高いレベルに設定すると、より多くの操作に制限がかかります。
各セキュアレベルの完全な説明については、
&man.security.7; マニュアルページ (&os; 7.0 より前のリリースでは、
&man.init.8; マニュアルページ) をご覧ください。</para>
<note>
<para>セキュアレベルを 1 以上に設定した場合には、
X11 (<filename>/dev/io</filename> へのアクセスがブロックされます)
やソースから &os; を構築してインストールするとき
(installworld のプロセスでは、
いくつかのファイルの追加専用および変更不可のフラグは一時的にリセットされます)
など、それ以外にも問題が引き起こされる可能性があります。
X11 の問題については、
起動プロセス初期のセキュアレベルが十分低いときに
&man.xdm.1; を起動することで、この問題に対応できます。
このような応急処置は、
すべてのセキュアレベルやそれらが課す潜在的なすべての制限には対応できないでしょう。
少し先を見越した計画的な対応をすべきです。
各セキュリティレベルで課される制限は、
システムを使用することによる利便性を著しく減らしてしまうため、
この制限を理解することは重要です。
また、各セキュリティレベルの制限を理解することで、
デフォルトの設定をよりシンプルにでき、
設定に関する意外性を少なくできるでしょう。</para>
</note>
<para>カーネルのセキュアレベルを 1 以上に設定した場合には、
システム起動に関わる重要なバイナリやディレクトリ、
スクリプトファイル (すなわち、
セキュアレベルが設定されるまでの間に実行されるすべてのものに対して)、
<literal>schg</literal> フラグを設定することは有用でしょう。
この設定をやり過ぎても構いませんが、
より高いセキュアレベルで動作している場合、
システムのアップグレードがはるかに困難になります。
システムをより高い安全レベルで実行させるようにするが、
すべてのシステムファイルとディレクトリに <literal>schg</literal>
フラグを設定しないというところで妥協するという手もあります。 フラグを設定しないというところで妥協するという手もあります。
もう一つの可能性としては、単純に もう一つの可能性としては、単純に
<filename>/</filename> および <filename>/usr</filename> を読み <filename class="directory">/</filename> および
込み専用でマウントすることです。ここで特筆すべきことは、システ <filename class="directory">/usr</filename>
ムを守ろうとして厳しくしすぎると、侵入を検出するという非常に重 を読み込み専用でマウントすることです。
要なことができなくなってしまうということです。</para> ここで特筆すべきことは、システムを守ろうとして厳しくしすぎると、
侵入を検出するという非常に重要なことができなくなってしまうということです。</para>
</sect2> </sect2>
<sect2 xml:id="security-integrity"> <sect2 xml:id="security-integrity">
@ -688,8 +743,9 @@
<para>ことこの問題に至ると、システム管理者にできることは、便利さ <para>ことこの問題に至ると、システム管理者にできることは、便利さ
という要素がその醜い頭を上げない程度に、コアシステムの設定と制 という要素がその醜い頭を上げない程度に、コアシステムの設定と制
御ファイルを防御することだけです。たとえば、 御ファイルを防御することだけです。たとえば、
<filename>/</filename> および <filename>/usr</filename> にある <filename class="directory">/</filename> および
大部分のファイルに <literal>schg</literal> ビットを設定するた <filename class="directory">/usr</filename>
にある大部分のファイルに <literal>schg</literal> ビットを設定するた
めに <command>chflags</command> を使用するのは、おそらく逆効果 めに <command>chflags</command> を使用するのは、おそらく逆効果
でしょう。なぜなら、そうすることでファイルは保護できますが、侵 でしょう。なぜなら、そうすることでファイルは保護できますが、侵
入を検出する窓を閉ざしてしまうことにもなるからです。セキュリティ 入を検出する窓を閉ざしてしまうことにもなるからです。セキュリティ
@ -729,14 +785,17 @@
をすれば、&man.find.1;&man.md5.1; などの単純なシステムユー をすれば、&man.find.1;&man.md5.1; などの単純なシステムユー
ティリティでスクリプトを書くことができます。少なくとも 1 日 1 ティリティでスクリプトを書くことができます。少なくとも 1 日 1
回、クライアントのファイルを直接 md5 にかけ、さらにもっと頻繁 回、クライアントのファイルを直接 md5 にかけ、さらにもっと頻繁
<filename>/etc</filename> および <filename class="directory">/etc</filename> および
<filename>/usr/local/etc</filename> にあるようなコントロール用 <filename class="directory">/usr/local/etc</filename>
にあるようなコントロール用
ファイルを試験するのが一番です。アクセス制限されたマシンが正し ファイルを試験するのが一番です。アクセス制限されたマシンが正し
いと知っている、基となる md5 情報と比べて違いが見つかった場合、 いと知っている、基となる md5 情報と比べて違いが見つかった場合、
システム管理者に調べて欲しいと悲鳴を上げるようにすべきです。優 システム管理者に調べて欲しいと悲鳴を上げるようにすべきです。優
れたセキュリティ用スクリプトは、<filename>/</filename> および れたセキュリティ用スクリプトは、
<filename>/usr</filename> などのシステムパーティション上で不適 <filename class="directory">/</filename> および
当に suid されたバイナリや、新たに作成されたファイルや削除され <filename class="directory">/usr</filename>
などのシステムパーティション上で不適当に
suid されたバイナリや、新たに作成されたファイルや削除され
たファイルがないかどうかを調べるでしょう。</para> たファイルがないかどうかを調べるでしょう。</para>
<para>NFS ではなく、ssh を使用する場合は、 <para>NFS ではなく、ssh を使用する場合は、
@ -1607,7 +1666,7 @@ ALL : ALL \
<para>このような状況において、他の可能性は <option>spawn</option> <para>このような状況において、他の可能性は <option>spawn</option>
オプションを使うことです。 オプションを使うことです。
<option>twist</option> と同様に、 <option>twist</option> と同様に、
<option>spawn</option> は、暗黙のうちに接続を拒否し、 <option>spawn</option> オプションは、暗黙のうちに接続を拒否し、
外部のシェルコマンドやスクリプトを実行できます。 外部のシェルコマンドやスクリプトを実行できます。
<option>twist</option> と異なり、<option>spawn</option> は、 <option>twist</option> と異なり、<option>spawn</option> は、
接続を確立した相手に対し、返事を返すことはありません。 接続を確立した相手に対し、返事を返すことはありません。
@ -1636,8 +1695,8 @@ ALL : .example.com \
<sect3> <sect3>
<title>ワイルドカードオプション</title> <title>ワイルドカードオプション</title>
<para>これまでの例においては、継続して <para>これまでの例は、継続して
<literal>ALL</literal> を使用する例が用いられてきました。 <literal>ALL</literal> オプションが使用されてきました。
この機能を拡張する他のオプションも存在します。たとえば、 この機能を拡張する他のオプションも存在します。たとえば、
<literal>ALL</literal> は、 <literal>ALL</literal> は、
デーモン、ドメインまたは <acronym>IP</acronym> デーモン、ドメインまたは <acronym>IP</acronym>
@ -1645,7 +1704,7 @@ ALL : .example.com \
他のワイルドカードは、偽造された <acronym>IP</acronym> 他のワイルドカードは、偽造された <acronym>IP</acronym>
アドレスを提供するホストにマッチするかどうかに用いられる アドレスを提供するホストにマッチするかどうかに用いられる
<literal>PARANOID</literal> です。 <literal>PARANOID</literal> です。
言い換えると、<literal>paranoid</literal> を使うことで、 言い換えると、<literal>PARANOID</literal> を使うことで、
ホスト名と異なる <acronym>IP</acronym> ホスト名と異なる <acronym>IP</acronym>
アドレスからの接続があった時のアクションを定義できます。 アドレスからの接続があった時のアクションを定義できます。
以下の例は、これらの説明を明確にするでしょう。</para> 以下の例は、これらの説明を明確にするでしょう。</para>
@ -1662,7 +1721,7 @@ sendmail : PARANOID : deny</programlisting>
<caution> <caution>
<para>クライアントもしくはサーバの <acronym>DNS</acronym> <para>クライアントもしくはサーバの <acronym>DNS</acronym>
の設定が間違っている場合に、 の設定が間違っている場合に、
<literal>PARANOID</literal> を使うと、 <literal>PARANOID</literal> ワイルドカードを使うと、
サーバがとても使いづらくなります。 サーバがとても使いづらくなります。
管理者の慎重さが求められます。</para> 管理者の慎重さが求められます。</para>
</caution> </caution>
@ -1736,7 +1795,8 @@ sendmail : PARANOID : deny</programlisting>
<para>この作業はKerberosサーバだけでおこないます。まず、 <para>この作業はKerberosサーバだけでおこないます。まず、
古いKerberosの データベースが存在しないことを確認してください。 古いKerberosの データベースが存在しないことを確認してください。
ディレクトリ<filename>/etc/kerberosIV</filename>に移って、 ディレクトリ<filename class="directory">/etc/kerberosIV</filename>
に移って、
次のファイルだけが 存在することをチェックします。</para> 次のファイルだけが 存在することをチェックします。</para>
<screen>&prompt.root; <userinput>cd /etc/kerberosIV</userinput> <screen>&prompt.root; <userinput>cd /etc/kerberosIV</userinput>
@ -1918,7 +1978,7 @@ Edit O.K.
すべてのインスタンスを展開します。 すべてのインスタンスを展開します。
これには <command>ext_srvtab</command> というコマンドを使用します。 これには <command>ext_srvtab</command> というコマンドを使用します。
このコマンドで作成されるファイルは、Kerberos このコマンドで作成されるファイルは、Kerberos
の各クライアントの <filename>/etc</filename> の各クライアントの <filename class="directory">/etc</filename>
ディレクトリに<emphasis>安全な方法で</emphasis> ディレクトリに<emphasis>安全な方法で</emphasis>
コピーまたは移動する必要があります。 コピーまたは移動する必要があります。
このファイルはそれぞれのサーバとクライアントに存在しなければならず、 このファイルはそれぞれのサーバとクライアントに存在しなければならず、
@ -1946,8 +2006,8 @@ Generating 'grunt-new-srvtab'....</screen>
client-new-srvtab</filename> client-new-srvtab</filename>
を移動 を移動
可能なメディアにコピーして物理的に安全な方法で運んでください。 可能なメディアにコピーして物理的に安全な方法で運んでください。
クラ クライアントの<filename class="directory">/etc</filename>
イアントの<filename>/etc</filename>ディレクトリで、 ディレクトリで、
名前を <filename>srvtab</filename>に変更し、 名前を <filename>srvtab</filename>に変更し、
modeを600にするのを忘れないでください。</para> modeを600にするのを忘れないでください。</para>
@ -2003,8 +2063,9 @@ Edit O.K.
ファイルを正しく編集してあれば、マシンを再 ファイルを正しく編集してあれば、マシンを再
起動することでに自動的にデーモンが起動します。 起動することでに自動的にデーモンが起動します。
これはKerberosサー バでのみ必要です。 これはKerberosサー バでのみ必要です。
Kerberosクライアントは<filename>/etc/kerberosIV</filename> Kerberosクライアントは
ら必要なものを自動的に入手します。</para> <filename class="directory">/etc/kerberosIV</filename>
から必要なものを自動的に入手します。</para>
<screen>&prompt.root; <userinput>kerberos &amp;</userinput> <screen>&prompt.root; <userinput>kerberos &amp;</userinput>
Kerberos server starting Kerberos server starting
@ -2494,7 +2555,7 @@ Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG</screen>
<para>必要がなくなった時には、チケットを破棄できます。</para> <para>必要がなくなった時には、チケットを破棄できます。</para>
<screen>&prompt.user; <userinput>k5destroy</userinput></screen> <screen>&prompt.user; <userinput>kdestroy</userinput></screen>
</sect2> </sect2>
<sect2> <sect2>
@ -2914,7 +2975,8 @@ jdoe@example.org</screen>
に書かれているガイドに従うことが推奨されます。 に書かれているガイドに従うことが推奨されます。
path の問題について注意してください。 path の問題について注意してください。
<acronym>MIT</acronym> port はデフォルトで <acronym>MIT</acronym> port はデフォルトで
<filename>/usr/local/</filename> にインストールします。 <filename class="directory">/usr/local/</filename>
にインストールします。
そのため、もし <envar>PATH</envar> そのため、もし <envar>PATH</envar>
環境変数においてシステムのディレクトが最初に書かれている場合には、 環境変数においてシステムのディレクトが最初に書かれている場合には、
<acronym>MIT</acronym> 版ではなく、 <acronym>MIT</acronym> 版ではなく、
@ -2944,7 +3006,7 @@ kadmind5_server_enable="YES"</programlisting>
<para>これを行うのは、 <para>これを行うのは、
<acronym>MIT</acronym> kerberos のアプリケーションは、 <acronym>MIT</acronym> kerberos のアプリケーションは、
<filename role="directory">/usr/local</filename> <filename class="directory">/usr/local</filename>
構造の下にインストールされるためです。</para> 構造の下にインストールされるためです。</para>
</sect2> </sect2>
@ -2980,7 +3042,8 @@ kadmind5_server_enable="YES"</programlisting>
<para>マルチユーザの環境では、 <para>マルチユーザの環境では、
<application>Kerberos</application> は安全ではありません。 <application>Kerberos</application> は安全ではありません。
チケットは <filename>/tmp</filename> ディレクトリに保管され、 チケットは <filename class="directory">/tmp</filename>
ディレクトリに保管され、
このチケットは、すべてのユーザが読むことができるためです。 このチケットは、すべてのユーザが読むことができるためです。
もし、ユーザがコンピュータを他のユーザと同時に共有 もし、ユーザがコンピュータを他のユーザと同時に共有
(i.e. マルチユーザで使用) していると、 (i.e. マルチユーザで使用) していると、
@ -3777,7 +3840,7 @@ n2006-01-30 01:36:04: INFO: ISAKMP-SA established 172.16.5.4[500]-192.168.1.12[5
<programlisting>ipfw add 00201 allow log esp from any to any <programlisting>ipfw add 00201 allow log esp from any to any
ipfw add 00202 allow log ah from any to any ipfw add 00202 allow log ah from any to any
ipfw add 00203 allow log ipencap from any to any ipfw add 00203 allow log ipencap from any to any
ipfw add 00204 allow log usp from any 500 to any</programlisting> ipfw add 00204 allow log udp from any 500 to any</programlisting>
<note> <note>
<para>ルール番号は、 <para>ルール番号は、
@ -3955,7 +4018,8 @@ COPYRIGHT 100% |*****************************| 4735
</indexterm> </indexterm>
<para>システム全体の設定ファイルは、<application>OpenSSH</application> <para>システム全体の設定ファイルは、<application>OpenSSH</application>
デーモン、クライアントの両方とも <filename>/etc/ssh</filename> デーモン、クライアントの両方とも
<filename class="directory">/etc/ssh</filename>
ディレクトリにあります。</para> ディレクトリにあります。</para>
<para><filename>ssh_config</filename> はクライアントの動作設定、 <para><filename>ssh_config</filename> はクライアントの動作設定、
@ -4378,10 +4442,13 @@ drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3 drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3
drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html</programlisting> drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html</programlisting>
<para>ここでは、ディレクトリ <filename>directory1</filename>, <para>ここでは、ディレクトリ <filename
<filename>directory2</filename> および <filename>directory3</filename> class="directory">directory1</filename>, <filename
class="directory">directory2</filename> および <filename
class="directory">directory3</filename>
のすべてで <acronym>ACL</acronym> が働いています。 のすべてで <acronym>ACL</acronym> が働いています。
ディレクトリ <filename>public_html</filename> は対象外です。</para> ディレクトリ <filename
class="directory">public_html</filename> は対象外です。</para>
<sect2> <sect2>
<title><acronym>ACL</acronym> を利用する</title> <title><acronym>ACL</acronym> を利用する</title>
@ -4660,7 +4727,8 @@ VII. References<co xml:id="co-ref"/></programlisting>
カーネルでは、影響するファイルに対して カーネルでは、影響するファイルに対して
<command>ident</command> を実行すると、 <command>ident</command> を実行すると、
その出力からリビジョンを簡単に確認できます。 その出力からリビジョンを簡単に確認できます。
ports の場合には、<filename>/var/db/pkg</filename> ports の場合には、
<filename class="directory">/var/db/pkg</filename>
の port の名前の後に、バージョン番号が示されています。 の port の名前の後に、バージョン番号が示されています。
もし、システムが &os; <acronym>CVS</acronym> もし、システムが &os; <acronym>CVS</acronym>
リポジトリと同期し、再構築が毎日行われているような状況でなければ、 リポジトリと同期し、再構築が毎日行われているような状況でなければ、