Date: Sun, 8 Jan 2017 14:00:26 +0000 (UTC) From: Ryusuke SUZUKI <ryusuke@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r49804 - head/ja_JP.eucJP/books/handbook/security Message-ID: <201701081400.v08E0Qbn004077@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: ryusuke Date: Sun Jan 8 14:00:26 2017 New Revision: 49804 URL: https://svnweb.freebsd.org/changeset/doc/49804 Log: - Merge the following from the English version: r18074 -> r18103 head/ja_JP.eucJP/books/handbook/security/chapter.xml Modified: head/ja_JP.eucJP/books/handbook/security/chapter.xml Modified: head/ja_JP.eucJP/books/handbook/security/chapter.xml ============================================================================== --- head/ja_JP.eucJP/books/handbook/security/chapter.xml Sun Jan 8 13:02:26 2017 (r49803) +++ head/ja_JP.eucJP/books/handbook/security/chapter.xml Sun Jan 8 14:00:26 2017 (r49804) @@ -3,7 +3,7 @@ The FreeBSD Documentation Project The FreeBSD Japanese Documentation Project - Original revision: r18074 + Original revision: r18103 $FreeBSD$ --> <chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="security"> @@ -24,7 +24,7 @@ <para>この章では、基本的なシステムセキュリティの考え方、 覚えておくべき一般的なルールを紹介し、 - FreeBSD における高度な話題について簡単に説明します + &os; における高度な話題について簡単に説明します ここで扱う話題の多くは、 一般的なシステムやインターネットセキュリティにもあてはまります。 インターネットはもはや、誰もが親切な隣人であろうとする @@ -40,13 +40,13 @@ <itemizedlist> <listitem> - <para>FreeBSD + <para>&os; に関する基本的なシステムセキュリティの考え方</para> </listitem> <listitem> - <para>DES や MD5 のような、FreeBSD - で利用できるさまざまな暗号化手法について</para> + <para><acronym>DES</acronym> や <acronym>MD5</acronym> のような、 + &os; で利用できるさまざまな暗号化手法について</para> </listitem> <listitem> @@ -54,26 +54,32 @@ </listitem> <listitem> - <para>もう一つの代替認証システム Kerberos の設定方法</para> + <para>&os; 5.0 より前のリリースにおける、 + <application>KerberosIV</application> の設定方法</para> </listitem> <listitem> - <para>IPFW で firewall を構築する方法</para> + <para>&os; 5.0 以降のリリースにおける、 + <application>Kerberos5</application> の設定方法</para> </listitem> <listitem> - <para>IPsec および FreeBSD/&windows; コンピュータの間で VPN - の設定方法</para> + <para><acronym>IPFW</acronym> でファイアウォールを構築する方法</para> </listitem> <listitem> - <para>FreeBSD で使われている SSH 実装である + <para>IPsec および FreeBSD/&windows; コンピュータの間で + <acronym>VPN</acronym> の設定方法</para> + </listitem> + + <listitem> + <para>&os; で使われている <acronym>SSH</acronym> である <application>OpenSSH</application> の設定および使用方法</para> </listitem> <!-- <listitem> <para>How to configure and load access control extension - modules using the TrustedBSD MAC Framework.</para> + modules using the TrustedBSD <acronym>MAC</acronym> Framework.</para> </listitem> --> @@ -87,7 +93,7 @@ <itemizedlist> <listitem> - <para>FreeBSD およびインターネットの基本概念の理解</para> + <para>&os; およびインターネットの基本概念の理解</para> </listitem> </itemizedlist> @@ -461,7 +467,7 @@ ステーションやサーバへの物理的アクセス手段を持たない人々によっ て行われるという事実もまた、念頭に置いておく必要があります。 </para> - <indexterm><primary>Kerberos</primary></indexterm> + <indexterm><primary>KerberosIV</primary></indexterm> <para>Kerberos のような方法を使うことで、 スタッフアカウントのパ @@ -1001,7 +1007,7 @@ <sect2> <title>Kerberos および SSH を用いたアクセスの問題</title> <indexterm><primary><command>ssh</command></primary></indexterm> - <indexterm><primary>Kerberos</primary></indexterm> + <indexterm><primary>KerberosIV</primary></indexterm> <para>もしあなたが、Kerberos と ssh を使いたいのだとしたら、 両者に関して言っておかねばならない問題がいくつかあります。 @@ -1603,8 +1609,8 @@ permit port ttyd0</programlisting> </sect2> </sect1> - <sect1 xml:id="kerberos"> - <info><title>Kerberos</title> + <sect1 xml:id="kerberosIV"> + <info><title>KerberosIV</title> <authorgroup> <author><personname><firstname>Mark</firstname><surname>Murray</surname></personname><contrib>寄稿: </contrib></author> </authorgroup> @@ -1633,14 +1639,14 @@ permit port ttyd0</programlisting> でしょう。</para> <sect2> - <title>Kerberos のインストール</title> + <title>KerberosIV のインストール</title> <indexterm><primary>MIT</primary></indexterm> <indexterm> - <primary>Kerberos</primary> + <primary>KerberosIV</primary> <secondary>インストール</secondary> </indexterm> - <para>Kerberos は選択が任意な FreeBSD のコンポーネントです。 + <para>Kerberos は選択が任意な &os; のコンポーネントです。 もっとも簡単なインストール方法は、FreeBSD のインストール時に <application>sysinstall</application> で <literal>krb4</literal> または <literal>krb5</literal> @@ -1766,6 +1772,11 @@ Master key entered. BEWARE!</screen> <sect2> <title>すべてが動くようにするための設定</title> + <indexterm> + <primary>KerberosIV</primary> + <secondary>初期設定</secondary> + </indexterm> + <para>Kerberosを導入する <emphasis>それぞれの</emphasis> システムのデータベースに、2つ のprincipal (主体名) を追加する必要があります。その名前は @@ -1992,7 +2003,7 @@ Password changed.</screen> というインスタンスに よって制御されています。 <command>kdb_edit</command>を用いて <literal>jane.root</literal>というエントリを - Kerberosデータベースに作成します。</para> + Kerberos データベースに作成します。</para> <screen>&prompt.root; <userinput>kdb_edit</userinput> Opening database... @@ -2123,6 +2134,896 @@ FreeBSD BUILT-19950429 (GR386) #0: Sat A </sect2> </sect1> + <sect1 xml:id="kerberos5"> + <info><title><application>Kerberos5</application></title> + <authorgroup> + <author> + <personname> + <firstname>Tillman</firstname> + <surname>Hodgson</surname> + </personname> + <contrib>寄稿: </contrib> + </author> + </authorgroup> + <authorgroup> + <author> + <personname> + <firstname>Mark</firstname> + <surname>Murray</surname> + </personname> + <contrib>基にした文書の執筆: </contrib> + </author> + </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> は、 + サーバのサービスによってユーザが安全に認証を受けられるようにするための、 + ネットワークの付加システムおよびプロトコルです。 + リモートログイン、リモートコピー、 + システム間でのファイルのコピーおよび他のリスクの高いタスクをかなり安全に、 + そしてこれまでより制御できるようになります。</para> + + <para><application>Kerberos</application> は、 + 身元確認プロキシシステムや、 + 信頼される第 3 者認証システムとも説明されます。 + <application>Kerberos</application> は、一つの機能 — + ネットワーク上のユーザの安全な認証 — + だけを提供します。 + 承認 (どのユーザが許可されているか) + や監査 (ユーザがどのような作業を行っているか) + の機能は提供しません。 + <application>Kerberos</application> を使って、 + クライアントおよびサーバの身元を証明した後は、 + 日常業務におけるすべての通信を暗号化して、 + プライバシおよびデータの完全性を保証することができます。</para> + + <para>そのため、<application>Kerberos</application> を使う際は、 + 承認および監査サービスを提供する他のセキュリティの手段との利用が、 + 強く推奨されます。</para> + + <para>以下の文章は、&os; 用として配布されている + <application>Kerberos</application> + をセットアップする際のガイドとして利用できますが、 + 完全な説明が必要な場合には、 + マニュアルページを参照してください。</para> + + <para>この節における <application>Kerberos</application> + のインストールのデモでは、以下のような名前空間が使われます。</para> + + <itemizedlist> + <listitem> + <para><acronym>DNS</acronym> ドメイン (<quote>ゾーン</quote>) は、 + EXAMPLE.ORG です。</para> + </listitem> + + <listitem> + <para><application>Kerberos</application> の領域は、 + EXAMPLE.ORG です。</para> + </listitem> + </itemizedlist> + + <note> + <para><application>Kerberos</application> の設定では、 + 内部での使用でも実際のドメイン名を使ってください。 + <acronym>DNS</acronym> の問題を避けることができ、 + 他の <application>Kerberos</application> のレルム (realm) + との相互運用を保証します。</para> + </note> + + <sect2> + <title>歴史</title> + <indexterm> + <primary>Kerberos5</primary> + <secondary>歴史</secondary> + </indexterm> + + <para><application>Kerberos</application> は、 + ネットワークのセキュリティ問題を解決するために、 + <acronym>MIT</acronym> で開発されました。 + <application>Kerberos</application> プロトコルは、 + 必ずしも安全ではないインターネット接続においても、 + サーバに対して (逆もまた同様に)、 + 強い暗号を使って身元を証明します。</para> + + <para><application>Kerberos</application> は、 + ネットワーク認証プロトコルの名前であり、 + このプログラムを実装しているプログラムを表す + (例 <application>Kerberos</application> telnet) + ための形容詞でもあります。 + プロトコルの現在のバージョンはバージョン 5 で、 + <acronym>RFC</acronym> 1510 として文書化されています。</para> + + <para>このプロトコルのいくつものフリーの実装が、 + さまざまなオペレーティングシステムで利用できます。 + 最初の <application>Kerberos</application> + を開発したマサチューセッツ工科大学 (<acronym>MIT</acronym>) は、 + 開発した <application>Kerberos</application> + パッケージを継続的に保守しています。 + <acronym>アメリカ合衆国</acronym>では暗号製品として良く使われていますが、 + 歴史的には、 + <acronym>アメリカ合衆国</acronym> の輸出規制により制限されてきました。 + <acronym>MIT</acronym> で実装された + <application>Kerberos</application> は、port + (<filename role="package">security/krb5</filename>) + から利用できます。 + バージョン 5 のもう一つの実装が、 + Heimdal <application>Kerberos</application> + です。 + この実装は、<acronym>アメリカ合衆国</acronym>の外で開発されたため、 + 輸出の制限を避けることができます + (そのため、非商用の &unix;-like なシステムによく含まれています)。 + Heimdal <application>Kerberos</application> は port + (<filename role="package">security/heimdal</filename>) + からインストールできますが、最小構成は + &os; の base インストールに含まれています。</para> + + <para>幅広い読者を対象とするために、以下の説明では + &os; に含まれている Heimdal + ディストリビューションの使用を想定しています。</para> + </sect2> + + <sect2> + <title>Heimdal <acronym>KDC</acronym> の設定</title> + <indexterm> + <primary>Kerberos5</primary> + <secondary>鍵配布センターの設定</secondary> + </indexterm> + + <para>鍵配布センター (<acronym>KDC</acronym>) は、 + <application>Kerberos</application> + が提供する中心的な認証サービス + — <application>Kerberos</application> + チケットを発行するコンピュータです。 + <acronym>KDC</acronym> は、 + <application>Kerberos</application> + のレルムの中のすべてのコンピュータから + <quote>信頼</quote>されています。 + そのため、厳重なセキュリティに対する配慮が必要となります。</para> + + <para><application>Kerberos</application> + サーバの実行にコンピュータのリソースは必要ありませんが、 + セキュリティの観点から、<acronym>KDC</acronym> + としてのみ機能する専用のコンピュータが推奨されます。</para> + + <para><acronym>KDC</acronym> を設定するにあたって、 + <acronym>KDC</acronym> として動作するために、 + 適切に <filename>/etc/rc.conf</filename> が設定されていること + (システムを反映するようにパスを調整する必要があります) + を確認してください。</para> + + <programlisting>kerberos5_server_enable="YES" +kadmind5_server_enable="YES" +kerberos_stash="YES"</programlisting> + + <note> + <para><option>kerberos_stash</option> は、 + &os; 4.X でのみ利用可能です。</para> + </note> + + <para>次に、<application>Kerberos</application> + の設定ファイル <filename>/etc/krb5.conf</filename> + を編集します。</para> + + <programlisting>[libdefaults] + default_realm = EXAMPLE.ORG +[realms] + EXAMPLE.ORG = { + kdc = kerberos.EXAMPLE.ORG + } +[domain_realm] + .EXAMPLE.ORG = EXAMPLE.ORG</programlisting> + + <para><filename>/etc/krb5.conf</filename> ファイルの中では、 + <acronym>KDC</acronym> は、 + 完全修飾されたホスト名 + <systemitem class="fqdomainname">kerberos.EXAMPLE.ORG</systemitem> + を持つことが想定されていることに注意してください。 + <acronym>KDC</acronym> が異なるホスト名である場合には、 + 名前の解決が行われるように、適切に CNAME (エイリアス) + エントリをゾーンファイルに追加する必要があります。</para> + + <note> + <para>適切に <acronym>BIND</acronym> <acronym>DNS</acronym> + サーバが設定されたネットワークでは、 + 上記の例は、以下のように整理されます。</para> + + <programlisting>[libdefaults] + default_realm = example.org</programlisting> + + <para>そして、<systemitem + class="fqdomainname">kerberos.EXAMPLE.ORG</systemitem> + ゾーンファイルには、以下の行が付け加えられます。</para> + + <programlisting>_kerberos._udp IN SRV 01 00 88 kerberos.example.org. +_kerberos._tcp IN SRV 01 00 88 kerberos.example.org. +_kpasswd._udp IN SRV 01 00 464 kerberos.example.org. +_kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org. +_kerberos IN TXT EXAMPLE.ORG.</programlisting></note> + + <para>次に <application>Kerberos</application> データベースを作成します。 + このデータベースには、 + マスター鍵により暗号化されたすべてのプリンシパルの鍵があります。 + このパスワードは、ファイル + (<filename>/var/heimdal/m-key</filename>) に保存されるため、 + 覚える必要はありません。 + マスター鍵を作成するには、<command>kstash</command> を実行して、 + パスワードを入力してください。</para> + + <para>マスター鍵を作成したら、<command>kadmin</command> プログラムを + <literal>-l</literal> オプション (<quote>local</quote> を意味します) + で実行し、初期化します。 + このオプションを使うと、<command>kadmin</command> は、 + <command>kadmind</command> ネットワークサービスを使わず、 + 直接データベースファイルを変更します。 + これにより、 + データベースを作成する前に、データベースへの接続を試みてしまうという、 + 卵が先か鶏が先かという問題を回避できます。 + <command>kadmin</command> + プロンプトが表示されたら、<command>init</command> コマンドを使って、 + レルムに関する初期のデータベースを作成してください。</para> + + <para>最後に、<command>kadmin</command> プロンプトで + <command>add</command> + コマンドを使って最初のプリンシパルを作成して下さい。 + 差し当たりは、 + プリンシパルに対するデフォルトのオプションに従ってください。 + 後で <command>modify</command> コマンドを使うことで、 + いつでも変更することができます。 + プロンプトで <literal>?</literal> コマンドを使うと、 + 利用可能なオプションを確認できます。</para> + + <para>データベース作成のセッションの例は以下のようになります。</para> + + <screen>&prompt.root; <userinput>kstash</userinput> + Master key: <userinput>xxxxxxxx</userinput> + Verifying password - Master key: <userinput>xxxxxxxx</userinput> + + &prompt.root; <userinput>kadmin -l</userinput> + kadmin> <userinput>init EXAMPLE.ORG</userinput> + Realm max ticket life [unlimited]: + kadmin> <userinput>add tillman</userinput> + Max ticket life [unlimited]: + Max renewable life [unlimited]: + Attributes []: + Password: <userinput>xxxxxxxx</userinput> + Verifying password - Password: <userinput>xxxxxxxx</userinput></screen> + + <para>これで <acronym>KDC</acronym> + サービスを起動することができるようになりました。 + <command>/etc/rc.d/kerberos start</command> および + <command>/etc/rc.d/kadmind start</command> + を実行してサービスを起動してください。 + この時点で、kerberos 化されたデーモンが走っていなくても、 + <acronym>KDC</acronym> のコマンドラインから、作成したばかりの (ユーザ) + プリンシパルのチケットを入手したり、 + 一覧を表示することができることを確認してください。</para> + + <screen>&prompt.user;<userinput>k5init <replaceable>tillman</replaceable></userinput> + tillman@EXAMPLE.ORG's Password: + + &prompt.user;<userinput>k5list</userinput> + Credentials cache: FILE:<filename>/tmp/krb5cc_500</filename> + Principal: tillman@EXAMPLE.ORG + + Issued Expires Principal + Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG + Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG + + v4-ticket file: /tmp/tkt500 + k5list: No ticket file (tf_util)</screen> + + </sect2> + + <sect2> + <title>Heimdal <application>Kerberos</application> + サービスを有効にする。</title> + + <indexterm> + <primary>Kerberos5</primary> + <secondary>Enabling サービス</secondary> + </indexterm> + + <para>最初に <application>Kerberos</application> + の設定ファイル <filename>/etc/krb5.conf</filename> + のコピーが必要です。 + コピーを行うには、<acronym>KDC</acronym> から、 + クライアントコンピュータへ + (&man.scp.1; のようなネットワークユーティリティを使うか、 + 物理的にフロッピーディスクを使って) + 安全な方法でコピーをしてください。</para> + + <para>次に <filename>/etc/krb5.keytab</filename> + ファイルが必要となります。 + これは、<application>Kerberos</application> + 化されたデーモンを提供するサーバとワークステーションの間での大きな違いです + — サーバは、 + <filename>keytab</filename> ファイルを持っている必要があります。 + このファイルには、サーバのホスト鍵が含まれています。 + この鍵により、ホストおよび + <acronym>KDC</acronym> が他の身元の検証ができます。 + 鍵が公開されてしまうと、 + サーバのセキュリティが破れてしまうため、 + このファイルは安全にサーバに転送しなければなりません。 + このことは、<acronym>FTP</acronym> + のようにテキストチャネルでの転送は、 + まったく好ましくないことを意味しています。</para> + + <para>一般的には、<command>kadmin</command> プログラムを使って、 + <filename>keytab</filename> をサーバに転送します。 + <command>kadmin</command> を使って + (<acronym>KDC</acronym> 側の + <filename>krb5.keytab</filename> に) + ホストプリンシパルを作成することも必要なので便利です。</para> + + <para>すでにチケットを入手し、 + そのチケットは、 + <command>kadmin</command> インタフェースで使用できることが + <filename>kadmind.acl</filename> + で許可されている必要があります。 + アクセスコントロールリストの設計の詳細については、 + Heimdal info ページ (<command>info heimdal</command>) の + <quote>Remote administration</quote> + というタイトルの章をご覧ください。 + リモートからの + <command>kadmin</command> アクセスを有効にしたくない場合は、 + 安全に (ローカルコンソール、&man.ssh.1; もしくは + <application>Kerberos</application> &man.telnet.1; を用いて) + <acronym>KDC</acronym> に接続し、 + <command>kadmin -l</command> を使用して、 + ローカルで管理作業を行ってください。</para> + + <para><filename>/etc/krb5.conf</filename> + ファイルをインストールしたら、 + <application>Kerberos</application> サーバから、 + <command>kadmin</command> を使うことができます。 + <command>add --random-key</command> コマンドを使うと、 + サーバのホストプリンシパルを追加できます。 + そして、<command>ext</command> コマンドを用いて、 + サーバのホストプリンシパルを keytab に抽出してください。</para> + + <screen>&prompt.root; <userinput>kadmin</userinput> + kadmin><userinput> add --random-key host/myserver.EXAMPLE.ORG</userinput> + Max ticket life [unlimited]: + Max renewable life [unlimited]: + Attributes []: + kadmin><userinput> ext host/myserver.EXAMPLE.ORG</userinput> + kadmin><userinput> exit</userinput></screen> + + <para><command>ext</command> コマンド (<quote>extract</quote> + の省略形) は、デフォルトでは、抽出された鍵を + <filename>/etc/krb5.keytab</filename> に保存します。</para> + + <para><acronym>KDC</acronym> 上で <command>kadmind</command> + を (おそらくセキュリティ上の理由から) 走らせていない場合で、 + リモートから <command>kadmin</command> に接続出来ない場合には、 + ホストプリンシパル (<systemitem + class="username">host/myserver.EXAMPLE.ORG</systemitem>) + を直接 <acronym>KDC</acronym> 上で追加し、 + その後、以下のように + (<acronym>KDC</acronym> 上の + <filename>/etc/krb5.keytab</filename> の上書きを避けるため)、 + 一時ファイルに抽出してください。</para> + + <screen>&prompt.root; <userinput>kadmin</userinput> + kadmin><userinput> ext --keytab=/tmp/example.keytab host/myserver.example.org</userinput> + kadmin><userinput> exit</userinput></screen> + + <para>その後、keytab を安全に (たとえば + <command>scp</command> またはフロッピーを使って) + サーバコンピュータにコピーしてください。 + <acronym>KDC</acronym> 上の keytab を上書きすることを避けるため、 + デフォルトとは異なる名前を指定してください。</para> + + <para>これでサーバは、 + (<filename>krb5.conf</filename> ファイルにより) + <acronym>KDC</acronym> と通信ができるようになりました。 + そして、(<filename>krb5.keytab</filename> ファイルによって) + 身元を証明できるようになったので、 + <application>Kerberos</application> + サービスを有効にする準備が出来ました。 + この例では、以下の行を + <filename>/etc/inetd.conf</filename> に加え、 + <command>telnet</command> + サービスを有効にしてください。その後、 + <command>/etc/rc.d/inetd restart</command> にて + &man.inetd.8; サービスを再起動します。</para> + + <programlisting>telnet stream tcp nowait root /usr/libexec/telnetd telnetd -a user</programlisting> + + <para>重要な箇所は、ユーザに <command>-a</command> + (認証を表す) が設定されていることです。 + 詳細については、 + &man.telnetd.8; マニュアルページを参照してください。</para> + </sect2> + + <sect2> + <title>Heimdal <application>Kerberos</application> + クライアントを有効にする</title> + + <indexterm> + <primary>Kerberos5</primary> + <secondary>クライアントの設定</secondary> + </indexterm> + + <para>クライアントコンピュータの設定は、 + ほとんど取るに足らないくらいに簡単です。 + <application>Kerberos</application> の設定がうまくいっていれば、 + <filename>/etc/krb5.conf</filename> に置かれている + <application>Kerberos</application> + の設定ファイルのみが必要です。 + セキュリティ的に安全な方法で、<acronym>KDC</acronym> + からクライアントコンピュータへ単にコピーしてください。</para> + + <para>クライアントから、<command>kinit</command>, + <command>klist</command> および + <command>kdestroy</command> を使用し、 + 上記で作成したプリンシパルに対するチケットの入手、表示、 + 削除を行い、クライアントコンピュータを試験してください。 + <application>Kerberos</application> + アプリケーションを使って <application>Kerberos</application> + が有効なサーバに接続することもできるはずです。 + もしうまく機能しない場合でも、チケットを入手できるのであれば、 + 問題はおそらくサーバにあり、 + クライアントまたは <acronym>KDC</acronym> + の問題ではないと考えられます。</para> + + <para><command>telnet</command> + のようなアプリケーションを試験する際には、 + (&man.tcpdump.1; といった) パケットスニファを使用して、 + パスワードが平文で送られていないことを確認してください。 + <literal>-x</literal> オプションで + <command>telnet</command> を利用すると、 + (<command>ssh</command> のように) + すべてのデータストリームが暗号化されます。</para> + + <para><application>Kerberos</application> + のコアのクライアントアプリケーション + (伝統的に、<command>kinit</command>, + <command>klist</command>, <command>kdestroy</command> および + <command>kpasswd</command> という名前です) は、&os; + のベースにインストールされています。 + 5.0 以前の &os; では、 + <command>k5init</command>, + <command>k5list</command>, <command>k5destroy</command>, + <command>k5passwd</command> および <command>kstash</command> + と言う名前でインストールされています。 + これらは通常一度しか用いられません。</para> + + <para>デフォルトでは、Heimdal インストールの + <quote>最小</quote> と考えられる、コア以外の + <application>Kerberos</application> + クライアントアプリケーションもインストールされます。 + <command>telnet</command> は、 + <application>Kerberos</application> + 化された唯一のサービスです。</para> + + <para>Heimdal port は、 + <application>Kerberos</application> 化されている + <command>ftp</command>, <command>rsh</command>, + <command>rcp</command>, <command>rlogin</command> + および他のあまり一般的ではないプログラムといった、 + インストールされていないクライアントアプリケーションをインストールします。 + <acronym>MIT</acronym> port も、すべての + <application>Kerberos</application> + クライアントアプリケーションをインストールします。</para> + </sect2> + + <sect2> + <title>ユーザ設定ファイル: <filename>.k5login</filename> + および <filename>.k5users</filename></title> + + <indexterm> + <primary>Kerberos5</primary> + <secondary>ユーザ設定ファイル</secondary> + </indexterm> + + <para>レルムのユーザは、一般的には、 + (<systemitem class="username">tillman</systemitem> + のような) ローカルユーザアカウントに対応する + (<systemitem class="username">tillman@EXAMPLE.ORG</systemitem> + といった) <application>Kerberos</application> + プリンシパルを持ちます。 + <command>telnet</command> + のようなクライアントアプリケーションは、 + ユーザ名もしくはプリンシパルを通常必要としません。</para> + + <para>しかしながら、時々 + <application>Kerberos</application> + プリンシパルに対応しないローカルユーザアカウントへのアクセスが必要となることがあります。 + たとえば、 + <systemitem class="username">tillman@EXAMPLE.ORG</systemitem> + が、ローカルユーザアカウント + <systemitem class="username">webdevelopers</systemitem> + へのアクセスが必要となることがあります。 + そして、他のプリンシパルが同じローカルアカウントにアクセスが必要になることもあります。 </para> + + <para>ユーザのホームディレクトリに置かれた + <filename>.k5login</filename> および + <filename>.k5users</filename> ファイルによって + (<filename>.hosts</filename> および <filename>.rhosts</filename> + の強力な組み合わせのように)、この問題を解決出来ます。 + たとえば、以下の行を含む + <filename>.k5login</filename> を</para> + + <screen>tillman@example.org + jdoe@example.org</screen> + + <para>ローカルユーザ + <systemitem class="username">webdevelopers</systemitem> + のホームディレクトリに置くと、 + 一覧にある両方のプリンシパルは、 + 共有のパスワードを必要としなくても、 + このアカウントにアクセス出来ます。</para> + + <para>これらのコマンドのマニュアルページを読むことが推奨されます。 + <command>ksu</command> マニュアルページには、 + <filename>.k5users</filename> の説明があります。</para> + </sect2> + + <sect2> + <title><application>Kerberos</application> Tips, Tricks, およびトラブルシューティング</title> + + <indexterm> + <primary>Kerberos5</primary> + <secondary>トラブルシューティング</secondary> + </indexterm> + + <itemizedlist> + <listitem> + <para>Heimdal または <acronym>MIT</acronym> + <application>Kerberos</application> ports + のどちらを使う場合でも、 + <envar>PATH</envar> 環境変数は、 + <application>Kerberos</application> 版のクライアント + アプリケーションが、 + システムにあるアプリケーションより先に見つかるように設定されていることを確認してください。</para> + </listitem> + + <listitem> + <para>システムの時刻は同期していますか? 本当ですか? + 時刻が同期していないと + (通常は 5 分以内で同期されていないと) + 認証に失敗してしまいます。</para> + </listitem> + + <listitem> + <para><acronym>MIT</acronym> および Heimdal 間の運用は、 + 標準化されていないプロトコル <command>kadmin</command> を除き、 + うまく機能します。</para> + </listitem> + + <listitem> + <para>ホスト名を変更する際は、 + <systemitem class="username">host/</systemitem> + プリンシパルを変更し、keytab をアップデートする必要があります。 + Apache の + <filename role="package">www/mod_auth_kerb</filename> + で使われる + <systemitem class="username">www/</systemitem> + プリンシパルのような特別な + keytab エントリでも必要となります。</para> + </listitem> + + <listitem> + <para>レルムの中のすべてのホストは、<acronym>DNS</acronym> + において (もしくは、最低限<filename>/etc/hosts</filename> + の中で)、(正引きおよび逆引き両方で) + 名前解決できる必要があります。 + CNAME は動作しますが、A および PTR レコードは、 + 正しく適切な位置に記述されている必要があります。 + エラーメッセージは、 + 次の例のように、直感的に原因が分かるようなものではありません。 + <errorname>Kerberos5 refuses authentication because Read req + failed: Key table entry not found</errorname>.</para> + </listitem> + + <listitem> + <para><acronym>KDC</acronym> + に対しクライアントとして振る舞うオペレーティングシステムの中には、 + <command>ksu</command> に対して、 + <systemitem class="username">root</systemitem> 権限に + setuid を許可しないものがあります。 + この設定では、 + <command>ksu</command> は動作しないことを意味します。 + セキュリティの観点からは好ましい考えですが、 + 厄介です。これは + <acronym>KDC</acronym> のエラーではありません。</para> + </listitem> + + <listitem> + <para><acronym>MIT</acronym> + <application>Kerberos</application> において、 + プリンシパルが、デフォルトの 10 + 時間を超えるチケットの有効期限としたい場合には、 + <command>kadmin</command> で + <command>modify_principal</command> を使って、 + 対象のプリンシパルおよび + <systemitem class="username">krbtgt</systemitem> + プリンシパル両方の有効期限の最大値を変更してください。 + プリンシパルは、 + <command>kinit</command> で + <literal>-l</literal> オプションを使用して、 + 長い有効期限のチケットを要求できます。</para> + </listitem> + + <listitem> + <note><para>トラブルシューティングのために、 + <acronym>KDC</acronym> でパケットスニファを走らせ、 + そして、ワークステーションから + <command>kinit</command> を実行すると、 + <command>kinit</command> を実行するやいなや、 + <acronym>TGT</acronym> が送られてきます。 + — + あなたがパスワードを入力し終わる前でも! + これに関する説明は、以下の通りです。 + <application>Kerberos</application> サーバは、 + いかなる未承認のリクエストに対して、 + 自由に <acronym>TGT</acronym> (Ticket Granting + Ticket) を送信します。しかしながら、すべての + <acronym>TGT</acronym> は、 + ユーザのパスワードから生成された鍵により、暗号化されています。 + そのため、ユーザがパスワードを入力した時には、 + パスワードは <acronym>KDC</acronym> には送られません。 + このパスワードは、<command>kinit</command> がすでに入手した + <acronym>TGT</acronym> の復号化に使われます。 + もし、復号化の結果、 + 有効なチケットで有効なタイムスタンプの場合には、 + ユーザは、有効な <application>Kerberos</application> + クレデンシャルを持ちます。 + このクレデンシャルには、 + <application>Kerberos</application> + サーバ自身の鍵により暗号化された実際の + ticket-granting ticket とともに、将来 + <application>Kerberos</application> + サーバと安全な通信を確立するためのセッション鍵が含まれています。 + この暗号の 2 番目のレイヤは、ユーザには知らされませんが、 + <application>Kerberos</application> サーバが、 + 各 <acronym>TGT</acronym> + の真偽の検証を可能にしている部分です。</para></note> + </listitem> + + <listitem> + <para>レルムにあるすべてのコンピュータの間で時刻が同期している必要があります。 + この目的に完璧に適しているのが、 + <acronym>NTP</acronym> です。 + <acronym>NTP</acronym> の詳細については、 + <xref linkend="network-ntp"/> をご覧ください。</para> + </listitem> + + <listitem> + <para>(たとえば一週間といった) + 長い有効期限のチケットを使いたい場合で、 + <application>OpenSSH</application> を使って、 + チケットが保存されているコンピュータに接続しようとする場合は、 + <application>Kerberos</application> + <option>TicketCleanup</option> が + <filename>sshd_config</filename> において + <literal>no</literal> と設定されているか、 + チケットが、ログアウト時に削除されることを確認してください。</para> + </listitem> + + <listitem> + <para>ホストプリンシパルも長い有効期限のチケットを持てることを覚えておいてください。 + もし、ユーザプリンシパルが 1 週間の有効期限を持ち、 + 接続しているホストが、9 時間の有効期限を持っている場合には、 + キャッシュのホストプリンシパル (の鍵) の有効期限が切れてしまい、 + 想定したように、チケットキャッシュが振る舞わないことが起こりえます。</para> + </listitem> + + <listitem> + <para>特定の問題のあるパスワードが使われることを避けるために + (<command>kadmind</command> のマニュアルページでは、 + この点について簡単に触れています)、 + <filename>krb5.dict</filename> ファイルを設定する時には、 + パスワードポリシが割り当てられたプリンシパルにのみ適用されることに注意してください。 + <filename>krb5.dict</filename> ファイルの形式は簡単です。 + : 一行に一つの文字列が置かれています。 + <filename>/usr/share/dict/words</filename> + にシンボリックリンクを作成することは、有効です。</para> + </listitem> + </itemizedlist> + + </sect2> + + <sect2> + <title><acronym>MIT</acronym> port との違いについて</title> + + <para><acronym>MIT</acronym> + とインストールされている Heimdal 版の大きな違いは、 + <command>kadmin</command> に関連しています。 + このプログラムは、異なる (ただし等価な) コマンド群を持ち、そして、 + 異なるプロトコルを使用します。 + もし <acronym>KDC</acronym> に <acronym>MIT</acronym> + を使用している場合には、 + Heimdal <command>kadmin</command> + プログラムを使って <acronym>KDC</acronym> をリモートから + (この場合は、逆も同様に) 管理できない + ことを意味しています。</para> + + <para>クライアントアプリケーションでは、同じタスクを行う際に、 + 若干異なるコマンドラインのオプションが必要となることもあります。 + <acronym>MIT</acronym> + <application>Kerberos</application> ウェブサイト + (<link xlink:href="http://web.mit.edu/Kerberos/www/"></link>) + に書かれているガイドに従うことが推奨されます。 + path の問題について注意してください。 + <acronym>MIT</acronym> port はデフォルトで + <filename>/usr/local/</filename> にインストールします。 + そのため、もし <envar>PATH</envar> + 環境変数においてシステムのディレクトが最初に書かれている場合には、 + <acronym>MIT</acronym> 版ではなく、 + <quote>通常の</quote> システムアプリケーションが動いてしまいます。</para> + + <note><para>&os; が提供する <acronym>MIT</acronym> + <filename role="package">security/krb5</filename> port において、 + <command>telnetd</command> および <command>klogind</command> + 経由でのログインが奇妙な振る舞いをすることを理解したいのであれば、 + port からインストールされる + <filename>/usr/local/share/doc/krb5/README.FreeBSD</filename> + ファイルを読んで下さい。 + 最も重要なことは、 + <quote>incorrect permissions on cache file</quote> + の振る舞いを修正するには、 + フォワードされたクレデンシャリングの所有権を適切に変更できるように、 + <command>login.krb5</command> + バイナリが認証に使われる必要があります。</para></note> + </sect2> + + <sect2> + <title><application>Kerberos</application> + で見つかった制限を緩和する</title> + + <indexterm> + <primary>Kerberos5</primary> + <secondary>制限および欠点</secondary> + </indexterm> + + <sect3> + <title><application>Kerberos</application> は、all-or-nothing + アプローチです。</title> + + <para>ネットワーク上で有効なすべてのサービスは、 + <application>Kerberos</application> 化 + (または、ネットワーク攻撃に対して安全に) されるべきです。 + さもないと、ユーザのクレデンシャルが盗まれ、 + 利用されることが起きるかもしれません。 + この例は、 + <application>Kerberos</application> 化されたすべてのリモートシェル + (たとえば、<command>rsh</command> および <command>telnet</command>) + です。 + パスワードを平文で送るような + <acronym>POP3</acronym> メールサーバは変換していません。</para> + </sect3> + + <sect3> + <title><application>Kerberos</application> は、 + シングルユーザのワークステーションでの使用を想定しています。</title> + + <para>マルチユーザの環境では、 + <application>Kerberos</application> は安全ではありません。 + チケットは <filename>/tmp</filename> ディレクトリに保管され、 + このチケットは、すべてのユーザが読むことができるためです。 + もし、ユーザがコンピュータを他のユーザと同時に共有 + (i.e. マルチユーザで使用) していると、 + 他のユーザは、そのユーザのチケットを盗む + (コピーする) ことが出来てしまいます。</para> + + <para>この問題は、<literal>-c</literal> + ファイル名コマンドラインオプションまたは、(好ましくは) + <envar>KRB5CCNAME</envar> 環境変数によって克服されますが、 + 実際に使われることはまれです。 + 大体においては、チケットをユーザのホームディレクトリに保存し、 + 簡単なファイルの許可属性を設定することで、 + この問題に対応できます。</para> + </sect3> + + <sect3> + <title>KDC は、単一障害点である</title> + + <para>設計上、<acronym>KDC</acronym> は、 + マスターパスワードのデータベースを含むため、 + 安全である必要があります。 + <acronym>KDC</acronym> では、 + 絶対に他のサービスを走らせるべきではありませんし、 + 物理的に安全であるべきです。 + <application>Kerberos</application> は、 + <acronym>KDC</acronym> 上で、ファイルとして保存されている一つの鍵 + (<quote>マスター</quote> 鍵) + で暗号化されたすべてのパスワードを保存しているので、 + 非常に危険です。</para> + + <para>追記ですが、マスター鍵が漏洩しても、 + 通常懸念するほど悪いことにはなりません。 + マスター鍵は、<application>Kerberos</application> + データベースの暗号時にのみ、 + 乱数を生成するためのシードとして使われます。 + <acronym>KDC</acronym> へのアクセスが安全である限りにおいては、 + マスター鍵を用いて、それほど多くのことはできません。</para> + + <para>さらに、<acronym>KDC</acronym> が + (DoS 攻撃またはネットワーク問題等により) + ネットワークサービスを利用できず、 + 認証ができない場合に対する、DoS 攻撃への対応方法があります。 + この攻撃による被害は、 + 複数の <acronym>KDC</acronym> + (ひとつのマスタとひとつまたはそれ以上のスレーブ) + および、セカンダリもしくはフォールバック認証 + (これには、<acronym>PAM</acronym> が優れています) + の実装により軽減することができます。</para> + </sect3> + + <sect3> + <title><application>Kerberos</application> の欠点</title> + + <para><application>Kerberos</application> は、 + ユーザ、ホストおよびサービスの間での認証を可能にしますが、 + <acronym>KDC</acronym> とユーザ、 + ホストまたはサービスとの間の認証のメカニズムは提供しません。 + これは、(たとえば) トロイの木馬の + <command>kinit</command> が、 + すべてのユーザ名とパスワードを記録できることを意味しています。 + <filename role="package">security/tripwire</filename> + のような、 + もしくは他のファイルシステムの完全性を確認するためのツールにより、 *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201701081400.v08E0Qbn004077>