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