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