- Merge the following from the English version:

r35396 -> r36653	head/ja_JP.eucJP/books/handbook/security/chapter.xml
This commit is contained in:
Ryusuke SUZUKI 2017-11-03 01:34:09 +00:00
parent 5b37089739
commit 223717370b
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=51169

View file

@ -3,7 +3,7 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: r35396
Original revision: r36653
$FreeBSD$
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="security">
@ -58,11 +58,6 @@
<acronym>TCP</acronym> Wrappers を設定する方法</para>
</listitem>
<listitem>
<para>&os; 5.0 より前のリリースにおける、
<application>KerberosIV</application> の設定方法</para>
</listitem>
<listitem>
<para>&os; における
<application>Kerberos5</application> の設定方法</para>
@ -450,7 +445,6 @@
ステーションやサーバへの物理的アクセス手段を持たない人々によっ
て行われるという事実もまた、念頭に置いておく必要があります。
</para>
<indexterm><primary>KerberosIV</primary></indexterm>
<para>Kerberos のような方法を使うことで、
スタッフアカウントのパ
@ -1052,7 +1046,6 @@
<sect2>
<title>Kerberos および SSH を用いたアクセスの問題</title>
<indexterm><primary><command>ssh</command></primary></indexterm>
<indexterm><primary>KerberosIV</primary></indexterm>
<para>もしあなたが、Kerberos と ssh を使いたいのだとしたら、
両者に関して言っておかねばならない問題がいくつかあります。
@ -1736,533 +1729,6 @@ sendmail : PARANOID : deny</programlisting>
</sect2>
</sect1>
<sect1 xml:id="kerberosIV">
<info><title><application>KerberosIV</application></title>
<authorgroup>
<author><personname><firstname>Mark</firstname><surname>Murray</surname></personname><contrib>寄稿: </contrib></author>
</authorgroup>
<authorgroup>
<author><personname><firstname>Mark</firstname><surname>Dapoz</surname></personname><contrib>基にした文書の執筆: </contrib></author>
</authorgroup>
</info>
<indexterm><primary>Kerberos</primary></indexterm>
<para><emphasis>訳: &a.jp.arimura;.</emphasis></para>
<para>Kerberosは、
サーバのサービスによってユーザが安全に認証を受けられる
ようにするための、ネットワークの付加システム及びプロトコルです。
リモートログイン、リモートコピー、
システム間での安全なファイルのコピ
ーやその他のリスクの高い仕事がかなり安全に、
そしてこれまでより制御 できるようになります。</para>
<para>以下の文章は、
&os; 用として配布されている Kerberos をセットアップ
する際のガイドとして読むことができます。しかし、
完全な説明が必要な場合には、マニュアルページを読んだ方がよい
でしょう。</para>
<sect2>
<title><application>KerberosIV</application> のインストール</title>
<indexterm><primary>MIT</primary></indexterm>
<indexterm>
<primary>KerberosIV</primary>
<secondary>インストール</secondary>
</indexterm>
<para>Kerberos は選択が任意な &os; のコンポーネントです。
もっとも簡単なインストール方法は、&os;
のインストール時に <application>sysinstall</application>
<literal>krb4</literal> または <literal>krb5</literal>
配布物を選択することです。
そうすると、Kerberos の <quote>eBones</quote> (KerberosIV) または
<quote>Heimdal</quote> (Kerberos5) 実装がインストールされます。
これらの実装が入っているのは、
これがアメリカ合衆国およびカナダの外で開発されたものであるため、
アメリカ合衆国からの暗号ソフトウェアの輸出が制限されていた時代でも
アメリカ合衆国およびカナダ以外の国に住んでいるシステム所有者の手に入るものだったからです。</para>
<para>ほかに、MIT で実装された Kerberos が Ports Collection
<package>security/krb5</package>
から利用できます。</para>
</sect2>
<sect2>
<title>初期データベースの作成</title>
<para>この作業はKerberosサーバだけでおこないます。まず、
古いKerberosの データベースが存在しないことを確認してください。
ディレクトリ<filename class="directory">/etc/kerberosIV</filename>
に移って、
次のファイルだけが 存在することをチェックします。</para>
<screen>&prompt.root; <userinput>cd /etc/kerberosIV</userinput>
&prompt.root; <userinput>ls</userinput>
README krb.conf krb.realms</screen>
<para>もし他のファイル (<filename>principal.*</filename>
<filename>master_key</filename>) が 存在する場合には、
<command>kdb_destroy</command>というコマンドで古い
Kerberosデータベースを消してください。
Kerberosが走っていなければ、
単に余計なファイルを消せばよいです。</para>
<para>まず、<filename>krb.conf</filename>
<filename>krb.realms</filename>を編集してKerberosの 管理領域
(realm) を定義してください。
ここでは管理領域が <literal>EXAMPLE.COM</literal>
で、サーバ名が <systemitem class="fqdomainname">grunt.example.com</systemitem>
であるとします。
<filename>krb.conf</filename>
というファイルを次のように編集してください。</para>
<screen>&prompt.root; <userinput>cat krb.conf</userinput>
EXAMPLE.COM
EXAMPLE.COM grunt.example.com admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.gov</screen>
<para>この例にあるような他の管理領域は、実際には必要ありません。
この例は複数の管理領域を認識する方法を示したものですので、
これらの行は含めなくても結構です。</para>
<para>1行目はこのシステムが動いている管理領域の名前です。
他の行は管理領域とホスト名のエントリです。
行の1つめの単語が管理領域で、2つめがその管理領域の中で
<quote>鍵配布センター</quote>(Key Distribution Center)
として働くホスト名です。ホスト名の次に <literal>admin
server</literal> と書いてある場合には、そのホストが
管理データベースサーバ (Administrative Database Server)
も提供することを意味します。
これらの単語について詳しく知りたい場合には Kerberos
のマニュアルページをご覧ください。</para>
<para>ここで、<literal>EXAMPLE.COM</literal> という管理領域に
<systemitem class="fqdomainname">grunt.example.com</systemitem>
およびその他の <systemitem class="fqdomainname">.example.com</systemitem>
ドメインのすべてのホストを追加しなければなりません。
<filename>krb.realms</filename> は次のようになります。</para>
<screen>&prompt.root; <userinput>cat krb.realms</userinput>
grunt.example.com EXAMPLE.COM
.example.com EXAMPLE.COM
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDU</screen>
<para>もう一度注意しますが、他の管理領域を書く必要はありません。
これらは複数の管理領域を認識できるようにマシンを設定する方法を
示した例ですので、これらの行は消して構いません。</para>
<para>1行目は名前をつけた管理領域に <emphasis>特定の</emphasis>
システムを含めるための ものです。
残りの行は名前をつけた管理領域にサブドメインのデフォルトの
システムを含めるためのものです。</para>
<para>これでデータベースを作成する準備ができました。
この操作はKerberos サーバ (鍵配布センター) を起動するだけです。
<command>kdb_init</command>
マンドを次のように実行してください。</para>
<screen>&prompt.root; <userinput>kdb_init</userinput>
<prompt>Realm name [default ATHENA.MIT.EDU ]:</prompt> <userinput>EXAMPLE.COM</userinput>
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
<prompt>Enter Kerberos master key:</prompt> </screen>
<para>ここで鍵を保存して、
ローカルのマシンにあるサーバが取り出せるように します。
それには<command>kstash</command>コマンドを使用します。</para>
<screen>&prompt.root; <userinput>kstash</userinput>
<prompt>Enter Kerberos master key: </prompt>
Current Kerberos master key version is 1.
Master key entered. BEWARE!</screen>
<para>これで暗号化されたマスタパスワードが
<filename>/etc/kerberosIV/master_key</filename>
に保存されました。</para>
</sect2>
<sect2>
<title>すべてが動くようにするための設定</title>
<indexterm>
<primary>KerberosIV</primary>
<secondary>初期設定</secondary>
</indexterm>
<para>Kerberosを導入する <emphasis>それぞれの</emphasis>
システムのデータベースに、2つ のprincipal (主体名)
を追加する必要があります。その名前は
<literal>kpasswd</literal><literal>rcmd</literal>です。
これら2つのprincipalは、個々 のシステムにおいて、
システム名と同じ名前のインスタンスと組にして作成
されます。</para>
<para>これらの <application>>kpasswd</application>
<application>rcmd</application> というデーモンによって、他の
システムからKerberosのパスワードを変更したり、
&man.rcp.1;&man.rlogin.1;,
&man.rsh.1; といったコマンドを実行したりできるようになります。</para>
<para>それでは実際にこれらのエントリを追加しましょう。</para>
<screen>&prompt.root; <userinput>kdb_edit</userinput>
Opening database...
<prompt>Enter Kerberos master key: </prompt>
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
<prompt>Principal name:</prompt> <userinput>passwd</userinput>
<prompt>Instance:</prompt> <userinput>grunt</userinput>
&lt;Not found&gt;, <prompt>Create [y] ?</prompt> <userinput>y</userinput>
Principal: passwd, Instance: grunt, kdc_key_ver: 1
<prompt>New Password:</prompt> &lt;---- ここは「RANDOM」と入力してください
Verifying password
<prompt>New Password:</prompt> &lt;---- ここは「RANDOM」と入力してください
<prompt>Random password [y] ?</prompt> <userinput>y</userinput>
Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? </prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ? </prompt>
<prompt>Attributes [ 0 ] ? </prompt>
Edit O.K.
<prompt>Principal name:</prompt> <userinput>rcmd</userinput>
<prompt>Instance:</prompt> <userinput>grunt</userinput>
&lt;Not found&gt;, <prompt>Create [y] ?</prompt>
Principal: rcmd, Instance: grunt, kdc_key_ver: 1
<prompt>New Password:</prompt> &lt;---- ここは「RANDOM」と入力してください
Verifying password
<prompt>New Password:</prompt> &lt;---- ここは「RANDOM」と入力してください
<prompt>Random password [y] ? </prompt>
Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? </prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ? </prompt>
<prompt>Attributes [ 0 ] ? </prompt>
Edit O.K.
<prompt>Principal name:</prompt> &lt;---- 何も入力しないと終了します</screen>
</sect2>
<sect2>
<title>サーバファイルの作成</title>
<para>次に、各マシンにおけるサービスを定義している、
すべてのインスタンスを展開します。
これには <command>ext_srvtab</command> というコマンドを使用します。
このコマンドで作成されるファイルは、Kerberos
の各クライアントの <filename class="directory">/etc</filename>
ディレクトリに<emphasis>安全な方法で</emphasis>
コピーまたは移動する必要があります。
このファイルはそれぞれのサーバとクライアントに存在しなければならず、
また Kerberos の運用において重要なものです。</para>
<screen>&prompt.root; <userinput>ext_srvtab grunt</userinput>
<prompt>Enter Kerberos master key: </prompt>
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....</screen>
<para>このコマンドは一時的なファイルを作成するだけです。
ファイル名をすべ てのサーバが読めるような
<filename>srvtab</filename> という名前に変更しな
ければなりません。
&man.mv.1; コマンドを用いてシステムの場所に移動してください。</para>
<screen>&prompt.root; mv grunt-new-srvtab srvtab</screen>
<para>そのファイルがクライアントに配るためのもので、
ネットワークが安全で はないと思われる場合には、<filename>
client-new-srvtab</filename>
を移動
可能なメディアにコピーして物理的に安全な方法で運んでください。
クライアントの<filename class="directory">/etc</filename>
ディレクトリで、
名前を <filename>srvtab</filename>に変更し、
modeを600にするのを忘れないでください。</para>
<screen>&prompt.root; <userinput>mv grumble-new-srvtab srvtab</userinput>
&prompt.root; <userinput>chmod 600 srvtab</userinput></screen>
</sect2>
<sect2>
<title>データベースへのユーザの追加</title>
<para>ここで、
ユーザのエントリをデータベースに追加する必要があります。
始めに、
ユーザ<systemitem class="username">jane</systemitem>のエントリを作成してみましょう。
<command>kdb_edit</command>
を用いて次のように作成してください。</para>
<screen>&prompt.root; <userinput>kdb_edit</userinput>
Opening database...
<prompt>Enter Kerberos master key: </prompt>
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
<prompt>Principal name:</prompt> <userinput>jane</userinput>
<prompt>Instance:</prompt>
&lt;Not found&gt;, <prompt>Create [y] ?</prompt> <userinput>y</userinput>
Principal: jane, Instance: , kdc_key_ver: 1
<prompt>New Password:</prompt> &lt;---- 安全なパスワードを入れてください
Verifying password
<prompt>New Password:</prompt> &lt;---- もう一度パスワードを入れてください
Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? </prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ? </prompt>
<prompt>Attributes [ 0 ] ? </prompt>
Edit O.K.
<prompt>Principal name:</prompt> &lt;---- 何も入力しないと終了します</screen>
</sect2>
<sect2>
<title>すべてのテスト</title>
<para>まず始めにKerberosデーモンを起動する必要があります。
<filename>/etc/rc.conf</filename>
ファイルを正しく編集してあれば、マシンを再
起動することでに自動的にデーモンが起動します。
これはKerberosサー バでのみ必要です。
Kerberosクライアントは
<filename class="directory">/etc/kerberosIV</filename>
から必要なものを自動的に入手します。</para>
<screen>&prompt.root; <userinput>kerberos &amp;</userinput>
Kerberos server starting
Sleep forever on error
Log file is /var/log/kerberos.log
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Current Kerberos master key version is 1
Local realm: EXAMPLE.COM
&prompt.root; <userinput>kadmind -n &amp;</userinput>
KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead
Current Kerberos master key version is 1.
Master key entered. BEWARE!</screen>
<para>さあ、これで上で作成した <systemitem class="username">jane</systemitem>
という ID のチケットを
<command>kinit</command>コマンドで得ることができます。</para>
<screen>&prompt.user; <userinput>kinit jane</userinput>
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane"
<prompt>Password:</prompt> </screen>
<para><command>klist</command> コマンドを用いてトークンを見て、
きちんとチケットを持って いるかどうか確認してください。</para>
<screen>&prompt.user; <userinput>klist</userinput>
Ticket file: /tmp/tkt245
Principal: jane@EXAMPLE.COM
Issued Expires Principal
Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.EXAMPLE.COM@EXAMPLE.COM</screen>
<para>&man.passwd.1; コマンドを用いてパスワードを変更して、
<application>kpasswd</application> デーモンが Kerberos
データベースに対して認証されるかどうかチェックして
ください。</para>
<screen>&prompt.user; <userinput>passwd</userinput>
realm EXAMPLE.COM
<prompt>Old password for jane:</prompt>
<prompt>New Password for jane:</prompt>
Verifying password
<prompt>New Password for jane:</prompt>
Password changed.</screen>
</sect2>
<sect2>
<title><command>su</command> 特権の追加</title>
<para>Kerberos は <systemitem class="username">root</systemitem> 権限が必要な
<emphasis></emphasis> ユーザに対し、
&man.su.1; のパスワードをユーザ毎に
<emphasis>別のもの</emphasis> として持つことを可能にします。
<systemitem class="username">root</systemitem>&man.su.1;
できる権利を与えられた ID を追加します。これは、
principal に付いている <systemitem class="username">root</systemitem>
というインスタンスに よって制御されています。
<command>kdb_edit</command>を用いて
<literal>jane.root</literal>というエントリを
Kerberos データベースに作成します。</para>
<screen>&prompt.root; <userinput>kdb_edit</userinput>
Opening database...
<prompt>Enter Kerberos master key: </prompt>
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
<prompt>Principal name:</prompt> <userinput>jane</userinput>
<prompt>Instance:</prompt> <userinput>root</userinput>
&lt;Not found&gt;, Create [y] ? y
Principal: jane, Instance: root, kdc_key_ver: 1
<prompt>New Password:</prompt> &lt;---- 安全なパスワードを入れます
Verifying password
<prompt>New Password:</prompt> &lt;---- もう一回パスワードを入れます
Principal's new key version = 1
<prompt>Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ? </prompt>
<prompt>Max ticket lifetime (*5 minutes) [ 255 ] ?</prompt> <userinput>12</userinput> &lt;--- ここは短くしてください
<prompt>Attributes [ 0 ] ? </prompt>
Edit O.K.
<prompt>Principal name:</prompt> &lt;---- 何も入力しないと終了します</screen>
<para>実際にトークンをもらって、
ちゃんと働いているかどうか確認しましょう。</para>
<screen>&prompt.root; <userinput>kinit jane.root</userinput>
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane.root"
<prompt>Password: </prompt></screen>
<para>ここで <systemitem class="username">root</systemitem> ユーザの
<filename>.klogin</filename>
ファイルにユーザを追加する必要があります。</para>
<screen>&prompt.root; <userinput>cat /root/.klogin</userinput>
jane.root@EXAMPLE.COM</screen>
<para>&man.su.1; してみましょう。</para>
<screen>&prompt.user; <userinput>su</userinput>
<prompt>Password: </prompt></screen>
<para>どのトークンを持っているか見てみましょう。</para>
<screen>&prompt.root; <userinput>klist</userinput>
Ticket file: /tmp/tkt_root_245
Principal: jane.root@EXAMPLE.COM
Issued Expires Principal
May 2 20:43:12 May 3 04:43:12 krbtgt.EXAMPLE.COM@EXAMPLE.COM</screen>
</sect2>
<sect2>
<title>他のコマンドの使用</title>
<para>ここまでの例では、<literal>jane</literal> という principal
<literal>root</literal> とい
うインスタンス付きで作成しました。
これはユーザと同じ名前をprincipalと しており、
Kerberosのデフォルトの値です;
<literal>&lt;username&gt;.</literal><systemitem class="username">root</systemitem>
という形式の
<literal>&lt;principal&gt;.&lt;instance&gt;</literal>で、
必要なエントリが <systemitem class="username">root</systemitem> のホームディレクトリの
<filename>.klogin</filename> ファイルにあれば、
<literal>&lt;username&gt;</literal>
<systemitem class="username">root</systemitem>
&man.su.1; できます。</para>
<screen>&prompt.root; <userinput>cat /root/.klogin</userinput>
jane.root@EXAMPLE.COM</screen>
<para>同様に、ユーザのホームディレクトリの
<filename>.klogin</filename>ファイルに次の
ような行がある場合には</para>
<screen>&prompt.user; <userinput>cat ~/.klogin</userinput>
jane@EXAMPLE.COM
jack@EXAMPLE.COM</screen>
<para><systemitem class="username">jane</systemitem> または <systemitem class="username">jack</systemitem>
という名前で (前述の<command>kinit</command> によって)
認証されている <literal>EXAMPLE.COM</literal>
という管理領域のユーザ なら誰でも &man.rlogin.1;
&man.rsh.1;, &man.rcp.1; 等によってこのシステム
(<systemitem>grunt</systemitem>)
<systemitem class="username">jane</systemitem>のアカウントまたはファ
イルにアクセスできます。</para>
<para>たとえば、<systemitem class="username">jane</systemitem> が他のシステムに
Kerberos を用いて login します。</para>
<screen>&prompt.user; <userinput>kinit</userinput>
MIT Project Athena (grunt.example.com)
<prompt>Password: </prompt>
&prompt.user; <userinput>rlogin grunt</userinput>
Last login: Mon May 1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995</screen>
<para>次の例では、<systemitem class="username">jack</systemitem>
が同じマシンの <systemitem class="username">jane</systemitem>
のアカウントに login します
(<systemitem class="username">jane</systemitem>
<filename>.klogin</filename> ファイルを前述のように設定しており、
Kerberos では <emphasis>jack</emphasis> という principal
をインスタンスなしで設定してあります)。</para>
<screen>&prompt.user; <userinput>kinit</userinput>
&prompt.user; <userinput>rlogin grunt -l jane</userinput>
MIT Project Athena (grunt.example.com)
<prompt>Password: </prompt>
Last login: Mon May 1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995</screen>
</sect2>
</sect1>
<sect1 xml:id="kerberos5">
<info><title><application>Kerberos5</application></title>
<authorgroup>
@ -2285,18 +1751,6 @@ FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995</screen>
</authorgroup>
</info>
<para>&os;-5.1 リリース以降のすべての &os; には、
<application>Kerberos5</application> のみが含まれています。
<application>Kerberos5</application>
はインストールされている唯一のバージョンであり、設定は、多くの側面で
<application>KerberosIV</application> と似ています。
以下の情報は、&os;-5.0 リリース以降の
<application>Kerberos5</application> のみに適応が可能です。
<application>KerberosIV</application> package
を使いたいと考えているユーザは、
<filename role="package">security/krb4</filename> port
をインストールしてください。</para>
<para><application>Kerberos</application> は、
サーバのサービスによってユーザが安全に認証を受けられるようにするための、
ネットワークの付加システムおよびプロトコルです。
@ -3183,7 +2637,7 @@ kadmind5_server_enable="YES"</programlisting>
メールクライアントの暗号化された認証、
クレジットカードでの支払いといったウェブベースの取引などで使われます。
<filename role="package">www/apache13-ssl</filename> および
<filename role="package">mail/sylpheed-claws</filename>
<filename role="package">mail/claws-mail</filename>
といった多くの port では、
<application>OpenSSL</application>
とともに構築するコンパイルに対応しています。</para>
@ -4354,7 +3808,7 @@ user@unfirewalled-system.example.org's password: <userinput>*******</userinput><
</indexterm>
<para>スナップショットのようなファイルシステムの拡張と連携して、
FreeBSD 5.0 以降ではファイルシステムアクセス制御リスト
FreeBSD ではファイルシステムアクセス制御リスト
(<acronym>ACL</acronym>) によるセキュリティを提供しています。</para>
<para>アクセス制御リストは、標準的な &unix; のパーミッションモデルを、