diff --git a/ja_JP.eucJP/man/man6/intro.6 b/ja_JP.eucJP/man/man6/intro.6 index c59808cd94..3c5254b73e 100644 --- a/ja_JP.eucJP/man/man6/intro.6 +++ b/ja_JP.eucJP/man/man6/intro.6 @@ -1,69 +1,69 @@ .\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man6/intro.6,v 1.8 2001/07/14 19:41:13 schweikh Exp % +.\" %FreeBSD: src/share/man/man6/intro.6,v 1.9 2004/01/21 18:57:45 schweikh Exp % .\" .\" $FreeBSD$ .\" .Dd February 16, 1997 .Dt INTRO 6 .Os .Sh 名称 .Nm intro .Nd "ゲームの手引" .Sh 解説 この節にはゲームについての情報があります。 ゲームをインストールすると、 .Pa /usr/games に置かれます。 全ゲームに関する簡単な説明は以下のコマンドで得られます: .Bd -literal -offset indent -$ apropos '(6)' +$ apropos '\\(6\\)' .Ed .Sh 関連項目 .Xr intro 1 , .Xr dm 8 .Pp .%T "UNIX User's Manual Supplementary Documents" のチュートリアル。 .Sh 関連ファイル .Bl -tag -width /usr/share/doc/usd/31.trek -compact .It Pa /usr/games ゲーム置場 .It Pa /usr/share/doc/usd ゲームのチュートリアル .El .Sh 歴史 この節のマニュアルページ .Nm は .Fx 2.2 から登場しました。 diff --git a/ja_JP.eucJP/man/man6/morse.6 b/ja_JP.eucJP/man/man6/morse.6 index fc1f1270c8..2f4364c502 100644 --- a/ja_JP.eucJP/man/man6/morse.6 +++ b/ja_JP.eucJP/man/man6/morse.6 @@ -1,181 +1,182 @@ .\" Copyright (c) 2000 Alexey Zelkin. All rights reserved. .\" Copyright (c) 1988, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)bcd.6 8.1 (Berkeley) 5/31/93 -.\" %FreeBSD: src/games/morse/morse.6,v 1.11 2003/11/03 11:05:43 phk Exp % +.\" %FreeBSD: src/games/morse/morse.6,v 1.12 2004/02/20 11:55:38 fanf Exp % .\" $FreeBSD$ .\" .Dd December 7, 2000 .Dt MORSE 6 .Os .Sh 名称 .Nm morse .Nd 入力をモールス符号に変換する .Sh 書式 .Nm .Op Fl p .Op Fl d Ar device .Op Fl e .Op Fl w Ar speed .Op Fl f Ar frequency .Op Fl l .Op Fl s .Op Ar string ... .Sh 解説 コマンド .Nm は入力を読み取り、モールス符号に変換します。 受け付ける入力はコマンドライン引数か標準入力です。 .Pp 利用可能なオプションは以下の通りです: .Bl -tag -width flag .It Fl l .Fl l オプションは、led(4) デバイス向けの出力を行います。 .It Fl s .Fl s オプションは、語 (dit, dah) ではなく、ドット (`.') とダッシュ (`-') を 出力します。 .\" (dit, dah), (`.'), (`-') は訳注として追加した([man-jp-reviewer 2608])。 .\" 2000/6/5 mitchy@er.ams.eng.osaka-u.ac.jp .It Fl p モールス符号を実際に出力します。 システムが .Xr speaker 4 をサポートしている場合のみ、動作します。 .It Fl w Ar speed 出力速度を指定した語/分に設定します。 指定しない場合はデフォルト速度の 20 語/分になります。 .It Fl f Ar frequency サイドトーンの周波数をデフォルトの 600 Hz からそれ以外に設定します。 .It Fl d Ar device .Fl p と似ていますが、音ではなく .Ar device の RTS 信号を利用します。 モールス符号を発するためには、 .Ar device は tty デバイスでなくてはいけません。 .It Fl e .Fl p や .Fl d と同時に指定すると、文字を送出前にエコーバックします。 .El .Pp .Fl w と .Fl f フラグは .Fl p あるいは .Fl d フラグが指定されている場合のみ有効です。 .Pp 全ての代理符号に、対応する文字があるというわけではありません。 .Ql # は .Em AS に対応し、 -.Ql @ +.Ql & は +.Em SK に対応し、 .Ql * は .Em VE に対応し、 .Ql % は .Em BK に対応します。 より一般的な代理符号としては、 .Ql = は .Em BT に対応し、 .Ql \&( は .Em KN に対応し、 .Ql + は .Em AR に対応します。 .Pp フラグ .Fl d Ar device を用いることで、練習のためのヘッドフォン付きのサイドトーンジェネレータ や、ハムのトランシーバといった外部デバイスをキーイングすることが可能です。 後者については、NPN トランジスタを、 .Ar device のシリアルポートに繋ぎます。エミッタはグラウンドに、ベースは抵抗 (数キロ オーム) を通して RTS に、コレクタをトランシーバのキー入力に繋ぎます (トランシーバが正の電圧を供給しており、キー入力をグラウンドに繋ぐこと でキーイング出来ると仮定しています)。不要な RF を防ぎ、プログラム開始 時の小さなグリッチを抑制するために、コンデンサ (数ナノファラッド) を ベースとグラウンドの間にいれることを、お勧めします。 .Sh 関連ファイル .Bl -tag -width /dev/speaker -compact .It Pa /dev/speaker スピーカデバイスファイル .El .Sh 環境変数 .Ev LC_CTYPE ロケールコードセットが .Ql KOI8-R の場合、 最上位ビットがセットされている文字はキリル文字として解釈されます。 .Ev LC_CTYPE ロケールコードセットが .Ql ISO8859-1 互換の場合、 .Ql ISO8859-1 文字セットの文字として解釈されます。 .Sh 関連項目 .Xr speaker 4 .Sh 歴史 .Nm の サウンドサポートは .An Lyndon Nerenberg (VE7TCP/VE6BBM) Aq lyndon@orthanc.com が追加しました。 .Pp 外部デバイスをキーイングする機能は、 .An J\(:org Wunsch (DL8DTL) によって追加されました。 .Sh バグ 少数のヨーロッパ文字 (ドイツ語とフランス語) のみ理解しますが、 アジアの言語とコンチネンタルランドライン符号 (continental landline code) は理解しません。 .Pp システムオーバヘッドのため、出力速度が実際の値よりちょっと遅いです。 これを仕様だと言う人がいても不思議ではないかも知れません。 diff --git a/ja_JP.eucJP/man/man7/environ.7 b/ja_JP.eucJP/man/man7/environ.7 index ecabd82142..88f860effa 100644 --- a/ja_JP.eucJP/man/man7/environ.7 +++ b/ja_JP.eucJP/man/man7/environ.7 @@ -1,244 +1,248 @@ .\" Copyright (c) 1983, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)environ.7 8.3 (Berkeley) 4/19/94 -.\" %FreeBSD: src/share/man/man7/environ.7,v 1.20 2003/06/08 13:33:50 charnier Exp % +.\" %FreeBSD: src/share/man/man7/environ.7,v 1.22 2004/02/29 13:10:09 schweikh Exp % .\" .\" $FreeBSD$ .Dd April 12, 2003 .Dt ENVIRON 7 .Os .Sh 名称 .Nm environ .Nd ユーザ環境 .Sh 書式 .Ar extern char **environ ; .Sh 解説 .Ar 環境 と呼ばれる文字列の配列は、 プロセス開始時に .Xr execve 2 を呼び出すことによって利用可能になります。 習慣によって、これらの文字列は .Dq Ar name=value という形を取ります。 以下の名前は多くのコマンドによって利用されます: .Bl -tag -width LC_MONETARY .It Ev BLOCKSIZE いくつかのコマンド (最もよく知られている物としては .Xr df 1 , .Xr du 1 , .Xr ls 1 ) で用いられるブロック単位のサイズ。 .Ev BLOCKSIZE には、数字を指定することによってバイト単位の値を、 数字の後に ``K'' か ``k'' を指定することによってキロバイト単位の値を、 数字の後に ``M'' か ``m'' を指定することによってメガバイト単位の値を、 数字の後に ``G'' か ``g'' を指定することによってギガバイト単位の値を、 指定することができます。 512 バイトより小さい値や 1 ギガバイトより大きい値を指定しても無視されます。 .It Ev COLUMNS ユーザの好みの端末幅を、コラム位置単位で指定します。 .Xr ls 1 や .Xr who 1 といったユーティリティが、これを使用し、出力を指定されたコラム数に収めます。 設定されていないもしくは空の場合、ユーティリティは .Xr ioctl 2 呼び出しを使用し、端末ドライバに幅を問い合わせます。 .It Ev EDITOR デフォルトのエディタの名前。 .It Ev EXINIT .Xr ex 1 , .Xr vi 1 が参照する、スタートアップ時のコマンドリスト。 .It Ev HOME .Xr login 1 によって、パスワードファイル .Xr passwd 5 を元にセットされるユーザのログインディレクトリ。 .It Ev LANG +.Ev LC_* +変数が設定されていない場合、 .Xr setlocale 3 を使用する全てのプログラムを、この変数に指定されたロケールを使うように 設定します。 .It Ev LC_ALL .Ev LC_COLLATE , .Ev LC_CTYPE , .Ev LC_MESSAGES , .Ev LC_MONETARY , -.Ev LC_NUMERIC -.Ev LC_TIME +.Ev LC_NUMERIC , +.Ev LC_TIME , +.Ev LANG に優先する値です。 .It Ev LC_COLLATE 文字列の順序に使用するロケールです。 .It Ev LC_CTYPE 文字のクラス分け (レター、空白、数値等) と、 バイトシーケンスをマルチバイト文字として解釈することに使用するロケールです。 .It Ev LC_MESSAGES 診断メッセージに使用するロケールです。 .It Ev LC_MONETARY 通貨の入力と整形出力に使用するロケールです。 .It Ev LC_NUMERIC 数値の入力と整形出力に使用するロケールです。 .It Ev LC_TIME 日付の入力と整形出力に使用するロケールです。 .It Ev MAIL ユーザのメールボックスの場所です。 .Xr mail 1 , .Xr sh 1 , その他多くのメールクライアントが、デフォルトの /var/mail の 代わりに用います。 .It Ev NLSPATH .Ev LC_MESSAGES が参照するメッセージカタログを探す、ディレクトリのリスト。 .Xr catopen 3 を参照してください。 .It Ev PAGER デフォルトのページャプログラム。 .Xr mail 1 , .Xr man 1 , .Xr ftp 1 などが、使用中のディスプレイよりも長い情報を表示するときに、 この変数で指定されたプログラムを使用します。 .It Ev PATH コロンで区切られたディレクトリの列です。 .Xr csh 1 , .Xr sh 1 , .Xr system 3 , .Xr execvp 3 などが、実行ファイルを探すときに検索します。 .Ev PATH の初期値は、 .Xr login 1 によって、``/usr/bin:/bin'' にセットされます。 .It Ev PRINTER .Xr lpr 1 , .Xr lpq 1 , .Xr lprm 1 によって用いられるデフォルトのプリンタの名前。 .It Ev PWD カレントディレクトリのパス名。 .It Ev SHELL ユーザのログインシェルのフルパス名。 .It Ev TERM 出力を準備する必要のある端末の種類。 この情報は .Xr nroff 1 や .Xr plot 1 などの、端末の特殊な機能を駆使するコマンドによって用いられます。 端末タイプのリストは、 .Pa /usr/share/misc/termcap .Pq Xr termcap 5 を参照してください。 .It Ev TERMCAP .Ev TERM で指定した端末の機能を記述する文字列、あるいは、文字列が `/' で 始まる場合、termcap ファイルの名前。 下記の .Ev TERMPATH , .Xr termcap 5 を参照してください。 .It Ev TERMPATH コロンあるいはスペースで区切られた、termcap のパス名の列で、 端末の機能記述を知るために、列挙された順番で検索されます。 .Ev TERMPATH を指定していない場合は、 .Ev TERMPATH を .Dq Pa $HOME/.termcap:/etc/termcap に指定している時と同じ結果になります。 .Ev TERMCAP がフルパス名を含んでいる場合は、 .Ev TERMPATH は無視されます。 .It Ev TMPDIR テンポラリファイルを置くための場所。ほとんどのアプリケーションは .Dq /tmp か .Dq /var/tmp を用います。この変数を指定すれば、他のディレクトリを使うようになるでしょう。 .It Ev TZ 日付を表示する時に使われるタイムゾーン。 通常のフォーマットは、 .Dq Pa /usr/share/zoneinfo からの相対パス名です。 例えば、コマンド .Dq env TZ=America/Los_Angeles date は、カリフォルニアの現在時刻を表示します。 より詳しい情報は、 .Xr tzset 3 を参照してください。 .It Ev USER ユーザのログイン名。 .El .Pp これ以外の名前も、 .Xr sh 1 においては .Ic export コマンドと .Ar name=value 引数によって、 .Xr csh 1 を使用している時には .Ic setenv コマンドによって環境に付け加えることができます。 .Pa .profile ファイルでしばしばエキスポートされる、 .Ev MAIL , .Ev PS1 , .Ev PS2 , .Ev IFS などのいくつかの .Xr sh 1 の変数を変更するのは、自分が何をしているのか十分に理解していない場合には 賢明ではありません。 .Sh 関連項目 .Xr cd 1 , .Xr csh 1 , +.Xr env 1 , .Xr ex 1 , .Xr login 1 , .Xr sh 1 , .Xr execve 2 , .Xr execle 3 , .Xr getenv 3 , .Xr setenv 3 , .Xr setlocale 3 , .Xr system 3 , .Xr termcap 3 , .Xr termcap 5 .Sh 歴史 .Nm マニュアルページは .Bx 4.2 から登場しました。 .\"ZZZ: 3.0-RELEASE compliant by N. Kumagai 99-1-21 diff --git a/ja_JP.eucJP/man/man7/release.7 b/ja_JP.eucJP/man/man7/release.7 index 90c0061527..85e4813427 100644 --- a/ja_JP.eucJP/man/man7/release.7 +++ b/ja_JP.eucJP/man/man7/release.7 @@ -1,497 +1,505 @@ .\" Copyright (c) 2002 Murray Stokely .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man7/release.7,v 1.33 2003/10/06 11:52:34 ru Exp % +.\" %FreeBSD: src/share/man/man7/release.7,v 1.35 2004/01/28 21:07:36 jhb Exp % .\" $FreeBSD$ .\" .\" WORD: clean system まっさらのシステム[release.7] .\" .Dd March 12, 2002 .Dt RELEASE 7 .Os .Sh 名称 .Nm release .Nd "リリース構築基盤" .Sh 解説 .Fx は、ユーザが .Fx オペレーティングシステムのリリース全てを作成できるような完全な構築環境を 提供しています。 リリースを構築するために必要なツールの全ては、 CVS リポジトリ中の .Pa src/release に揃っています。 実のところ、 CD-ROM を焼く際に使える ISO イメージ、インストール用フロッピ、 FTP インストール用ディレクトリの生成をはじめとして、完全なリリースを コマンド一発で構築できます。 このコマンドは、 .Dq Li "make release" と、うまい名前が付けられています。 .Pp リリースを構築する前に、 .Xr build 7 の内容によく馴染んでおいてください。 また、 .Dq Li "make world" によるソースからのシステムアップグレードの経験も必須です。 リリース構築プロセスは、 .Dq Li "make buildworld" の結果を .Pa /usr/obj に置いておくことを要求します。 完全なシステムのためのオブジェクトファイルを、まっさらの .Xr chroot 8 環境にインストールできるようにするために、これが必要となります。 リリースを進めるには、 .Xr md 4 (メモリディスク) デバイスドライバがカーネルに存在する (コンパイル済み、またはモジュールとして利用可能のいずれも可) ことも必要です。 .Pp この文書は、ソースコード管理、品質管理など、 リリースエンジニアリングプロセスに関するその他の側面は扱いません。 .Sh ターゲット リリース用 makefile .Pq Pa src/release/Makefile は、かなり難解です。 ほとんどの場合、 .Cm release ターゲットのことを考えるだけで済むと思います。 .\" XXX: Some sort of introduction to this list? All the others have one. .Bl -tag -width ".Cm rerelease" .It Cm release .Dq Li "make installworld" を用いて、ファイルシステムの .Xr chroot 8 環境にまっさらのシステムをインストールします。 指定したバージョンのソースコードをチェックアウトし、 .Dq Li "make world" を用いて、まっさらの環境に完全なシステムを再構築します。 そのあとに、ディストリビューション別のパッケージング(まとめ上げ)、 インストール用フロッピディスクの構築、リリース文書の構築などの 細かいステップが続きます。 .Pp このターゲットは、 .Va kern.securelevel sysctl を \-1 (デフォルト) とした root で構築する必要があります。 .It Cm rerelease このターゲットは、リリース構築作業の結果を手で修正し、前の .Dq Li "make release" の中間結果を使い、最小のステップ数でリリースを再構築することを 想定したものです。 .It Cm floppies 新規のブートおよび fixit フロッピの組を作成します。 .Cm release.5 , .Cm release.9 , -.Cm release.10 +.Cm floppies.1 , +.Cm floppies.2 , +.Cm floppies.3 ターゲットを呼び、直前の .Dq Li "make release" のフロッピイメージを再作成します。 このターゲットは、カスタムブートフロッピの作成にもっとも良く使用されます。 .El .Pp .Dq Li "make release" により呼び出されるターゲットは次のとおりです。 -.Bl -tag -width ".Cm release.10" +.Bl -tag -width ".Cm fetch-distfiles" .It Cm release.1 ディレクトリ .Pa ${CHROOTDIR}/R をまっさらにし、 .Xr mtree 8 を用いてシステム用のディレクトリ階層を構築します。 .It Cm release.2 システムをディストリビューション用ディレクトリにインストールします。 .It Cm release.3 .Dq base ディストリビューションに対し、 非 crypto バージョンのいくつかのツールをビルドおよびインストールします。 .It Cm release.4 -.\" XXX: We build more than one kernel. We build a stripped down -.\" kernel for the boot media in addition to a full GENERIC kernel. .Pa GENERIC カーネルを作り、インストールします。 +同時に +.Va KERNELS +にリストされた他のカーネルも、作成しインストールします。 .It Cm release.5 .Xr crunchgen 1 を用いて、インストール用フロッピに収容する .Dq crunched バイナリを構築します。 .It Cm release.6 合成ディストリビューションを構築し、 また、作成されたディストリビューションツリーを掃除しきれいにします。 .It Cm release.7 組み立てられたディストリビューションツリーの tarball を 生成します。 .It Cm release.8 ソースディストリビューションを作成します。 .It Cm release.9 MFS root ファイルシステムを生成します。 -.It Cm release.10 -boot, MFS root, fixit フロッピを生成します。 +.It Cm floppies.1 +boot と kernel フロッピを生成します。 +.It Cm floppies.2 +fixit フロッピを生成します。 +.It Cm floppies.3 +.Pa ${CHROORDIR}/R/ftp/stage/floppies +ステージディレクトリでの作業の仕上げをします。 .It Cm ftp.1 FTP インストールに適切な領域を .Pa ${CHROOTDIR}/R/ftp に整えます。 .It Cm cdrom.1 CD-ROM イメージ構築に適切な領域を .Pa ${CHROOTDIR}/R/cdrom に整えます。 .It Cm iso.1 CD-ROM リリース領域から ISO イメージを 2 つ構築します (インストール用と .Dq live ファイルシステムの 2 つ)。 デフォルトでは無効になっています。 以下の .Va MAKE_ISOS を参照してください。 .It Cm fetch-distfiles リリースビルドに必要な distfile で .Va RELEASEDISTFILES にはまだ無いものを取得します。 .It Cm doc.1 .Fx ドキュメンテーションプロジェクトのソースドキュメント (SGML, XML) を リリースに含める HTML / テキストドキュメントに変換するために 必要なツール全てを構築します。 また、現在存在するユーザドキュメントも構築、インストールします。 これには、Handbook, FAQ, article などが含まれます。 .It Cm doc.2 リリースドキュメントを構築します。 これには、リリースノート、ハードウエアガイド、インストール作業説明書 (installation instructions) が含まれます。 .El .Sh 環境変数 指定しなければならない環境変数は以下のとおりです。 .Bl -tag -width ".Va BUILDNAME" .It Va BUILDNAME 構築するリリースの名前。 この名前は、 .Pa sys/conf/newvers.sh の中で .Va RELEASE の値を設定するのに使用します。 この値は .Xr uname 1 の出力を変更します。 .It Va CHROOTDIR .Xr chroot 8 環境として、全リリース構築に使用するディレクトリ。 .\" XXX: I recommend against hardcoding specific numbers like "2.3" here; .\" XXX: perhaps it should be replaced with something to the effect of .\" XXX: "we don't know how much space you'll need, but make sure you have .\" XXX: at least 3 GB to be safe" (I know i'm still hardcoding a number, .\" XXX: but at least it looks less like a decree and more like an estimate. i386 アーキテクチャの場合、これが存在するファイルシステムには 少なくとも 2.3GB の空き領域が必要です。 .It Va CVSROOT .Fx CVS リポジトリの位置です。 このパス名は、実システムルートから参照され、 .Xr chroot 8 されたディレクトリツリーのルートからの参照では .Em ありません。 .El .Pp オプションの変数は次のとおりです。 .Bl -tag -width ".Va NO_PREFETCHDISTFILES" .It Va CVSCMDARGS .Xr cvs 1 のコマンド .Ic checkout と .Ic update への追加の引数です。 例えば、この変数を .Dq Li "-D '01/01/2002 00:00:00 GMT'" に設定して .Dq Li "make release" または .Dq Li "make rerelease" すると、 .Xr cvs 1 はそれぞれ 2002 年 1 月 1 日 00:00:00 GMT のソースを チェックアウトまたはアップデートするよう .Xr cvs 1 に指示します。 .It Va LOCAL_PATCHES .Pa /usr/src に対するパッチファイル。 このパッチは、リリース構築を開始する前に、 .Xr chroot 8 環境で適用されます。 .It Va PATCH_FLAGS パッチファイル .It Va DOC_LANG 構築すべき SGML ベースドキュメンテーションの、言語とコード。 設定されないと、使用可能なすべての言語に対し、 ドキュメンテーションが構築されます。 .It Va DOCRELEASETAG ドキュメンテーションツリーのチェックアウト時に使用する CVS タグ。 通常、デフォルトで、ドキュメンテーションツリーの先頭が使用されます。 .Va RELEASETAG がリリースタグを指定する場合、 関連付けられたリリースバージョンがデフォルトの代りに使用されます。 .It Va EXTLOCALDIR .Pa ${CHROOTDIR}/usr/local にコピーされるディレクトリ。 .It Va KERNEL_FLAGS リリース構築中のカーネル構築時に、この変数の内容が .Xr make 1 に渡されます。 例えば、この変数を .Dq Li "-j 4" に設定すると、 .Xr make 1 に最大 4 プロセスまで同時に実行することを指示することになります。 .It Va KERNELS コンパイルして .Dq ベース 配布にインストールする、追加のカーネル設定のリストを指定します。 各カーネルは、 .Pa /boot/ にインストールされ、ローダから .Dq Li "boot " でブートできるようになります。 .Va LOCAL_PATCHES を適用する際に用いる .Xr patch 1 コマンドに渡す引数。 .It Va LOCAL_SCRIPT .Xr chroot 8 環境で、ローカルパッチ適用直後に実行されるスクリプト。 .It Va MAKE_ISOS これを定義した場合、CD-ROM ステージのディレクトリの内容から、 ブータブル ISO CD-ROM イメージを生成します。 .It Va NOCDROM 定義した場合、CD-ROM ステージのディレクトリを生成しません。 .It Va NODOC 定義した場合、 .Fx ドキュメンテーションプロジェクトの SGML ベースのドキュメントを生成しません。 しかしながら、 .Pa src/share/doc にある最小のドキュメンテーションセットから .Dq doc ディストリビューションが依然として作成されます。 .It Va NO_FLOPPIES -定義した場合、boot, fixit フロッピディスクイメージファイルを生成しません。 +定義した場合、boot, fixit フロッピディスクイメージファイルを生成しません (i386 のみ)。 .It Va NOPORTS 定義した場合、Ports Collection はリリースから省略されます。 .It Va NOPORTREADMES これを定義した場合、 Ports Collection の各 port に対する readme ファイルを作成しません。 デフォルトの動作は、 .Dq Li "make release" が .Dq Li "make readmes" を .Pa ${CHROOTDIR}/usr/ports から実行するというものであり、莫大な時間を費すことになります。 .It Va PORTSRELEASETAG ports ツリーのチェックアウト時に使用する CVS タグ。 通常、デフォルトで、ports ツリーの先頭が使用されます。 .Va RELEASETAG がリリースタグを指定する場合、 関連付けられたリリースバージョンがデフォルトの代りに使用されます。 .It Va NO_PREFETCHDISTFILES この変数が定義されている場合、 .Xr chroot 8 環境に入る前に、リリース構築に必要な distfile がダウンロードされません。 .Va NO_PREFETCHDISTFILES が設定されていない場合、取得が行われるのは、 .Va RELEASEDISTFILES から distfile を取得完了した後であることに注意してください。 .It Va RELEASEDISTFILES ports 用として、リリース構築に必要となる ディストリビューションファイルが存在するディレクトリです。 これにより、低速なリンク経由で distfiles をダウンロードする際に費やされる莫大な時間を 節約することができます。 .It Va RELEASENOUPDATE .Dq Li "make rerelease" の際にこの変数の値を設定した場合、 .Dq Li "cvs update" によるソースコード更新を行ないません。 .It Ev RELEASETAG 構築するリリースに相当する CVS タグ。 未定義の場合、CVS ツリーの .Dv HEAD .Dq ( "-CURRENT スナップショット" ) から構築されます。 .It Va TARGET_ARCH ターゲットとなるマシンプロセッサアーキテクチャ。 この環境変数は .Dq Nm uname Fl p の出力と同じものです。 異なるアーキテクチャ用にクロスビルドするにはこの環境変数を設定してください .It Va TARGET ターゲットとなるハードウェアプラットフォーム。 この環境変数は .Dq Nm uname Fl m の出力と同じものです。 ターゲットアーキテクチャをクロスビルドするのに必要な変数です。 例えば、PC98 マシン用にクロスビルドを行うには .Va TARGET_ARCH Ns = Ns Li i386 と .Va TARGET Ns = Ns Li pc98 が必要です。 .It Va WORLDDIR .Dq Li "make buildworld" が実行されたディレクトリです。 デフォルトは .Pa ${.CURDIR}/.. であり、通常は .Pa /usr/src を指します。 .It Va WORLD_FLAGS リリース構築中の世界 (world) 構築時に、この変数の内容が .Xr make 1 に渡されます。 例えば、この変数を .Dq Li "-j 4" に設定すると、 .Xr make 1 に最大 4 プロセスまで同時に実行することを指示することになります。 .El .Sh 関連ファイル .Bl -tag -compact .It Pa /etc/make.conf .It Pa /usr/doc/Makefile .It Pa /usr/doc/share/mk/doc.project.mk .It Pa /usr/ports/Mk/bsd.port.mk .It Pa /usr/ports/Mk/bsd.sites.mk .It Pa /usr/share/examples/etc/make.conf .It Pa /usr/src/Makefile .It Pa /usr/src/Makefile.inc1 .It Pa /usr/src/release/Makefile .It Pa /usr/src/release/${arch}/drivers.conf .It Pa /usr/src/release/${arch}/boot_crunch.conf .It Pa /usr/src/release/${arch}/fixit_crunch.conf .El .Sh 使用例 以下のコマンド列は .Fx 4.5 release を構築する際に使用したものです。 .Bd -literal -offset indent cd /usr cvs co -rRELENG_4_5_0_RELEASE src cd src make buildworld cd release make release CHROOTDIR=/local3/release BUILDNAME=4.5-RELEASE \\ CVSROOT=/host/cvs/usr/home/ncvs RELEASETAG=RELENG_4_5_0_RELEASE .Ed .Pp これらのコマンドを実行すると、FTP ディストリビューション用と、 CD-ROM ディストリビューション用として使える完全なシステムが ディレクトリ .Pa /local3/release/R にできます。 .Pp 次のコマンド列は、ローカルで修正したソースツリーの .Dq "-CURRENT スナップショット" を構築するために使用できます。 .Bd -literal -offset indent cd /usr/src cvs diff -u > /path/to/local.patch make buildworld cd release make release CHROOTDIR=/local3/release BUILDNAME=5.0-CURRENT \\ CVSROOT=/host/cvs/usr/home/ncvs LOCAL_PATCHES=/path/to/local.patch .Ed .Sh 関連項目 .Xr cc 1 , .Xr crunchgen 1 , .Xr cvs 1 , .Xr install 1 , .Xr make 1 , .Xr patch 1 , .Xr uname 1 , .Xr md 4 , .Xr drivers.conf 5 , .Xr make.conf 5 , .Xr build 7 , .Xr ports 7 , .Xr chroot 8 , .Xr mtree 8 , .Xr sysctl 8 .Rs .%T "FreeBSD Release Engineering" .%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/ .Re .Rs .%T "FreeBSD Release Engineering of Third Party Packages" .%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/ .Re .Rs .%T "FreeBSD Developers' Handbook" .%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/ .Re .Sh 歴史 .Fx 1.x では、チェックリストを手でチェックしながら、 .An Rod Grimes によりコンパイルされ、リリースが作成されました。 不完全さはさておくにしても、このチェックリストには、 ファイルシステムを使えるようにするためのこまごまとした要求が大量に 含まれており、その実行は拷問としかいいようがないものでした。 .Pp .Fx 2.0 リリースエンジニアリングを続ける中で、 .Pa src/release/Makefile を直して、隔離された無菌環境でリリースを構築する際の退屈な作業の ほとんどを自動的に行なえるようにすることに、顕著な努力が払われました。 .Pp 複数のブランチにまたがる 1000 回近くの改版を経て、 .Pa src/release/Makefile の .Xr cvs 1 ログには、リリースエンジニアたちが経験した苦難のいくばくかを示す 生々しい歴史の記録が刻み込まれています。 .Sh 作者 .Pa src/release/Makefile は、もともとは .An -nosplit .An Rod Grimes , .An Jordan Hubbard , .An Poul-Henning Kamp が書きました。 このマニュアルページは、 .An Murray Stokely Aq murray@FreeBSD.org が書きました。 .Sh バグ .Fx ドキュメンテーションに対するインフラストラクチャ変更は頻繁で、 これが原因でセキュリティブランチ上のリリース構築が失敗することがあります。 最後に完全にサポートされた .Fx リリースから ドキュメンテーションをチェックアウトし、リリース構築することで、 この問題を回避できます。 例: .Pp .Dl "make release RELEASETAG=RELENG_4_5 DOCRELEASETAG=RELEASE_4_5_0 ..." diff --git a/ja_JP.eucJP/man/man7/security.7 b/ja_JP.eucJP/man/man7/security.7 index 453afd98fe..47e42fd36c 100644 --- a/ja_JP.eucJP/man/man7/security.7 +++ b/ja_JP.eucJP/man/man7/security.7 @@ -1,757 +1,756 @@ .\" Copyright (c) 1998, Matthew Dillon. Terms and conditions are those of .\" the BSD Copyright as specified in the file "/usr/src/COPYRIGHT" in .\" the source tree. .\" -.\" %FreeBSD: src/share/man/man7/security.7,v 1.32 2003/07/08 21:10:32 brueffer Exp % +.\" %FreeBSD: src/share/man/man7/security.7,v 1.34 2004/02/18 18:52:09 ceri Exp % .\" .\" $FreeBSD$ .Dd September 18, 1999 .Dt SECURITY 7 .Os .Sh 名称 .Nm security .Nd FreeBSD におけるセキュリティ入門 .Sh 解説 セキュリティは、システム管理者とともに始まり、システム管理者と ともに終る機能です。 .Bx マルチユーザシステムは、昔ながらのセキュリティをいくらかは備えて いますが、さらなるセキュリティ機構を組み込んで維持していくことで、ユーザを .Sq 正直に し続ける仕事は、システム管理者の最も大きな責務の一つでしょう。マシンは、 管理者が設定しただけのセキュリティしか示しません。セキュリティに関する 問題は、むしろ、便利さを求める人間との競合問題です。一般に、 .Ux システムは莫大な数のプロセスを同時に実行させることができ、 それも、サーバとして動作するものが多いのです。つまり、外部の何者かが 接続してきて、サーバプロセスと会話することができるということなのです。 昨日まで使われていたミニコンピュータやメインフレームは、今日では デスクトップコンピュータが取って代わり、しかも、それらはネットワークで結ばれて インターネットと接続されるようになりました。これにより、セキュリティは 昔と比べてはるかに大きな問題となっています。 .Pp セキュリティは、タマネギの階層のようなアプローチを通すと最もよく実装できます。 手短に言って、やりたいことは、便利さを損ねない程度にできるだけ多くの 階層を作り、システムに侵入されていないかを注意深く監視することです。 セキュリティの階層を作りすぎたくはありません。作りすぎると、侵入の 検出が妨げられることになるでしょう。どんなセキュリティ機構でも、 侵入の検出をすることが唯一とても重要なことなのですから。 例えば、システムの各バイナリに .Pa schg フラグ ( .Xr chflags 1 参照) を設定するのは大して意味がありません。フラグを設定すると、一時的には バイナリを保護することができますが、侵入してきたクラッカーが、 マシンのセキュリティ機構がクラッカーの侵入を全く検知できなくなるような 変更ではあるが、管理者が容易に検出できるような変更をできなくしてしまう からです。 .Pp システムセキュリティには、さまざまな形での攻撃に対処することも ついて回ります。攻撃には、root を破ろうとはしないが、システムを クラッシュさせたり、さもなければ、システムを使用不能にしたり しようとするものも含まれています。 セキュリティに関する問題は、いくつかのカテゴリに分類することができます。 .Bl -enum -offset indent .It サービス不能攻撃 .It ユーザアカウントにかかる危険 .It アクセス可能なサーバを経由した root 権限にかかる危険 .It ユーザアカウントを通した root 権限にかかる危険 .It 裏口の作成 .El .Pp サービス不能攻撃とは、マシンから必要な資源を奪う行為です。 サービス不能攻撃は、普通は、そのマシンで実行されるサーバや ネットワークスタックを圧倒して、マシンをクラッシュさせたり、 さもなければマシンを使えなくしたりするような力任せの方法です。 サービス不能攻撃のいくつかは、 ネットワークスタックのバグを利用して、パケット一つでマシンを クラッシュさせようとします。後者は、 カーネルにバグ修正を施すことによってのみ修正することができます。 サーバプロセスに対する攻撃は、オプションを適切に指定して、 不利な状況にあるシステムにおいて、サーバプロセスが引き起こす負荷に限界を設けることで 修正することができます。これらに比べると、ネットワークへの力任せの攻撃への 対応はずっと難しくなります。たとえば、偽造パケットによる攻撃 .Pq spoof-packet attack は、インターネットからシステムを切り離す以外の方法で防ぐことは ほとんど不可能です。 それによって、マシンを落としてしまうことはできないかもしれませんが、 インターネット回線をいっぱいにしてしまうことはできます。 .Pp ユーザアカウントを危険に晒してしまう問題は、サービス不能攻撃よりもずっとよくある 問題です。このご時勢でも、自分たちのマシンで標準の telnetd, rlogind, rshd, ftpd サーバを実行させているシステム管理者は多いのです。これらの サーバは、デフォルトでは、暗号化されたコネクション上で動作していません。 その結果、抱えているユーザ数が標準くらいであれば、リモートログイン (そのシステムにログインするには最も普通で便利な方法です) しているユーザのうち一人以上は、パスワードを覗き見られて しまうでしょう。 システム管理者が注意深い人ならば、たとえログインが成功していたとしても、 リモートアクセスログを解析して、疑わしいソースアドレスを探すものです。 .Pp ひとたび攻撃者がユーザアカウントへのアクセス権を入手すると、攻撃者が root の権限を破る可能性があることを仮定するべきです。しかし、 セキュリティを十分維持し、手入れの行き届いたシステムにおいては、 あるユーザアカウントへのアクセスが可能となっても、攻撃者に必ずしも root へのアクセス権を与えるとは限らないのが現実です。この違いは重要です。 というのは、root へのアクセス権がなければ、一般的に、攻撃者は自分の 侵入の痕跡を隠蔽することができませんし、そのユーザのファイルを引っかき回したり、 マシンをクラッシュさせたりできるのがせいぜいです。 ユーザアカウントが危険に晒されるということは、たいへんよく起こることです。 なぜなら、ユーザは、システム管理者ほどには前もって注意を払わない 傾向があるからです。 .Pp システム管理者は、あるマシン上で root の権限を破る方法は、潜在的に 何通りもあるのだということを 心しておかねばなりません。攻撃者が root のパスワードを知ってしまうかも しれません。攻撃者が root の権限で実行されるサーバのバグを見つけ、 ネットワークからそのサーバへ接続して root の権限を破ることができるかも しれません。ひとたびユーザアカウントを破ると、ユーザアカウントから root の権限を破ることが可能であるというバグを持つ suid-root プログラムの 存在を、攻撃者は知っているかもしれません。 あるマシン上で、攻撃者が root の権限を破る方法を知ったとすると、 攻撃者は、裏口を作る必要などないかもしれません。 発見され、ふさがれた root の穴の多くには、クラッカーが侵入した跡を消そうとして たくさん仕事した結果が含まれています。 そのためにこそ、多くのクラッカーは裏口を作るのです。この裏口は、クラッカーの 検出をするのに便利なやり方です。クラッカーに裏口を作らせないようにする ということは、セキュリティにとっては実際には良くないことかもしれません。 なぜなら、そうすることで、クラッカーが最初に侵入してくるために発見した セキュリティホールがふさがるわけではないからです。 .Pp セキュリティを改善する方法は、常に、 .Sq タマネギの皮剥き のように 複数の層のアプローチで実装されるべきです。これらは次のように分類できます。 .Bl -enum -offset indent .It root とスタッフのアカウントの安全性を高める。 .It root の安全性を高める - root 権限のサーバと suid/sgid バイナリ。 .It ユーザアカウントの安全性を高める。 .It パスワードファイルの安全性を高める。 .It カーネルのコア、raw デバイス、ファイルシステムの安全性を高める。 .It システムに対して行なった、不適切な変更をすばやく検出する。 .It 偏執狂的方法。 .El .Sh root アカウントとスタッフアカウントの安全性を高める root のアカウントの安全性を確保しないうちからスタッフのアカウントの安全性を うんぬんしてもしかたがありません。ほとんどのシステムでは、root アカウントに 割り当てたパスワードが 1 つあります。まず最初にすべきことは、 このパスワードは .Sq いつでも 危険に晒されていると仮定することです。 ここでは、root のパスワードを消すべきだと言っているのではありません。 パスワードは、マシンにコンソールからアクセスするのには、ほとんどいつでも 必要なものです。ここで言いたいのは、コンソール以外からは、おそらくは、 .Xr su 1 コマンドを用いてすらパスワードを使えるようにするべきではないということです。 例えば、pty が、 .Sq Pa /etc/ttys ファイルで安全でないものと指定されているのかを確認してください。 そうすることで、telnet や rlogin 越しに root でログインできないようになります。 sshd のような、別のログインサービスを使っている場合でも同様に、 直接 root へログインすることを許していないかどうか確認してください。 アクセスする手段、例えば ftp のようなサービスが、たびたびクラックの手に落ちる ことを考えてみてください。root に直接ログインできるのは、システムコンソール を通したときのみにすべきです。 .Pp システム管理者として、自分は root になれるようにしておかねばならないの はもちろんですから、穴をいくつか空けておきます。しかし、それらの穴を 動作させるには、さらに追加のパスワード認証が必要であるようにして おきます。root でアクセス可能とする方法の一つとして、 適切なスタッフアカウントを ( .Pa /etc/group ) の wheel グループに加えることがあります。 wheel グループに置かれたスタッフメンバには、 .Sq su を使って root になることが許されます。パスワードエントリにおいて、 スタッフメンバを wheel グループを置くことで、スタッフメンバに wheel のアクセス権を与えてはいけません。スタッフメンバのアカウントは .Sq staff に置くべきです。そして .Sq Pa /etc/group ファイルを通して wheel グループに加えるべきです。 実際に root アクセスの必要な staff メンバのみ wheel グループに置くように すべきです。kerberos のような認証方法を使用する場合、root アカウントで .Sq Pa .k5login ファイルを使って、誰も wheel グループに置く必要なく root に .Xr ksu 1 を許すようにすることもできます。 このやり方はよりよい解決策なのかもしれません。なぜなら、wheel のメカニズム では、侵入者がパスワードファイルを手に入れ、staff アカウントのいずれか 1 つを破ることができると、root を破ることがまだできてしまうからです。 wheel のメカニズムを用いる方が、何もしないよりは良いのですが、必ずしも 最も安全な選択肢とは限りません。 .Pp root アカウントの安全性を高める間接的な方法として、別のログインアクセス の方法を用いて、スタッフのアカウントの暗号化パスワードを\ * にして おくことで、スタッフのアカウントの安全性を高めるものがあります。この方法 だと、侵入者がパスワードファイルを盗むことができるかもしれませんが、 スタッフアカウントを破ることはできないでしょう。また、たとえ root が暗号化 パスワードをパスワードファイルに付けていたとしても、間接的には root アカウントも破ることができないでしょう。 スタッフメンバがスタッフアカウントでログインする際には、 .Xr kerberos 1 や .Xr ssh 1 のような、公開鍵 / 秘密鍵の鍵の組を使う 安全性の高いログインの仕組みを使います。kerberos のような仕掛けを使う場合、 一般に、kerberos サーバを実行するマシンと自分のデスクトップ ワークステーションとの安全性を確保しなければなりません。ssh で 公開鍵 / 秘密鍵の組を使う場合、一般に、ログイン元マシン (通常は自分のワークステーション) の安全性を確保しなければなりません。ここで、 .Xr ssh-keygen 1 で公開鍵 / 秘密鍵の組を生成する際、鍵の組をパスワードで防御することにより、 鍵の組への防御層を追加することもできます。スタッフアカウントの パスワードを\ * で外すことができると、管理者自身が設定 した安全性の高い方法でしかスタッフメンバがログインできないことも保証 できます。こうして、多くの侵入者が使う重大なセキュリティの穴 (安全性の低い無関係なマシンからネットワークを覗き見る方法) を塞ぐようなセッションを提供する、安全性の高い暗号化されたコ ネクションを使うことを、スタッフメンバ全員に強制することができ るのです。 .Pp より間接的なセキュリティの仕組みでは、制限の強いサーバから制限の弱い サーバへログインすることを前提としています。例えば、メインマシンで、 様々な種類のサーバを実行させている場合、ワークステーションではそれらの サーバを実行させてはなりません。ワークステーションを十分に 安全にしておくためには、実行するサーバの数を、一つもサーバ が実行されていないというくらいにまでできる限り減らすべきです。 また、パスワードで保護されたスクリーンセーバを走らせておくべきです。 ワークステーションへの物理的アクセスが与えられたとすると、もちろん 言うまでもなく、攻撃者は管理者が設定したいかなる種類のセキュリティ をもうち破ることができるのです。これは、管理者として必ず考えておか ねばならない問題ですが、システム破りの大多数は、ネットワーク経由で リモートから、ワークステーションやサーバへの物理的アクセス手段を持 たない人々によって行われるという事実もまた、念頭に置いておく必要 があります。 .Pp kerberos のような方法を使うことで、スタッフアカウントのパスワードの変更 もしくは停止を一箇所で行なうことと、スタッフメンバがアカウントを持つ すべてのマシンに即時にその効果を及ぼすことが可能となります。スタッフメンバの アカウントが危険に晒されたときに、すべてのマシンでスタッフメンバのパスワードを 即座に変更する能力を過小評価してはいけません。パスワードが分散されている状況では、 N 台のマシンでパスワードを変更すると、てんやわんやの事態を招く可能性が あります。kerberos を使用すると、パスワードの再発行に制限 (re-passwording restriction) を課することもできます。この機能を使うことにより、 ある kerberos チケットをしばらく経つとタイムアウトにすることが できるだけでなく、一定期間 (例えば、1 ヶ月に 1 回) 経つと、ユーザに新しいパスワードを選ぶように要求することもできます。 .Sh root の安全性を高める - root 権限のサーバと suid/sgid バイナリ 用心深いシステム管理者は、自分に必要なサーバプロセスだけを過不足なく 実行させるものです。第三者製のサーバは、よくバグを持っていがちだと いうことに注意して下さい。例えば、古いバージョンの imapd や popper を実行させておくのは、全世界に共通の root の切符を与えてい るようなものです。 自分で注意深くチェックしていないサーバは、決して実行してはいけません。 root で実行させる必要のあるサーバはほとんどありません。例えば、ntalk, comsat, finger デーモンを、特別の「砂場 .Pq sandbox 」ユーザで実行させることができます。 .\"kuma hellofalot of trouble って何や? .\" hell of a lot of trouble みたいですね。;-) (金ん田 '99.02.11) 管理者が膨大な数の問題に直面していないのなら、この「砂場」は完璧では ありませんが、セキュリティに関するタマネギ的アプローチはここでも 成り立ちます。砂場で実行されているサーバプロセスを経由して侵入を 果たすことができたとしても、攻撃者はさらに砂場から外に脱出しなければ なりません。攻撃者が通過せねばならない層の数が増えれば増えるほど、 それだけ攻撃者が侵入に成功する確率が減ります。root の抜け穴は 歴史的に、基本システムサーバも含め、 root 権限で実行されるほとんどすべてのサーバプロセスで発見されています。 ユーザが sshd 経由でのみログインし、 telnetd, rshd, rlogind 経由でログインすること が決してないマシンを稼働させているのであれば、それらのサービスを停止させて下さい。 .Pp .Fx では、今では ntalkd, comsat, finger は砂場で実行させることが デフォルトになっています。次に砂場で実行させるべきプログラムの候補として、 .Xr named 8 があります。デフォルトの rc.conf ファイルには、named を砂場で実行する ために必要な引数がコメントアウトされた形式で含まれています。新しい システムをインストールしているか、それとも既存のシステムを アップグレードして使っているかに依存しますが、砂場として使用する 特別のユーザアカウントがインストールされていないかもしれません。 用心深いシステム管理者であれば、できるだけいつでも研究を怠らず、 サーバに砂場を仕込むものでしょう。 .Pp 通常、砂場で実行しないサーバが他にいくつかあります。sendmail, popper, imapd, ftpd などです。これらのうちいくつかのサーバには代わりとなるも のがありますが、 代わりのものをインストールするには、それだけ多くの仕事が必要になるので、 結局これらを喜んで入れてしまいます (便利さという要素がまたも勝利を収めるわけです)。 これらのサーバは、root 権限で実行せねばならいかもしれません。また、 これらのサーバ経由で生じる侵入 を検出するためには、他の仕組みに頼らなくてはならないかもしれません。 .Pp システムの root 権限の潜在的な穴で他に大きなものとして、システムに インストールされた suid-root/sgid バイナリがあります。 これらのバイナリは、rloginのように、 .Pa /bin , .Pa /sbin , .Pa /usr/bin , .Pa /usr/sbin に存在するものがほとんどです。 100% 安全なものは存在しないとはいえ、システムデフォルトの siud/sgid バイナリは比較的安全といえます。それでもなお、root の穴が これらのバイナリにときおり発見されています。1998 年に Xlib で見つかった root の穴は、xterm (普通、suid 設定されています) を攻撃可能にしていました。 安全である方がよいので、用心深いシステム管理者は残念に思いながらも、 スタッフのみが実行する必要がある suid バイナリは、スタッフのみが アクセス可能な特別なグループに含めるように制限を加え、 誰も使わない suid バイナリは .Pq Li chmod 000 を実行して 片付けてしまうでしょう。 ディスプレイを持たないサーバは、一般的に xterm のバイナリを必要としません。 sgid バイナリもほとんど同様の危険な存在になり得ます。 侵入者が kmem に sgid されたバイナリを破ることができた場合、 その侵入者は .Pa /dev/kmem を読み出すことができるようになります。 つまり、暗号化されたパスワードファイルを読み出すことができる ようになるので、パスワードを持つどのアカウントをも、 .Pq 潜在的な 危険に晒すことになります。 代わりに、kmem グループを破った侵入者が pty を通して送られたキーストロークを 監視できます。キーストロークには、安全な方法でログインするユーザが使っている pty も含まれます。tty グループを破った侵入者は、ほぼ任意のユーザの tty へ 書き込みができます。ユーザが端末プログラムやキーボードをシミュレーション する機能を持ったエミュレータを使っている場合、侵入者は潜在的に、 結局そのユーザとして実行されるコマンドをユーザの端末にエコーさせる データストリームを生成できる可能性があります。 .Sh ユーザアカウントの安全性を高める ユーザアカウントは、普通、安全性を高めることが最も困難です。 スタッフに対して、アテナイのドラコのような厳格なアクセス制限を課し、 スタッフのパスワードを\ * で外すことができるとはいえ、管理者が持ちうる 一般ユーザすべてのアカウントに対して同じことはできないかもしれません。 管理者が十分に統率をとることができるなら、管理者は勝利し、ユーザの アカウントの安全を適切に確保できるかもしれません。それが できないならば、よりいっそう気を配って一般ユーザのアカウントを 監視するよりほかありません。一般ユーザアカウントに対し ssh や kerberos を利用することには、システム管理がさらに増えたり テクニカルサポートが必要になるなどの問題があります。 それでも、暗号化パスワードファイルと比較するとはるかに良い解です。 .Sh パスワードファイルの安全性を高める できるだけ多くのパスワードを\ * で外し、それらのアカウントのアクセスには ssh や kerberos を使うようにすることが、唯一の確実な方法です。たとえ暗号化 パスワードファイル .Pq Pa /etc/spwd.db が root でのみ読み出し可能だとしても、 侵入者がそのファイルの読み出しアクセス権限を得ることは可能かもしれません。 たとえ root の書き込み権限が得られないにしてもです。 .Pp セキュリティスクリプトは常にパスワードファイルの変更をチェックし、報告 するようにすべきです (後述の「ファイルの完全性のチェック」を参照して下さい)。 .Sh カーネルのコア、raw デバイス、ファイルシステムの安全性を高める root の権限を破ると、攻撃者は何でもできますが、 もっと簡便なこともいくつかあります。例えば、最近のカーネルは、 組み込みのパケット覗き見デバイス .Pq packet sniffing device ドライバを備えているものがほとんどです。 .Fx では .Sq bpf デバイスと呼ばれています。侵入者は普通、危険に晒された マシンでパケット覗き見プログラムを実行させようと試みます。侵入者に わざわざそういう機能を提供する必要はないので、ほとんどのシステムで bpf デバイスを組み込むべきではありません。 .Pp bpf デバイスを外し、モジュールローダを無効にしても、 .Pa /dev/mem と .Pa /dev/kmem という悩みの種がまだ残っています。この問題に関しては、侵入者は raw デバイスに書き込むこともできます。 また、 .Xr kldload 8 という、別のカーネル機能があります。 やる気まんまんの侵入者は、KLD モジュールを使って 自分独自の bpf もしくはその他覗き見デバイスを動作中のカーネルに インストールすることができます。 この問題を避けるため、システム管理者は カーネルをより高い安全レベル .Pq securelevel 、少なくとも安全レベル 1 で実行させる必要があります。 sysctl を使って kern.securelevel 変数に安全レベルを設定することが できます。ひとたび安全レベルに 1 を設定すると、 raw デバイスに対する書き込みアクセスは拒否され、例えば .Sq schg のような 特別な chflags フラグが効果を発揮します。これに加えて、 起動時において重要なバイナリ・ディレクトリ・スクリプトファイルなど、 安全レベルが設定されるまでの間に実行されるものすべてに対しても .Sq schg フラグを確実に on にしておく必要があります。この設定をやり過ぎても 構いませんが、より高い安全レベルで動作している場合、システムの アップグレードがはるかに困難になります。システムをより高い安全レベルで 実行させるようにするが、お天道さまの下にあるすべてのシステムファイルと ディレクトリに schg フラグを設定しないという妥協をする方法もあります。 もう一つの可能性としては、単純に / および /usr を読み込み専用でマウント することです。ここで特筆すべきことは、システムを守ろうとしてアテナイのドラコ のように厳しくしすぎると、侵入を検出するという非常に重要なことが できなくなってしまうということです。 .Sh ファイルの完全性のチェック: バイナリ、設定ファイルなど ことこの問題に至ると、システム管理者にできることは、 便利さという要素がその醜い頭を上げない程度に、 コアシステムの設定 / 制御ファイルを防御することだけです。 例えば、/ および /usr にある大部分のファイルに schg ビットを 設定するために chflags を使用するのは、おそらく逆効果でしょう。 なぜなら、そうすることでファイルは保護できますが、侵入を検出 する窓を閉ざしてしまうことにもなるからです。 セキュリティのタマネギの最後の層はおそらく最も重要なもの、すなわち検出です。 セキュリティの残りのものは、突然の侵入を検出できなければ、全然有用では ありません( あるいは、もっと悪ければ、間違った安全性に対する感覚を 植え付けてしまいます )。 タマネギの仕事の半分は、均衡状態にあるとき、攻撃中に検出側に攻撃者を 捕まえるきっかけを与えるため、攻撃者を食い止めるのではなく 侵入を遅らせることなのです。 .Pp 侵入を検出する最も良い方法は、変更されていたり、消えていたり、入れた覚えが ないのに入っているファイルを探すことです。 変更されたファイルを探すのに最も良い方法は、もう一つの ( しばしば中央に集められた ) アクセスが制限されたシステムから行なうものです。 さらに安全でアクセス制限されたシステム上でセキュリティ用スクリプトを書けば、 スクリプトは潜在的なクラッカー達からはほぼ見えなくなります。 これは重要なことです。 最大限に優位に立つために、一般的にビジネスで使う他のマシンへの重要な アクセスは、アクセスの制限されたマシンにやらせなくてはいけません。 普通は、他のマシンからアクセス制限されたマシンへ読み込み専用で NFS エクスポートしたり、アクセス制限されたマシンから他のマシンへ ssh を行なうために、ssh 鍵のペアを作ったりすることで行います。 ネットワークのトラフィックを別にして、NFS は最も可視性のない方法です。 事実上検出されない各クライアント上のファイルシステムを監視できるようになります。 アクセス制限されたサーバがスイッチを通してクライアントに接続する場合、 たいてい NFS がより良い選択肢です。アクセス制限されたサーバがハブを通したり、 いくつかのルーティング層を通したりしてクライアントに接続する場合、 NFS はあまりにも危険な方法かもしれず ( ネットワークの面で )、ssh の方が 認証の道筋は跡となって残りますが、それでもより良い方法かもしれません。 .Pp アクセス制限されたマシンに、少なくとも監視することを前提とした クライアントシステムへの読み込みアクセスをひとたび与えると、 実際に監視するためのスクリプトを書かなくてはいけません。 NFS マウントをすれば、 .Xr find 1 や .Xr md5 1 などの単純なシステムユーティリティでスクリプトを書くことができます。 少なくとも 1 日 1 回、クライアントのファイルを直接 md5 にかけ、 さらにもっと頻繁に .Pa /etc および .Pa /usr/local/etc にあるようなコントロール用ファイルを試験するのが一番です。 試験ファイルは、アクセス制限されたマシンが適性であると知っている、基となる md5 情報と比べて違いが見つかった場合、システム管理者に調べて欲しいと 訴えるようにするべきです。 優れたセキュリティ用スクリプトは、 .Pa / および .Pa /usr などのシステムパーティション上で不適当に suid されたバイナリや、 新たに作成されたファイルや削除されたファイルもチェックするのでしょう。 .Pp NFS ではなく、ssh を使用する場合は、セキュリティ用スクリプトを書くのはずっと 難しいことです。スクリプトをクライアントから見えるようにし、 動かすためには、クライアントに対して .Pa scp を必ず行わなくてはいけません。 そして、安全のため、スクリプトが使うバイナリ ( find など ) を scp する必要も あります。クライアントの ssh デーモンはすでに危険に晒されているかもしれません。 以上のことから、安全でないリンク上の場合は ssh は必要かもしれませんが、 ssh を扱うのはとても大変なことです。 .Pp 優れたセキュリティ用スクリプトは、ユーザやスタッフメンバの アクセス設定ファイルもチェックするものです。 .Pa .rhosts , .Pa .shosts , .Pa .ssh/authorized_keys などがそれですが、MD5 のチェックの範囲外になってしまうかもしれません。 .Pp ユーザ用のディスク容量が非常に大きい場合は、パーティション上の各ファイルを 見て回るのに大変な時間がかかるかもしれません。この場合は、マウントフラグを 設定して、このパーティションに suid されたバイナリやデバイスを置けないように するのが良い考えです。 .Sq nodev および .Sq nosuid オプション ( .Xr mount 8 参照) が調べたいものでしょう。私なら、ともかくも週に 1 度はファイルシステムを スキャンするでしょう。なぜなら、この層での目的は、侵入が意味があるかどうかに 関わらず、侵入を検出することだからです。 .Pp プロセスアカウンティング ( .Xr accton 8 参照) は、比較的オーバヘッドの低いオペレーティングシステムの機能で、 マシンに侵入されてしまった後の評価の仕組みとして使用することをお勧め します。 侵入を受けた後でも当該ファイルが無傷である場合に、 侵入者が実際にどのようにしてシステムに侵入したかを 追跡するのに特に有益です。 .Pp 最後に、セキュリティスクリプトはログファイルを処理するようにし、 ログファイル自体もできるだけ安全性の高い方法で .Sq リモート syslog は極めて有益になり得ます 生成するようにすべきです。侵入者は自分の侵入の痕跡を覆い隠そう としますし、また、ログファイルはシステム管理者が最初の侵入の時 刻と方法を追跡してゆくために極めて重要です。 ログファイルを永久に残しておくための 1 つの方法は、システムコンソールを シリアルポートにつないで走らせ、コンソールを監視している安全なマシンを通して 絶えず情報を集めることです。 .Sh 偏執狂的方法 多少偏執狂的になっても決して悪いことにはなりません。原則的に、 システム管理者は、便利さに影響を与えない範囲でいくつでもセキュリティ 機能を追加することができます。また、いくらか考慮した結果、便利さに 影響を与えるセキュリティ機能を追加することもできます。 もっと重要なことには、セキュリティ管理者とは少し喧嘩になる はずなのですが、もしあなたが、このマニュアルページに書かれている 勧告をそのまま使用したりした場合は、 予想されるクラッカーはやはりこのマニュアルを読んでいるわけですから、 防御策を渡してしまうことになります。 .Sh サービス不能攻撃 (D.O.S. attack) についての特記事項 このセクションではサービス不能攻撃を扱います。サービス不能攻撃は、普通は、 パケット攻撃です。ネットワークを飽和させる最先端の偽造パケット .Pq spoofed packet 攻撃に対してシステム管理者が打てる手はそれほど多く ありませんが、一般的に、その種の攻撃によってサーバがダウン しないことを確実にすることで、被害をある限度に食い止める ことはできます。 .Bl -enum -offset indent .It サーバの fork の制限 .It 踏み台攻撃の制限 .Pq ICMP 応答攻撃、ping broadcast など .It カーネルの経路情報のキャッシュ .El .Pp 普通に見られるサービス不能攻撃に、fork するサーバプロセスに対する ものがあります。これは、サーバにプロセス・ファイル記述子・メモリを 食い尽くさせて、マシンを殺そうとするものです。 inetd ( .Xr inetd 8 参照) には、この種の攻撃を制限するオプションがいくつかあります。マシンが ダウンすることを防止することは可能ですが、この種の攻撃によりサービスが 崩壊することを防止することは一般的に言ってできないことに注意する必要が あります。inetd のマニュアルページを注意深く読んで下さい。特に、 .Fl c , .Fl C , .Fl R オプションに注意して下さい。IP 偽造攻撃 (spoofed-IP attack) は inetd の .Fl C オプションの裏をかけるので、一般にオプションを 組み合わせて使用するべきであることに注意して下さい。スタンドアロンサーバ の中には、自分自身で fork を制限するパラメータを持っているものがあります。 .Pp sendmail には、 .Fl OMaxDaemonChildren オプションがあります。負荷には遅れがあるので、 sendmail の負荷に限界を設けるオプションを使うよりも、 このオプションを使う方がまともに動作する可能性ははるかに高いです。 sendmail の実行を開始する際に、 .Cm MaxDaemonChildren パラメータを設定するべきです。その値は、 通常見込まれる負荷を扱える程度に十分高いが、 それだけの数の sendmail を操作しようとすると マシンが卒倒してしまうほどには高くないような値に設定するべきです。 sendmail をキュー処理モード .Pq Fl ODeliveryMode=queued で実行することや、 sendmail デーモン .Pq Cm sendmail -bd をキュー処理用プロセス .Pq Cm sendmail -q15m と別に実行することも、用心深いことと言えます。それでもなおリアルタイムでの 配送を望むのであれば、 .Fl q1m のようにすることで、キュー処理をはるかに短い時間間隔で 行うことができます。いずれにしても、 .Cm MaxDaemonChildren オプションに 合理的な値を確実に指定して、sendmail がなだれをうって失敗することが ないようにして下さい。 .Pp syslogd は直接攻撃される可能性があるので、可能ならばいつでも .Fl s オプションを用いることを強く推奨します。これができないなら、 .Fl a オプションを使って下さい。 .Pp tcpwrapper の逆 identd などの接続返し (connect-back) を行うサービスに ついては十分注意を払うようにするべきです。これらは直接攻撃を受ける可能性が あります。こういう事情があるので、tcpwrapper の逆 ident 機能を使おうとは 思わないのが一般的です。 .Pp 境界ルータのところでファイアウォールを設けて、外部からのアクセスに対して 内部サービスを防御するという考えは実によいものです。この考えは、LAN の外部 からの飽和攻撃を防ぐことにあり、root ネットワークベースの root 権限への攻撃から内部サービスを防御することには、あまり考慮を払って いません。ファイアウォールは常に排他的に設定して下さい。つまり、 「ポート A, B, C, D と M から Z まで .Eo * 以外 .Ec * のすべてにファイアウォールを設ける」というふうにです。 このようにすることで、named (ゾーンのプライマリである場合), ntalkd, sendmail など、インターネットにアクセスを提供するサービス として特に指定するもの以外の、小さい番号のポートすべてをファイアウォールで 防御することができます。ファイアウォールをこの他のやり方、つまり 包含的もしくは受容的なファイアウォールとして設定しようとする場合、 .Sq close することを忘れてしまうサービスがいくつか出てきたり、新しい内部サービスを 追加したのにファイアウォールの更新を忘れたりする可能性がよく出てきます。 ファイアウォール上の大きい番号のポートを開けておいて、小さい番号のポートを 危険に晒すことなく受容的な動作を許すことができます。 .Fx では、net.inet.ip.portrange への sysctl .Pq Li "sysctl -a | fgrep portrange" をいろいろ使用することで、 動的バインドに使用されるポート番号の範囲を制御できることを記憶にとどめて おいて下さい。これによりファイアウォールの設定の複雑性を緩和できます。 私は、ファイアウォールに通常のfirst/last の範囲として、 4000 から 5000 を、 高位ポートの範囲として、49152 から 65535 を使用しています。そして、 (いくつかのインターネットアクセス可能なポートを ブロックから除外するのはもちろんですが) 4000 より下のすべてをブロックしています。 .Pp また別のありふれたサービス不能攻撃として、踏み台攻撃 (springboard attack) と呼ばれるものがあります。これは、サーバが自分自身、ローカルネットワーク、 そして他のマシンを過負荷に追い込むような応答を生成させる方法でサーバを 攻撃します。この種の攻撃の中で最もありふれたものは、ICMP PING BROADCAST 攻撃があります。攻撃者は、実際に攻撃したいマシンのアドレスをソース アドレスに設定した ping パケットを偽造して、対象の LAN の ブロードキャストアドレスに向けてパケットを送信します。境界にあるルータが ブロードキャストアドレスに対する ping パケットを握り潰すように設定されていない 場合、LANは、詐称されたソースアドレスに向けて応答パケットを生成するはめになり、犠牲となるマシンが飽和するところまで行ってしまいます。攻撃者が同じトリックを 異なるネットワーク上のいくつものブロードキャスト アドレスに対して同時に使用した場合、とくにひどいことになります。 これまでに、120 メガビット以上のブロードキャスト攻撃が観測されています。 2 番目の踏み台攻撃は、ICMP エラー報告の仕掛けを狙うものです。ICMP エラー 応答を生成するパケットを生成することにより、攻撃者はサーバの 受信ネットワークを飽和させることができ、同時に、サーバが送信 ネットワークを ICMP 応答で飽和させるようにすることができます。 mbuf を消費し尽くさせることにより、この種の攻撃でサーバを クラッシュさせることも可能です。サーバの ICMP 応答生成が速過ぎて、 ICMP 応答の送信が追い付かない場合、とくにひどいことになります。 .Fx カーネルには、この種の攻撃の効果を抑制する ICMP_BANDLIM と 呼ばれる新しいコンパイルオプションがあります。 3つめの主要なクラスに属す踏み台攻撃は、udp echo サービスのような、 ある種の内部 inetd サービスに関連するものです。攻撃者は、単に ソースアドレスがサーバ A の echo ポートであり、ディスティネーション アドレスがサーバ B の echo ポートであるかのように UDP パケットを 偽造します。ここでサーバ A, B はともに自分の LAN に接続されています。 この 2 つのサーバは、この一つのパケットを両者の間で互いに相手に対して 打ち返しあいます。このようにしてパケットをいくつか注入するだけで、 攻撃者は両方のサーバと LAN を過負荷状態にすることができます。 同様の問題が内部 chargen ポートにも存在します。有能なシステム管理者は この手の inetd 内部テストサービスのすべてを無効にしておくものです。 .Pp 偽造パケット攻撃は、カーネルの経路情報キャッシュに過負荷を生じさせるために 用いられることもあります。net.inet.ip.rtexpire, rtminexpire, rtmaxcache の sysctl パラメータを参照して下さい。でたらめなソース IP を用いた この偽造パケット攻撃により、カーネルは、一時的なキャッシュ経路を 経路情報テーブルに生成します。これは .Sq netstat -rna \&| fgrep W3 で見ることができます。これらの経路は、普通は 1600 秒程度でタイムアウトに なります。カーネルがキャッシュ経路テーブルが大きくなり過ぎたことを 検知すると、カーネルは動的に rtexpire を減らしますが、rtminexpire より 小さくなるようには決して減らしません。ここに問題が 2 つあります。 (1) 負荷の軽いサーバが突然攻撃された場合、カーネルが十分素早く反応 できないこと。(2) カーネルが攻撃に耐え生き延びられるほど十分 rtminexpire が低く設定されていないこと。の2つです。 自分のサーバが T3 もしくはそれより 良質の回線でインターネットに接続されている場合、 .Xr sysctl 8 を用いて rtexpire と rtminexpire とを手動で上書きしておくことが思慮深いこと といえます。 (自分のマシンをクラッシュさせたくないのであれば :-)) どちらか一方でも 0 に は決してしないで下さい。両パラメータを 2 秒に設定すれば、 攻撃から経路情報テーブルを守るには十分でしょう。 .Sh kerberos および ssh を用いたアクセスの問題 もしあなたが、kerberos および ssh を使用したいのだとしたら、両者に関して 言っておく必要のある問題がいくつかあります。 kerberos V は大変優れた認証プロトコルですが、kerberos 処理された telnet や rlogin は、バイナリストリームを扱うのに不向きになってしまうようなバグがあります。 さらに、デフォルトでは、kerberos は .Fl x オプションを使わない限りセッションを暗号化してくれません。 ssh では、デフォルトですべてを暗号化してくれます。 .Pp ssh はあらゆる場面でとても良く働いてくれます。ただし、 暗号鍵を送ってしまう場合を除けばです。これはつまり、暗号鍵を持った安全な ワークステーションがあって、この暗号鍵で残りのシステムとアクセスできる ようになっている場合では、安全でないマシンへ ssh を行なう時に暗号鍵が 見えてしまうということです。実際の鍵そのものが見えてしまうわけでは ありませんが、ssh は、login を持続させるために配送用ポートを作ります。 クラッカーが安全でないマシンの root を破ると、クラッカーは、 このポートを使って暗号鍵を取得し、暗号鍵でロックの外れる他のマシンへの アクセスを得ます。 .Pp staff のログインには、kerberos を組み合せた ssh を使用することを勧めます。 ssh は、kerberos と一緒にコンパイルできます。こうすると、見えて しまうかもしれない ssh 鍵をあまりあてにしないで良いようになります。 また、それと同時に、kerberos 経由でパスワードを保護することもできます。 ssh 鍵は、安全なマシンからの自動化されたタスク (kerberos では不向きな ものなど ) 用のみに使用するべきです。また、ssh の設定で ssh 鍵を送らないようにするか、あるいは、 .Pa authorized_keys ファイル中で .Pa "from=IP/DOMAIN" オプションを使用して、特定のマシンからログインしてきたもののみに 有効になる鍵を ssh が生成できるようにすることも勧めます。 .Sh 関連項目 .Xr chflags 1 , .Xr find 1 , .Xr md5 1 , .Xr netstat 1 , .Xr openssl 1 , .Xr ssh 1 , .Xr xdm 1 , .Xr group 5 , .Xr ttys 5 , .Xr accton 8 , .Xr init 8 , -.Xr kerberos 8 , .Xr sshd 8 , .Xr sysctl 8 , .Xr syslogd 8 , .Xr vipw 8 .Sh 歴史 .Nm マニュアルページは、もともと .An Matthew Dillon によって書かれました。 最初に現れたのは、 .Fx 3.1 で 1998 年 12 月のことです。 .\" translated by Norihiro Kumagai, 98-12-29