Catch up with 5.2-CURRENT-20040625-JPSNAP

Reviewed by:   Watanabe Kazuhiro <CQG00620@nifty.ne.jp>
Approved by:   kuriyama (mentor/implicitly)
This commit is contained in:
SUZUKI Koichi 2004-08-08 01:13:57 +00:00
parent 7116bf0a5c
commit 2b76bcefed
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=21857
7 changed files with 461 additions and 240 deletions

View file

@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man7/build.7,v 1.24 2003/11/16 15:16:19 simon Exp %
.\" %FreeBSD: src/share/man/man7/build.7,v 1.25 2004/06/16 08:33:56 ru Exp %
.\"
.\" $FreeBSD$
.Dd March 15, 2002
@ -149,7 +149,7 @@ makefile
make buildworld
make buildkernel KERNCONF=FOO
make installkernel KERNCONF=FOO
.Aq 新規カーネルをシングルユーザモードでリブート
<新規カーネルをシングルユーザモードでリブート>
make installworld
mergemaster
.Ed

View file

@ -2,7 +2,7 @@
.\" the BSD Copyright as specified in the file "/usr/src/COPYRIGHT" in
.\" the source tree.
.\"
.\" %FreeBSD: src/share/man/man7/firewall.7,v 1.18 2003/04/26 09:30:34 brueffer Exp %
.\" %FreeBSD: src/share/man/man7/firewall.7,v 1.19 2004/06/16 08:33:56 ru Exp %
.\" $FreeBSD$
.Dd May 26, 2001
.Dt FIREWALL 7
@ -353,8 +353,8 @@ add 06000 deny all from any to any
.Xr dummynet 4 ,
.Xr ipnat 5 ,
.Xr rc.conf 5 ,
.Xr smb.conf 5 [ /usr/ports/net/samba ] ,
.Xr samba 7 [ /usr/ports/net/samba ] ,
.Xr smb.conf 5 Pq Pa ports/net/samba ,
.Xr samba 7 Pq Pa ports/net/samba ,
.Xr config 8 ,
.Xr ipfw 8 ,
.Xr jail 8 ,

View file

@ -30,10 +30,10 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)hier.7 8.1 (Berkeley) 6/5/93
.\" %FreeBSD: src/share/man/man7/hier.7,v 1.97 2004/04/14 16:06:19 harti Exp %
.\" %FreeBSD: src/share/man/man7/hier.7,v 1.103 2004/06/21 14:43:09 mpp Exp %
.\"
.\" $FreeBSD$
.Dd June 5, 1993
.Dd June 13, 2004
.Dt HIER 7
.Os
.Sh 名称
@ -41,7 +41,7 @@
.Nd ファイルシステムのレイアウト
.Sh 解説
ファイルシステムの階層構成についての概略です。
.Bl -tag -width "/stand/"
.Bl -tag -width ".Pa /libexec/"
.It Pa /
ファイルシステムのルートディレクトリ。
.It Pa /bin/
@ -51,7 +51,7 @@
オペレーティングシステムのブートストラップ中に使用される
プログラムと設定ファイル。
.Pp
.Bl -tag -width defaults/ -compact
.Bl -tag -width ".Pa defaults/" -compact
.It Pa defaults/
デフォルトのブートストラップ用設定ファイル。
.Xr loader.conf 5
@ -92,7 +92,7 @@ CD-ROM
.It Pa /etc/
システムの設定ファイル、およびスクリプト。
.Pp
.Bl -tag -width "disklabels/" -compact
.Bl -tag -width ".Pa defaults/" -compact
.It Pa defaults/
デフォルトのシステム設定ファイル。
.Xr rc 8
@ -149,6 +149,12 @@ OpenSSL
.Pa /sbin
のバイナリに必要な、重要なシステムライブラリ。
.Pp
.Bl -tag -width ".Pa geom/" -compact
.It Pa geom/
.Xr geom 8
ユーティリティ用のクラス特有のライブラリ。
.El
.It Pa /libexec/
.Pa /bin
@ -178,7 +184,7 @@ root
.It Pa /usr/
ユーザ用ユーティリティ、およびアプリケーションの大部分を含む。
.Pp
.Bl -tag -width "libdata/" -compact
.Bl -tag -width ".Pa libdata/" -compact
.It Pa bin/
一般的なユーティリティ、プログラミングツール、アプリケーション。
.It Pa compat/
@ -191,7 +197,9 @@ Linux
.It Pa include/
標準 C 言語インクルードファイル。
.Pp
.Bl -tag -width "kerberos5/" -compact
.Bl -tag -width ".Pa kerberos5/" -compact
.It Pa altq/
ALTQ 用の C 言語インクルードファイル。
.It Pa arpa/
インターネットサービスプロトコルのための C 言語インクルードファイル。
.It Pa bsnmp/
@ -199,7 +207,7 @@ SNMP
.It Pa cam/
Common Access Methods Layer 用
C インクルードファイル。
.Bl -tag -width "kerberos5/" -compact
.Bl -tag -width ".Pa kerberos5/" -compact
.It Pa scsi/
CAM 上の SCSI デバイス。
.El
@ -207,7 +215,7 @@ CAM
様々な
.Fx
デバイスのプログラミング用の C インクルードファイル。
.Bl -tag -width "kerberos5/" -compact
.Bl -tag -width ".Pa kerberos5/" -compact
.It Pa ic/
ドライバ/バス独立なハードウェア回路を記述する、様々なヘッダファイル。
.It Pa ofw/
@ -227,7 +235,7 @@ ATM
WaveLAN ドライバ。
.El
.It Pa fs/
.Bl -tag -width "kerberos5/" -compact
.Bl -tag -width ".Pa kerberos5/" -compact
.It Pa fdescfs/
プロセス毎のファイル記述子ファイルシステム。
.It Pa fifofs/
@ -256,14 +264,27 @@ uid/gid
.El
.It Pa g++/
GNU C++ 言語インクルードファイル。
.Bl -tag -width "kerberos5/" -compact
.Bl -tag -width ".Pa kerberos5/" -compact
.It Pa std/
GNU C++ 言語 libstdc++ インクルードファイル。
.El
.It Pa geom/
GEOM フレームワーク。
.Bl -tag -width ".Pa kerberos5/" -compact
.It Pa concat/
CONCAT GEOM クラス。
.It Pa gate/
GATE GEOM クラス。
.It Pa nop/
NOP GEOM クラス。
.It Pa stripe/
STRIPE GEOM クラス。
.El
.Pp
.It Pa isc/
ISC ユーティリティライブラリ libisc インクルードファイル。
.It Pa isofs/
.Bl -tag -width "kerberos5/" -compact
.Bl -tag -width ".Pa kerberos5/" -compact
.It Pa cd9660/
iso9660 形式ファイルシステム。
.El
@ -335,7 +356,7 @@ PAM
.\" Tcl 言語。
.\" .Xr Tcl n
.\" 参照。
.\" .Bl -tag -width "kerberos5/" -compact
.\" .Bl -tag -width ".Pa kerberos5/" -compact
.\" .It Pa generic/
.\" ???
.\" .It Pa unix/
@ -343,7 +364,7 @@ PAM
.\" .El
.It Pa ufs/
UFS (U-word File System) 用 C 言語インクルードファイル。
.Bl -tag -width "kerberos5/" -compact
.Bl -tag -width ".Pa kerberos5/" -compact
.It Pa ffs/
Fast filesystem。
.It Pa ufs/
@ -431,7 +452,7 @@ ports
.It Pa share/
アーキテクチャに依存しないファイル。
.Pp
.Bl -tag -width "calendar/" -compact
.Bl -tag -width ".Pa calendar/" -compact
.It Pa calendar/
事前に組み立てられた calendar ファイルいろいろ。
.Xr calendar 1
@ -566,7 +587,7 @@ MIB
syscons が使用するファイル。
.Xr syscons 4
参照。
.Bl -tag -width "scrnmaps/xx" -compact
.Bl -tag -width ".Pa scrnmaps/" -compact
.It Pa fonts/
コンソールフォント。
.Xr vidcontrol 1
@ -604,7 +625,7 @@ syscons
.Bx
とサードパーティとローカルのソースファイル。
.Pp
.Bl -tag -width "kerberos5/" -compact
.Bl -tag -width ".Pa kerberos5/" -compact
.It Pa bin/
/bin 内のファイルのソース。
.It Pa contrib/
@ -648,7 +669,7 @@ Kerberos version 5
.It Pa X11R6/
X11R6 配布パッケージの実行可能形式ファイル、ライブラリなど
(オプション扱い)。
.Bl -tag -width "include/" -compact
.Bl -tag -width ".Pa include/" -compact
.It Pa bin/
X11R6 のバイナリ (サーバ、ユーティリティ、ローカルな packages/ports)。
.It Pa etc/
@ -667,7 +688,7 @@ X11R6
さまざまな用途のログファイル、一時ファイル、遷移的ファイル、
スプールファイル。
.Pp
.Bl -tag -width "preserve/" -compact
.Bl -tag -width ".Pa preserve/" -compact
.It Pa account/
システムアカウンティングファイル。
.Pp
@ -682,7 +703,7 @@ X11R6
指定した時間に動くコマンドのスケジュールファイル。
.Xr \&at 1
参照。
.Bl -tag -width "preserve/" -compact
.Bl -tag -width ".Pa preserve/" -compact
.It Pa jobs/
ジョブファイルを含むディレクトリ。
.It Pa spool/
@ -701,7 +722,7 @@ X11R6
cron が使用するファイル。
.Xr cron 8
参照。
.Bl -tag -width "preserve/" -compact
.Bl -tag -width ".Pa preserve/" -compact
.It Pa tabs/
crontab ファイル。
.Xr crontab 5

View file

@ -23,10 +23,10 @@
.\" (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/ports.7,v 1.41 2003/11/12 08:26:08 brueffer Exp %
.\" %FreeBSD: src/share/man/man7/ports.7,v 1.45 2004/06/16 07:29:21 krion Exp %
.\"
.\" $FreeBSD$
.Dd January 25, 1998
.Dd June 16, 2004
.Dt PORTS 7
.Os
.Sh 名称
@ -113,6 +113,11 @@ port
.Cm install
を指定するだけでよいはずです。
.Bl -tag -width ".Cm configure"
.It Cm config
.Xr dialog 1
を使用して、この port の
.Va OPTIONS
を設定します。
.It Ar fetch
.Va MASTER_SITES
@ -170,8 +175,16 @@ package
.Pp
次のターゲットは、通常のインストールプロセスでは実行されません。
.Bl -tag -width ".Cm fetch-recursive"
.It Cm showconfig
この port の
.Va OPTIONS
設定を表示します。
.It Cm rmconfig
この port の
.Va OPTIONS
設定を削除します。
.It Cm fetch-list
この port を構築するために取得が必要なファイルのリストを表示します。
この port を構築するために取得されるファイルのリストを表示します。
.It Cm fetch-recursive
この port と依存するものの distfile を取得します。
.It Cm fetch-recursive-list
@ -236,11 +249,25 @@ package
.Pa INDEX
ファイルを、
.Cm key
(port の名前、コメント、依存を調べます) または
(port の名前、コメント、依存関係を調べます)、
.Cm name
(port の名前のみを調べます) の
(port の名前のみを調べます)、
.Va path
(port のパスを調べます)、
.Va info
(port の情報を調べます)、
.Va maint
(port のメンテナを調べます)、
.Va cat
(port のカテゴリを調べます)、
.Va bdeps
(port の構築依存関係を調べます)、
.Va rdeps
(port の実行依存関係を調べます) などの
.Xr make 1
変数で指定されたパターンで検索します。
変数や、その逆の意味をもつ
.Va xname , xkey
などで指定されたパターンで検索します。
例えば、次のように入力します:
.Pp
.Dl "cd /usr/ports && make search name=query"
@ -250,6 +277,36 @@ package
に適合するものが探されます。
結果には、適合する ports のパス、コメント、メンテナ、構築依存、実行依存が
含まれます。
.Bd -literal -offset indent
cd /usr/ports && make search name=pear- \e
xbdeps=apache
.Ed
.Pp
名前に
.Dq Li pear-
を含み、apache が構築依存関係に含まれていないすべての ports を検索します。
.Bd -literal -offset indent
cd /usr/ports && make search name=pear- \e
xname='ht(tp|ml)'
.Ed
.Pp
名前に
.Dq Li pear-
を含みますが、
.Dq Li html
.Dq Li http
は含まないすべての ports を検索します。
.Bd -literal -offset indent
make search key=apache display=name,path,info keylim=1
.Ed
.Pp
.Dq Li apache
が名前、パス、情報フィールドのどれかに含まれるすべての ports を検索します。
他のレコードは無視します。
.It Cm describe
.Pa INDEX
ファイル中で使用される、各 port の 1 行説明を生成します。
.It Cm index
.Pa /usr/ports/INDEX
を作成します。
@ -258,13 +315,15 @@ package
および
.Cm search
のターゲットで使用されます。
CVS リポジトリのマスタ
.Pa INDEX
ファイルは定期的に更新されますが、
.Cm index
ターゲットを実行することで、
.Pa INDEX
ファイルが ports ツリーに対して最新であることを保証します。
.It Cm fetchindex
.Fx
クラスタから
.Pa INDEX
ファイルを取得します。
.El
.Sh 環境変数
これら環境変数のすべてを変更することができます。
@ -347,6 +406,17 @@ package
.It Va BATCH
これが設定されている場合、100% 自動的にインストールできる port にのみ
動作します。
.It Va OPTIONS
定義されている場合、この port が受け付ける
.Va WITH_*
オプションのリストです。
.Em 注意 :
.Va OPTIONS
が実際にちゃんと動作するには、
.Va WITH_*
変数をテストし始める前に
.Pa bsd.port.pre.mk
をインクルードする必要があります。
.El
.Sh 関連ファイル
.Bl -tag -width ".Pa /usr/ports/Mk/bsd.port.mk" -compact

View file

@ -22,7 +22,7 @@
.\" 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.35 2004/01/28 21:07:36 jhb Exp %
.\" %FreeBSD: src/share/man/man7/release.7,v 1.38 2004/06/21 14:43:09 mpp Exp %
.\" $FreeBSD$
.\"
.\" WORD: clean system まっさらのシステム[release.7]
@ -293,6 +293,28 @@ CVS
.It Va MAKE_ISOS
これを定義した場合、CD-ROM ステージのディレクトリの内容から、
ブータブル ISO CD-ROM イメージを生成します。
.It Va DISC1_LABEL
disc1 の内容から生成される CD-ROM 用に使われるラベルです。
デフォルトは
.Dq Li fbsd_miniinst
です。
.It Va DISC1_NAME
disc1 の内容から生成される CD-ROM の ISO の
ファイル名の一部として使用される名前です。
デフォルトは
.Dq Li miniinst
です。
.It Va DISC2_LABEL
disc2 の内容から生成される CD-ROM 用に使われるラベルです。
デフォルトは
.Dq Li fbsd_livefs
です。
.It Va DISC2_NAME
disc2 の内容から生成される CD-ROM の ISO の
ファイル名の一部として使用される名前です。
デフォルトは
.Dq Li disc2
です。
.It Va NOCDROM
定義した場合、CD-ROM ステージのディレクトリを生成しません。
.It Va NODOC

View file

@ -2,7 +2,7 @@
.\" the BSD Copyright as specified in the file "/usr/src/COPYRIGHT" in
.\" the source tree.
.\"
.\" %FreeBSD: src/share/man/man7/security.7,v 1.34 2004/02/18 18:52:09 ceri Exp %
.\" %FreeBSD: src/share/man/man7/security.7,v 1.37 2004/06/15 12:48:50 ru Exp %
.\"
.\" $FreeBSD$
.Dd September 18, 1999
@ -10,14 +10,16 @@
.Os
.Sh 名称
.Nm security
.Nd FreeBSD におけるセキュリティ入門
.Nd
.Fx
におけるセキュリティ入門
.Sh 解説
セキュリティは、システム管理者とともに始まり、システム管理者と
ともに終る機能です。
.Bx
マルチユーザシステムは、昔ながらのセキュリティをいくらかは備えて
いますが、さらなるセキュリティ機構を組み込んで維持していくことで、ユーザを
.Sq 正直に
.Dq 正直に
し続ける仕事は、システム管理者の最も大きな責務の一つでしょう。マシンは、
管理者が設定しただけのセキュリティしか示しません。セキュリティに関する
問題は、むしろ、便利さを求める人間との競合問題です。一般に、
@ -37,15 +39,15 @@
検出が妨げられることになるでしょう。どんなセキュリティ機構でも、
侵入の検出をすることが唯一とても重要なことなのですから。
例えば、システムの各バイナリに
.Pa schg
.Cm schg
フラグ (
.Xr chflags 1
参照)
を設定するのは大して意味がありません。フラグを設定すると、一時的には
バイナリを保護することができますが、侵入してきたクラッカーが、
マシンのセキュリティ機構がクラッカーの侵入を全く検知できなくなるような
変更ではあるが、管理者が容易に検出できるような変更をできなくしてしまう
からです。
を設定するのは大して意味がありません。
このフラグを設定すると、一時的にはバイナリを保護することができますが、
侵入してきた攻撃者が容易に検知可能な変更をすることを妨げてしまい、
結果として、マシンのセキュリティ機構が攻撃者を
まったく検知できなくなってしまうからです。
.Pp
システムセキュリティには、さまざまな形での攻撃に対処することも
ついて回ります。攻撃には、root を破ろうとはしないが、システムを
@ -54,7 +56,7 @@
セキュリティに関する問題は、いくつかのカテゴリに分類することができます。
.Bl -enum -offset indent
.It
サービス不能攻撃
サービス不能攻撃 (DoS)
.It
ユーザアカウントにかかる危険
.It
@ -84,7 +86,11 @@
インターネット回線をいっぱいにしてしまうことはできます。
.Pp
ユーザアカウントを危険に晒してしまう問題は、サービス不能攻撃よりもずっとよくある
問題です。このご時勢でも、自分たちのマシンで標準の telnetd, rlogind, rshd, ftpd
問題です。このご時勢でも、自分たちのマシンで標準の
.Xr telnetd 8 ,
.Xr rlogind 8 ,
.Xr rshd 8 ,
.Xr ftpd 8
サーバを実行させているシステム管理者は多いのです。これらの
サーバは、デフォルトでは、暗号化されたコネクション上で動作していません。
その結果、抱えているユーザ数が標準くらいであれば、リモートログイン
@ -112,27 +118,27 @@ root
しれません。攻撃者が root の権限で実行されるサーバのバグを見つけ、
ネットワークからそのサーバへ接続して root の権限を破ることができるかも
しれません。ひとたびユーザアカウントを破ると、ユーザアカウントから
root の権限を破ることが可能であるというバグを持つ suid-root プログラムの
root の権限を破ることが可能であるというバグを持つ SUID-root プログラムの
存在を、攻撃者は知っているかもしれません。
あるマシン上で、攻撃者が root の権限を破る方法を知ったとすると、
攻撃者は、裏口を作る必要などないかもしれません。
発見され、ふさがれた root の穴の多くには、クラッカーが侵入した跡を消そうとして
発見され、ふさがれた root の穴の多くには、攻撃者が侵入した跡を消そうとして
たくさん仕事した結果が含まれています。
そのためにこそ、多くのクラッカーは裏口を作るのです。この裏口は、クラッカー
検出をするのに便利なやり方です。クラッカーに裏口を作らせないようにする
そのためにこそ、多くの攻撃者は裏口を作るのです。この裏口は、攻撃者
検出をするのに便利なやり方です。攻撃者に裏口を作らせないようにする
ということは、セキュリティにとっては実際には良くないことかもしれません。
なぜなら、そうすることで、クラッカーが最初に侵入してくるために発見した
なぜなら、そうすることで、攻撃者が最初に侵入してくるために使用した
セキュリティホールがふさがるわけではないからです。
.Pp
セキュリティを改善する方法は、常に、
.Sq タマネギの皮剥き
.Dq タマネギの皮剥き
のように
複数の層のアプローチで実装されるべきです。これらは次のように分類できます。
.Bl -enum -offset indent
.It
root とスタッフのアカウントの安全性を高める。
.It
root の安全性を高める - root 権限のサーバと suid/sgid バイナリ。
root の安全性を高める \(em root 権限のサーバと SUID/SGID バイナリ。
.It
ユーザアカウントの安全性を高める。
.It
@ -149,20 +155,30 @@ root
うんぬんしてもしかたがありません。ほとんどのシステムでは、root アカウントに
割り当てたパスワードが 1 つあります。まず最初にすべきことは、
このパスワードは
.Sq いつでも
.Em いつでも
危険に晒されていると仮定することです。
ここでは、root のパスワードを消すべきだと言っているのではありません。
パスワードは、マシンにコンソールからアクセスするのには、ほとんどいつでも
必要なものです。ここで言いたいのは、コンソール以外からは、おそらくは、
.Xr su 1
コマンドを用いてすらパスワードを使えるようにするべきではないということです。
例えば、pty が、
.Sq Pa /etc/ttys
ファイルで安全でないものと指定されているのかを確認してください。
そうすることで、telnet や rlogin 越しに root でログインできないようになります。
sshd のような、別のログインサービスを使っている場合でも同様に、
ユーティリティを用いてすらパスワードを使えるようにするべきではないと
いうことです。
例えば、PTY が、
.Pa /etc/ttys
ファイルで
.Dq Li unsecure
と指定されているかを確認してください。
そうすることで、
.Xr telnet 1
.Xr rlogin 1
越しに root でログインできないようになります。
.Xr sshd 8
のような、別のログインサービスを使っている場合でも同様に、
直接 root へログインすることを許していないかどうか確認してください。
アクセスする手段、例えば ftp のようなサービスが、たびたびクラックの手に落ちる
アクセスする手段、例えば
.Xr ftp 1
のようなサービスが、たびたびクラックの手に落ちる
ことを考えてみてください。root に直接ログインできるのは、システムコンソール
を通したときのみにすべきです。
.Pp
@ -173,45 +189,61 @@ sshd
適切なスタッフアカウントを (
.Pa /etc/group )
wheel グループに加えることがあります。
wheel グループに置かれたスタッフメンバには、
.Sq su
.Dq Li wheel
グループに加えることがあります。
.Li wheel
グループに置かれたスタッフメンバには、
.Xr su 1
を使って root になることが許されます。パスワードエントリにおいて、
スタッフメンバを wheel グループを置くことで、スタッフメンバに
wheel のアクセス権を与えてはいけません。スタッフメンバのアカウントは
.Sq staff
に置くべきです。そして
.Sq Pa /etc/group
ファイルを通して wheel グループに加えるべきです。
実際に root アクセスの必要な staff メンバのみ wheel グループに置くように
すべきです。kerberos のような認証方法を使用する場合、root アカウントで
.Sq Pa .k5login
ファイルを使って、誰も wheel グループに置く必要なく root に
スタッフメンバを
.Li wheel
グループを置くことで、スタッフメンバに
.Li wheel
のアクセス権を与えてはいけません。スタッフメンバのアカウントは
.Dq Li staff
グループに置くべきです。そして
.Pa /etc/group
ファイルを通して
.Li wheel
グループに加えるべきです。
実際に root アクセスの必要な staff メンバのみ
.Li wheel
グループに置くように
すべきです。Kerberos のような認証方法を使用する場合、root アカウントで
.Pa .k5login
ファイルを使って、誰も
.Li wheel
グループに置く必要なく root に
.Xr ksu 1
を許すようにすることもできます。
このやり方はよりよい解決策なのかもしれません。なぜなら、wheel のメカニズム
このやり方はよりよい解決策なのかもしれません。なぜなら、
.Li wheel
のメカニズム
では、侵入者がパスワードファイルを手に入れ、staff アカウントのいずれか
1 つを破ることができると、root を破ることがまだできてしまうからです。
wheel のメカニズムを用いる方が、何もしないよりは良いのですが、必ずしも
.Li wheel
のメカニズムを用いる方が、何もしないよりは良いのですが、必ずしも
最も安全な選択肢とは限りません。
.Pp
root アカウントの安全性を高める間接的な方法として、別のログインアクセス
の方法を用いて、スタッフのアカウントの暗号化パスワードを\ * にして
おくことで、スタッフのアカウントの安全性を高めるものがあります。この方法
だと、侵入者がパスワードファイルを盗むことができるかもしれませんが、
スタッフアカウントを破ることはできないでしょう。また、たとえ root が暗号化
パスワードをパスワードファイルに付けていたとしても、間接的には root
アカウントも破ることができないでしょう。
だと、侵入者はパスワードファイルを盗むことができるかもしれませんが、
スタッフアカウントを破ることはできないでしょう。
また、たとえ root が暗号化パスワードをパスワードファイルに付けていたとしても、
root アカウントも破ることはできないでしょう
(もちろん、コンソールへの root によるアクセスが限定されているものとします)。
スタッフメンバがスタッフアカウントでログインする際には、
.Xr kerberos 1
.Xr ssh 1
のような、公開鍵 / 秘密鍵の鍵の組を使う
安全性の高いログインの仕組みを使います。kerberos のような仕掛けを使う場合、
一般に、kerberos サーバを実行するマシンと自分のデスクトップ
ワークステーションとの安全性を確保しなければなりません。ssh で
公開鍵 / 秘密鍵の組を使う場合、一般に、ログイン元マシン
(通常は自分のワークステーション)
安全性の高いログインの仕組みを使います。Kerberos のような仕掛けを使う場合、
一般に、Kerberos サーバを実行するマシンと自分のデスクトップ
ワークステーションとの安全性を確保しなければなりません。SSH で
公開鍵 / 秘密鍵の組を使う場合、一般に、ログイン
.Em
マシン (通常は自分のワークステーション)
の安全性を確保しなければなりません。ここで、
.Xr ssh-keygen 1
で公開鍵 / 秘密鍵の組を生成する際、鍵の組をパスワードで防御することにより、
@ -239,29 +271,36 @@ root
たない人々によって行われるという事実もまた、念頭に置いておく必要
があります。
.Pp
kerberos のような方法を使うことで、スタッフアカウントのパスワードの変更
Kerberos のような方法を使うことで、スタッフアカウントのパスワードの変更
もしくは停止を一箇所で行なうことと、スタッフメンバがアカウントを持つ
すべてのマシンに即時にその効果を及ぼすことが可能となります。スタッフメンバの
アカウントが危険に晒されたときに、すべてのマシンでスタッフメンバのパスワードを
即座に変更する能力を過小評価してはいけません。パスワードが分散されている状況では、
N 台のマシンでパスワードを変更すると、てんやわんやの事態を招く可能性が
あります。kerberos を使用すると、パスワードの再発行に制限
あります。Kerberos を使用すると、パスワードの再発行に制限
(re-passwording restriction)
を課することもできます。この機能を使うことにより、
ある kerberos チケットをしばらく経つとタイムアウトにすることが
ある Kerberos チケットをしばらく経つとタイムアウトにすることが
できるだけでなく、一定期間
(例えば、1 ヶ月に 1 回)
経つと、ユーザに新しいパスワードを選ぶように要求することもできます。
.Sh root の安全性を高める - root 権限のサーバと suid/sgid バイナリ
.Sh root の安全性を高める \(em root 権限のサーバと SUID/SGID バイナリ
用心深いシステム管理者は、自分に必要なサーバプロセスだけを過不足なく
実行させるものです。第三者製のサーバは、よくバグを持っていがちだと
いうことに注意して下さい。例えば、古いバージョンの imapd や popper
いうことに注意して下さい。例えば、古いバージョンの
.Xr imapd 8
.Xr popper 8
を実行させておくのは、全世界に共通の root の切符を与えてい
るようなものです。
自分で注意深くチェックしていないサーバは、決して実行してはいけません。
root で実行させる必要のあるサーバはほとんどありません。例えば、ntalk, comsat,
finger デーモンを、特別の「砂場
.Pq sandbox
root で実行させる必要のあるサーバはほとんどありません。
例えば、
.Xr talkd 8 ,
.Xr comsat 8 ,
.Xr fingerd 8
デーモンを、特別の「砂場
.Dq sandbox
」ユーザで実行させることができます。
.\"kuma hellofalot of trouble って何や?
.\" hell of a lot of trouble みたいですね。;-) (金ん田 '99.02.11)
@ -273,15 +312,28 @@ finger
それだけ攻撃者が侵入に成功する確率が減ります。root の抜け穴は
歴史的に、基本システムサーバも含め、
root 権限で実行されるほとんどすべてのサーバプロセスで発見されています。
ユーザが sshd 経由でのみログインし、
telnetd, rshd, rlogind 経由でログインすること
が決してないマシンを稼働させているのであれば、それらのサービスを停止させて下さい。
ユーザが
.Xr sshd 8
経由でのみログインし、
.Xr telnetd 8 ,
.Xr rshd 8 ,
.Xr rlogind 8
経由でログインすることが決してないマシンを稼働させているのであれば、
それらのサービスを停止させて下さい。
.Pp
.Fx
では、今では ntalkd, comsat, finger は砂場で実行させることが
では、今では
.Xr talkd 8 ,
.Xr comsat 8 ,
.Xr fingerd 8
は砂場で実行させることが
デフォルトになっています。次に砂場で実行させるべきプログラムの候補として、
.Xr named 8
があります。デフォルトの rc.conf ファイルには、named を砂場で実行する
があります。デフォルトの
.Pa rc.conf
ファイルには、
.Xr named 8
を砂場で実行する
ために必要な引数がコメントアウトされた形式で含まれています。新しい
システムをインストールしているか、それとも既存のシステムを
アップグレードして使っているかに依存しますが、砂場として使用する
@ -289,8 +341,12 @@ telnetd, rshd, rlogind
用心深いシステム管理者であれば、できるだけいつでも研究を怠らず、
サーバに砂場を仕込むものでしょう。
.Pp
通常、砂場で実行しないサーバが他にいくつかあります。sendmail, popper,
imapd, ftpd などです。これらのうちいくつかのサーバには代わりとなるも
通常、砂場で実行しないサーバが他にいくつかあります。
.Xr sendmail 8 ,
.Xr popper 8 ,
.Xr imapd 8 ,
.Xr ftpd 8
などです。これらのうちいくつかのサーバには代わりとなるも
のがありますが、
代わりのものをインストールするには、それだけ多くの仕事が必要になるので、
結局これらを喜んで入れてしまいます
@ -300,28 +356,30 @@ imapd, ftpd
を検出するためには、他の仕組みに頼らなくてはならないかもしれません。
.Pp
システムの root 権限の潜在的な穴で他に大きなものとして、システムに
インストールされた suid-root/sgid バイナリがあります。
これらのバイナリは、rloginのように、
.Pa /bin ,
.Pa /sbin ,
.Pa /usr/bin ,
.Pa /usr/sbin
インストールされた SUID-root/SGID バイナリがあります。
これらのバイナリは、
.Xr rlogin 1
のように、
.Pa /bin , /sbin , /usr/bin , /usr/sbin
に存在するものがほとんどです。
100% 安全なものは存在しないとはいえ、システムデフォルトの
suid/sgid バイナリは比較的安全といえます。それでもなお、root の穴が
SUID/SGID バイナリは比較的安全といえます。それでもなお、root の穴が
これらのバイナリにときおり発見されています。1998 年に Xlib で見つかった
root の穴は、xterm
(普通、suid 設定されています)
root の穴は、
.Xr xterm 1
(普通、SUID 設定されています)
を攻撃可能にしていました。
安全である方がよいので、用心深いシステム管理者は残念に思いながらも、
スタッフのみが実行する必要がある suid バイナリは、スタッフのみが
スタッフのみが実行する必要がある SUID バイナリは、スタッフのみが
アクセス可能な特別なグループに含めるように制限を加え、
誰も使わない suid バイナリは
.Pq Li chmod 000 を実行して
片付けてしまうでしょう。
ディスプレイを持たないサーバは、一般的に xterm のバイナリを必要としません。
sgid バイナリもほとんど同様の危険な存在になり得ます。
侵入者が kmem に sgid されたバイナリを破ることができた場合、
誰も使わない SUID バイナリは
.Pq Dq Li "chmod 000"
を実行して片付けてしまうでしょう。
ディスプレイを持たないサーバは、一般的に
.Xr xterm 1
のバイナリを必要としません。
SGID バイナリもほとんど同様の危険な存在になり得ます。
侵入者が kmem に SGID されたバイナリを破ることができた場合、
その侵入者は
.Pa /dev/kmem
を読み出すことができるようになります。
@ -329,9 +387,13 @@ sgid
ようになるので、パスワードを持つどのアカウントをも、
.Pq 潜在的な
危険に晒すことになります。
代わりに、kmem グループを破った侵入者が pty を通して送られたキーストロークを
代わりに、
.Dq Li kmem
グループを破った侵入者が PTY を通して送られたキーストロークを
監視できます。キーストロークには、安全な方法でログインするユーザが使っている
pty も含まれます。tty グループを破った侵入者は、ほぼ任意のユーザの tty へ
PTY も含まれます。
.Dq Li tty
グループを破った侵入者は、ほぼ任意のユーザの TTY へ
書き込みができます。ユーザが端末プログラムやキーボードをシミュレーション
する機能を持ったエミュレータを使っている場合、侵入者は潜在的に、
結局そのユーザとして実行されるコマンドをユーザの端末にエコーさせる
@ -345,12 +407,12 @@ pty
アカウントの安全を適切に確保できるかもしれません。それが
できないならば、よりいっそう気を配って一般ユーザのアカウントを
監視するよりほかありません。一般ユーザアカウントに対し
ssh や kerberos を利用することには、システム管理がさらに増えたり
SSH や Kerberos を利用することには、システム管理がさらに増えたり
テクニカルサポートが必要になるなどの問題があります。
それでも、暗号化パスワードファイルと比較するとはるかに良い解です。
.Sh パスワードファイルの安全性を高める
できるだけ多くのパスワードを\ * で外し、それらのアカウントのアクセスには
ssh や kerberos を使うようにすることが、唯一の確実な方法です。たとえ暗号化
SSH や Kerberos を使うようにすることが、唯一の確実な方法です。たとえ暗号化
パスワードファイル
.Pq Pa /etc/spwd.db
が root でのみ読み出し可能だとしても、
@ -359,7 +421,9 @@ ssh
.Pp
セキュリティスクリプトは常にパスワードファイルの変更をチェックし、報告
するようにすべきです
(後述の「ファイルの完全性のチェック」を参照して下さい)。
(後述の
.Sx 「ファイルの完全性のチェック」
を参照して下さい)。
.Sh カーネルのコア、raw デバイス、ファイルシステムの安全性を高める
root の権限を破ると、攻撃者は何でもできますが、
もっと簡便なこともいくつかあります。例えば、最近のカーネルは、
@ -368,13 +432,15 @@ root
ドライバを備えているものがほとんどです。
.Fx
では
.Sq bpf
.Xr bpf 4
デバイスと呼ばれています。侵入者は普通、危険に晒された
マシンでパケット覗き見プログラムを実行させようと試みます。侵入者に
わざわざそういう機能を提供する必要はないので、ほとんどのシステムで bpf
わざわざそういう機能を提供する必要はないので、ほとんどのシステムで
.Xr bpf 4
デバイスを組み込むべきではありません。
.Pp
bpf デバイスを外し、モジュールローダを無効にしても、
.Xr bpf 4
デバイスを外し、モジュールローダを無効にしても、
.Pa /dev/mem
.Pa /dev/kmem
@ -384,27 +450,39 @@ bpf
.Xr kldload 8
という、別のカーネル機能があります。
やる気まんまんの侵入者は、KLD モジュールを使って
自分独自の bpf もしくはその他覗き見デバイスを動作中のカーネルに
自分独自の
.Xr bpf 4
もしくはその他覗き見デバイスを動作中のカーネルに
インストールすることができます。
この問題を避けるため、システム管理者は
カーネルをより高い安全レベル
.Pq securelevel
、少なくとも安全レベル 1 で実行させる必要があります。
sysctl を使って kern.securelevel 変数に安全レベルを設定することが
.Xr sysctl 8
を使って
.Va kern.securelevel
変数に安全レベルを設定することが
できます。ひとたび安全レベルに 1 を設定すると、
raw デバイスに対する書き込みアクセスは拒否され、例えば
.Sq schg
のような
特別な chflags フラグが効果を発揮します。これに加えて、
.Cm schg
のような特別な
.Xr chflags 1
フラグが効果を発揮します。これに加えて、
起動時において重要なバイナリ・ディレクトリ・スクリプトファイルなど、
安全レベルが設定されるまでの間に実行されるものすべてに対しても
.Sq schg
.Cm schg
フラグを確実に on にしておく必要があります。この設定をやり過ぎても
構いませんが、より高い安全レベルで動作している場合、システムの
アップグレードがはるかに困難になります。システムをより高い安全レベルで
実行させるようにするが、お天道さまの下にあるすべてのシステムファイルと
ディレクトリに schg フラグを設定しないという妥協をする方法もあります。
もう一つの可能性としては、単純に / および /usr を読み込み専用でマウント
ディレクトリに
.Cm schg
フラグを設定しないという妥協をする方法もあります。
もう一つの可能性としては、単純に
.Pa /
.Pa /usr
を読み込み専用でマウント
することです。ここで特筆すべきことは、システムを守ろうとしてアテナイのドラコ
のように厳しくしすぎると、侵入を検出するという非常に重要なことが
できなくなってしまうということです。
@ -412,36 +490,42 @@ raw
ことこの問題に至ると、システム管理者にできることは、
便利さという要素がその醜い頭を上げない程度に、
コアシステムの設定 / 制御ファイルを防御することだけです。
例えば、/ および /usr にある大部分のファイルに schg ビットを
設定するために chflags を使用するのは、おそらく逆効果でしょう。
例えば、
.Pa /
.Pa /usr
にある大部分のファイルに
.Cm schg
ビットを設定するために
.Xr chflags 1
を使用するのは、おそらく逆効果でしょう。
なぜなら、そうすることでファイルは保護できますが、侵入を検出
する窓を閉ざしてしまうことにもなるからです。
セキュリティのタマネギの最後の層はおそらく最も重要なもの、すなわち検出です。
セキュリティの残りのものは、突然の侵入を検出できなければ、全然有用では
ありません( あるいは、もっと悪ければ、間違った安全性に対する感覚を
植え付けてしまいます )。
タマネギの仕事の半分は、均衡状態にあるとき、攻撃中に検出側に攻撃者を
捕まえるきっかけを与えるため、攻撃者を食い止めるのではなく
侵入を遅らせることなのです。
タマネギの仕事の半分は、攻撃者を食い止めるのではなく、侵入を遅らせることにより、
攻撃中の攻撃者を捕まえる機会を検出層に与えることなのです。
.Pp
侵入を検出する最も良い方法は、変更されていたり、消えていたり、入れた覚えが
ないのに入っているファイルを探すことです。
変更されたファイルを探すのに最も良い方法は、もう一つの
( しばしば中央に集められた ) アクセスが制限されたシステムから行なうものです。
さらに安全でアクセス制限されたシステム上でセキュリティ用スクリプトを書けば、
スクリプトは潜在的なクラッカー達からはほぼ見えなくなります。
スクリプトは潜在的な攻撃者達からはほぼ見えなくなります。
これは重要なことです。
最大限に優位に立つために、一般的にビジネスで使う他のマシンへの重要な
アクセスは、アクセスの制限されたマシンにやらせなくてはいけません。
普通は、他のマシンからアクセス制限されたマシンへ読み込み専用で
NFS エクスポートしたり、アクセス制限されたマシンから他のマシンへ
ssh を行なうために、ssh 鍵のペアを作ったりすることで行います。
SSH を行なうために、SSH 鍵のペアを作ったりすることで行います。
ネットワークのトラフィックを別にして、NFS は最も可視性のない方法です。
事実上検出されない各クライアント上のファイルシステムを監視できるようになります。
アクセス制限されたサーバがスイッチを通してクライアントに接続する場合、
たいてい NFS がより良い選択肢です。アクセス制限されたサーバがハブを通したり、
いくつかのルーティング層を通したりしてクライアントに接続する場合、
NFS はあまりにも危険な方法かもしれず ( ネットワークの面で )、ssh の方が
NFS はあまりにも危険な方法かもしれず ( ネットワークの面で )、SSH の方が
認証の道筋は跡となって残りますが、それでもより良い方法かもしれません。
.Pp
アクセス制限されたマシンに、少なくとも監視することを前提とした
@ -452,46 +536,50 @@ NFS
.Xr md5 1
などの単純なシステムユーティリティでスクリプトを書くことができます。
少なくとも 1 日 1 回、クライアントのファイルを直接 md5 にかけ、
さらにもっと頻繁に
少なくとも 1 日 1 回、クライアントのファイルを直接
.Xr md5 1
にかけ、さらにもっと頻繁に
.Pa /etc
および
.Pa /usr/local/etc
にあるようなコントロール用ファイルを試験するのが一番です。
試験ファイルは、アクセス制限されたマシンが適性であると知っている、基となる
md5 情報と比べて違いが見つかった場合、システム管理者に調べて欲しいと
MD5 情報と比べて違いが見つかった場合、システム管理者に調べて欲しいと
訴えるようにするべきです。
優れたセキュリティ用スクリプトは、
.Pa /
および
.Pa /usr
などのシステムパーティション上で不適当に suid されたバイナリや、
などのシステムパーティション上で不適当に SUID されたバイナリや、
新たに作成されたファイルや削除されたファイルもチェックするのでしょう。
.Pp
NFS ではなく、ssh を使用する場合は、セキュリティ用スクリプトを書くのはずっと
NFS ではなく、SSH を使用する場合は、セキュリティ用スクリプトを書くのはずっと
難しいことです。スクリプトをクライアントから見えるようにし、
動かすためには、クライアントに対して
.Pa scp
.Xr scp 1
を必ず行わなくてはいけません。
そして、安全のため、スクリプトが使うバイナリ ( find など ) を scp する必要も
あります。クライアントの ssh デーモンはすでに危険に晒されているかもしれません。
以上のことから、安全でないリンク上の場合は ssh は必要かもしれませんが、
ssh を扱うのはとても大変なことです。
そして、安全のため、スクリプトが使うバイナリ (
.Xr find 1
など ) を
.Xr scp 1
する必要もあります。クライアントの
.Xr sshd 8
デーモンはすでに危険に晒されているかもしれません。
以上のことから、安全でないリンク上の場合は SSH は必要かもしれませんが、
SSH を扱うのはとても大変なことです。
.Pp
優れたセキュリティ用スクリプトは、ユーザやスタッフメンバの
アクセス設定ファイルもチェックするものです。
.Pa .rhosts ,
.Pa .shosts ,
.Pa .ssh/authorized_keys
.Pa .rhosts , .shosts , .ssh/authorized_keys
などがそれですが、MD5 のチェックの範囲外になってしまうかもしれません。
.Pp
ユーザ用のディスク容量が非常に大きい場合は、パーティション上の各ファイルを
見て回るのに大変な時間がかかるかもしれません。この場合は、マウントフラグを
設定して、このパーティションに suid されたバイナリやデバイスを置けないように
設定して、このパーティションに SUID されたバイナリやデバイスを置けないように
するのが良い考えです。
.Sq nodev
.Cm nodev
および
.Sq nosuid
.Cm nosuid
オプション (
.Xr mount 8
参照)
@ -523,12 +611,12 @@ ssh
システム管理者は、便利さに影響を与えない範囲でいくつでもセキュリティ
機能を追加することができます。また、いくらか考慮した結果、便利さに
影響を与えるセキュリティ機能を追加することもできます。
もっと重要なことには、セキュリティ管理者とは少し喧嘩になる
はずなのですが、もしあなたが、このマニュアルページに書かれている
勧告をそのまま使用したりした場合は、
予想されるクラッカーはやはりこのマニュアルを読んでいるわけですから、
防御策を渡してしまうことになります。
.Sh サービス不能攻撃 (D.O.S. attack) についての特記事項
もっと重要なことは、セキュリティ管理者は少々ごちゃごちゃに
すべきだということです。
というのも、このマニュアルページに書かれている勧告をそのまま使用した場合は、
予想される攻撃者はやはりこのマニュアルを読んでいるわけですから、
防御策を漏らしてしまうことになるからです。
.Sh サービス不能攻撃 (DoS attack) についての特記事項
このセクションではサービス不能攻撃を扱います。サービス不能攻撃は、普通は、
パケット攻撃です。ネットワークを飽和させる最先端の偽造パケット
.Pq spoofed packet
@ -549,53 +637,56 @@ ssh
普通に見られるサービス不能攻撃に、fork するサーバプロセスに対する
ものがあります。これは、サーバにプロセス・ファイル記述子・メモリを
食い尽くさせて、マシンを殺そうとするものです。
inetd (
.Xr inetd 8
参照)
には、この種の攻撃を制限するオプションがいくつかあります。マシンが
サーバには、この種の攻撃を制限するオプションがいくつかあります。マシンが
ダウンすることを防止することは可能ですが、この種の攻撃によりサービスが
崩壊することを防止することは一般的に言ってできないことに注意する必要が
あります。inetd のマニュアルページを注意深く読んで下さい。特に、
.Fl c ,
.Fl C ,
.Fl R
オプションに注意して下さい。IP 偽造攻撃
(spoofed-IP attack)
は inetd
あります。
.Xr inetd 8
のマニュアルページを注意深く読んで下さい。特に、
.Fl c , C , R
オプションに注意して下さい。IP 偽造攻撃 (spoofed-IP attack) は
.Xr inetd 8
.Fl C
オプションの裏をかけるので、一般にオプションを
組み合わせて使用するべきであることに注意して下さい。スタンドアロンサーバ
の中には、自分自身で fork を制限するパラメータを持っているものがあります。
.Pp
sendmail には、
.Xr sendmail 8
デーモンには、
.Fl OMaxDaemonChildren
オプションがあります。負荷には遅れがあるので、
sendmail の負荷に限界を設けるオプションを使うよりも、
.Xr sendmail 8
の負荷に限界を設けるオプションを使うよりも、
このオプションを使う方がまともに動作する可能性ははるかに高いです。
sendmail の実行を開始する際に、
.Cm MaxDaemonChildren
.Va MaxDaemonChildren
パラメータを設定するべきです。その値は、
通常見込まれる負荷を扱える程度に十分高いが、
それだけの数の sendmail を操作しようとすると
それだけの数の
.Xr sendmail 8
を操作しようとすると
マシンが卒倒してしまうほどには高くないような値に設定するべきです。
sendmail をキュー処理モード
.Xr sendmail 8
をキュー処理モード
.Pq Fl ODeliveryMode=queued
で実行することや、
sendmail デーモン
.Pq Cm sendmail -bd
で実行することや、デーモン
.Pq Dq Nm sendmail Fl bd
をキュー処理用プロセス
.Pq Cm sendmail -q15m
.Pq Dq Nm sendmail Fl q15m
と別に実行することも、用心深いことと言えます。それでもなおリアルタイムでの
配送を望むのであれば、
.Fl q1m
のようにすることで、キュー処理をはるかに短い時間間隔で
行うことができます。いずれにしても、
.Cm MaxDaemonChildren
オプションに
合理的な値を確実に指定して、sendmail がなだれをうって失敗することが
ないようにして下さい。
.Va MaxDaemonChildren
オプションに合理的な値を確実に指定して、
.Xr sendmail 8
がなだれをうって失敗することがないようにして下さい。
.Pp
syslogd は直接攻撃される可能性があるので、可能ならばいつでも
.Xr syslogd 8
デーモンは直接攻撃される可能性があるので、可能ならばいつでも
.Fl s
オプションを用いることを強く推奨します。これができないなら、
.Fl a
@ -614,24 +705,27 @@ tcpwrapper
権限への攻撃から内部サービスを防御することには、あまり考慮を払って
いません。ファイアウォールは常に排他的に設定して下さい。つまり、
「ポート A, B, C, D と M から Z まで
.Eo *
以外
.Ec *
.Em 以外
のすべてにファイアウォールを設ける」というふうにです。
このようにすることで、named
このようにすることで、
.Xr named 8
(ゾーンのプライマリである場合),
ntalkd, sendmail など、インターネットにアクセスを提供するサービス
.Xr talkd 8 ,
.Xr sendmail 8
など、インターネットにアクセスを提供するサービス
として特に指定するもの以外の、小さい番号のポートすべてをファイアウォールで
防御することができます。ファイアウォールをこの他のやり方、つまり
包含的もしくは受容的なファイアウォールとして設定しようとする場合、
.Sq close
.Dq close
することを忘れてしまうサービスがいくつか出てきたり、新しい内部サービスを
追加したのにファイアウォールの更新を忘れたりする可能性がよく出てきます。
ファイアウォール上の大きい番号のポートを開けておいて、小さい番号のポートを
危険に晒すことなく受容的な動作を許すことができます。
.Fx
では、net.inet.ip.portrange への sysctl
.Pq Li "sysctl -a | fgrep portrange"
では、
.Va net.inet.ip.portrange
への sysctl
.Pq Dq Li "sysctl net.inet.ip.portrange" ,
をいろいろ使用することで、
動的バインドに使用されるポート番号の範囲を制御できることを記憶にとどめて
おいて下さい。これによりファイアウォールの設定の複雑性を緩和できます。
@ -658,14 +752,18 @@ ntalkd, sendmail
応答を生成するパケットを生成することにより、攻撃者はサーバの
受信ネットワークを飽和させることができ、同時に、サーバが送信
ネットワークを ICMP 応答で飽和させるようにすることができます。
mbuf を消費し尽くさせることにより、この種の攻撃でサーバを
.Vt mbuf
を消費し尽くさせることにより、この種の攻撃でサーバを
クラッシュさせることも可能です。サーバの ICMP 応答生成が速過ぎて、
ICMP 応答の送信が追い付かない場合、とくにひどいことになります。
.Fx
カーネルには、この種の攻撃の効果を抑制する ICMP_BANDLIM と
呼ばれる新しいコンパイルオプションがあります。
3つめの主要なクラスに属す踏み台攻撃は、udp echo サービスのような、
ある種の内部 inetd サービスに関連するものです。攻撃者は、単に
カーネルには、この種の攻撃の効果を抑制する
.Dv ICMP_BANDLIM
と呼ばれる新しいコンパイルオプションがあります。
3つめの主要なクラスに属す踏み台攻撃は、UDP echo サービスのような、
ある種の内部
.Xr inetd 8
サービスに関連するものです。攻撃者は、単に
ソースアドレスがサーバ A の echo ポートであり、ディスティネーション
アドレスがサーバ B の echo ポートであるかのように UDP パケットを
偽造します。ここでサーバ A, B はともに自分の LAN に接続されています。
@ -673,62 +771,82 @@ ICMP
打ち返しあいます。このようにしてパケットをいくつか注入するだけで、
攻撃者は両方のサーバと LAN を過負荷状態にすることができます。
同様の問題が内部 chargen ポートにも存在します。有能なシステム管理者は
この手の inetd 内部テストサービスのすべてを無効にしておくものです。
この手の
.Xr inetd 8
内部テストサービスのすべてを無効にしておくものです。
.Pp
偽造パケット攻撃は、カーネルの経路情報キャッシュに過負荷を生じさせるために
用いられることもあります。net.inet.ip.rtexpire, rtminexpire, rtmaxcache
の sysctl パラメータを参照して下さい。でたらめなソース IP を用いた
用いられることもあります。
.Va net.inet.ip.rtexpire , net.inet.ip.rtminexpire , net.inet.ip.rtmaxcache
.Xr sysctl 8
パラメータを参照して下さい。でたらめなソース IP を用いた
この偽造パケット攻撃により、カーネルは、一時的なキャッシュ経路を
経路情報テーブルに生成します。これは
.Sq netstat -rna \&| fgrep W3
.Dq Li "netstat -rna | fgrep W3" .
で見ることができます。これらの経路は、普通は 1600 秒程度でタイムアウトに
なります。カーネルがキャッシュ経路テーブルが大きくなり過ぎたことを
検知すると、カーネルは動的に rtexpire を減らしますが、rtminexpire より
小さくなるようには決して減らしません。ここに問題が 2 つあります。
検知すると、カーネルは動的に
.Va rtexpire
を減らしますが、
.Va rtminexpire
より小さくなるようには決して減らしません。ここに問題が 2 つあります。
(1) 負荷の軽いサーバが突然攻撃された場合、カーネルが十分素早く反応
できないこと。(2) カーネルが攻撃に耐え生き延びられるほど十分
rtminexpire が低く設定されていないこと。の2つです。
.Va rtminexpire
が低く設定されていないこと。の 2 つです。
自分のサーバが T3 もしくはそれより
良質の回線でインターネットに接続されている場合、
.Xr sysctl 8
を用いて rtexpire と rtminexpire とを手動で上書きしておくことが思慮深いこと
を用いて
.Va rtexpire
.Va rtminexpire
とを手動で上書きしておくことが思慮深いこと
といえます。
(自分のマシンをクラッシュさせたくないのであれば :-))
どちらか一方でも 0 に
は決してしないで下さい。両パラメータを 2 秒に設定すれば、
攻撃から経路情報テーブルを守るには十分でしょう。
.Sh kerberos および ssh を用いたアクセスの問題
もしあなたが、kerberos および ssh を使用したいのだとしたら、両者に関して
.Sh Kerberos および SSH を用いたアクセスの問題
もしあなたが、Kerberos および SSH を使用したいのだとしたら、両者に関して
言っておく必要のある問題がいくつかあります。
kerberos V は大変優れた認証プロトコルですが、kerberos 処理された telnet や
rlogin は、バイナリストリームを扱うのに不向きになってしまうようなバグがあります。
さらに、デフォルトでは、kerberos は
Kerberos5 は大変優れた認証プロトコルですが、kerberos 化された
.Xr telnet 1
.Xr rlogin 1
は、バイナリストリームを扱うのに不向きになってしまうようなバグがあります。
さらに、デフォルトでは、Kerberos は
.Fl x
オプションを使わない限りセッションを暗号化してくれません。
ssh では、デフォルトですべてを暗号化してくれます。
SSH では、デフォルトですべてを暗号化してくれます。
.Pp
ssh はあらゆる場面でとても良く働いてくれます。ただし、
SSH はあらゆる場面でとても良く働いてくれます。ただし、
暗号鍵を送ってしまう場合を除けばです。これはつまり、暗号鍵を持った安全な
ワークステーションがあって、この暗号鍵で残りのシステムとアクセスできる
ようになっている場合では、安全でないマシンへ ssh を行なう時に暗号鍵が
ようになっている場合では、安全でないマシンへ
.Xr ssh 1
を行なう時に暗号鍵が
見えてしまうということです。実際の鍵そのものが見えてしまうわけでは
ありませんが、ssh は、login を持続させるために配送用ポートを作ります。
クラッカーが安全でないマシンの root を破ると、クラッカーは、
ありませんが、
.Xr ssh 1
は、login している間、配送用ポートを作ります。
攻撃者が安全でないマシンの root を破ると、攻撃者は、
このポートを使って暗号鍵を取得し、暗号鍵でロックの外れる他のマシンへの
アクセスを得ます。
.Pp
staff のログインには、kerberos を組み合せた ssh を使用することを勧めます。
ssh は、kerberos と一緒にコンパイルできます。こうすると、見えて
しまうかもしれない ssh 鍵をあまりあてにしないで良いようになります。
また、それと同時に、kerberos 経由でパスワードを保護することもできます。
ssh 鍵は、安全なマシンからの自動化されたタスク (kerberos では不向きな
ものなど ) 用のみに使用するべきです。また、ssh の設定で
ssh 鍵を送らないようにするか、あるいは、
staff のログインには、Kerberos を組み合せた SSH を使用することを勧めます。
SSH は、Kerberos と一緒にコンパイルできます。こうすると、見えて
しまうかもしれない SSH 鍵をあまりあてにしないで良いようになります。
また、それと同時に、Kerberos 経由でパスワードを保護することもできます。
SSH 鍵は、安全なマシンからの自動化されたタスク (Kerberos では不向きな
ものなど ) 用のみに使用するべきです。また、SSH の設定で
SSH 鍵を送らないようにするか、あるいは、
.Pa authorized_keys
ファイル中で
.Pa "from=IP/DOMAIN"
.Va from Ns = Ns Ar IP/DOMAIN
オプションを使用して、特定のマシンからログインしてきたもののみに
有効になる鍵を ssh が生成できるようにすることも勧めます。
有効になる鍵を SSH が生成できるようにすることも勧めます。
.Sh 関連項目
.Xr chflags 1 ,
.Xr find 1 ,

View file

@ -2,7 +2,7 @@
.\" the BSD Copyright as specified in the file "/usr/src/COPYRIGHT" in
.\" the source tree.
.\"
.\" %FreeBSD: src/share/man/man7/tuning.7,v 1.62 2003/09/14 23:44:55 hmp Exp %
.\" %FreeBSD: src/share/man/man7/tuning.7,v 1.63 2004/06/06 12:30:21 schweikh Exp %
.\"
.\" $FreeBSD$
.Dd June 25, 2002
@ -12,7 +12,7 @@
.Nm tuning
.Nd FreeBSD における性能チューニング
.Sh システム設定 - disklabel, newfs, tunefs, スワップ
.Xr disklabel 8
.Xr bsdlabel 8
または
.Xr sysinstall 8
を使ってハードディスク上にファイルシステムをレイアウトする場合、
@ -834,16 +834,6 @@ sysctl
ATA ドライバシステムのチューニングに関する更なる情報は、
.Xr ata 4
を参照してください。
.Pp
IDE ハードドライブの実験的な新機能として、
.Va hw.ata.tags
と呼ばれるものがあり (これもブートローダで設定します)、
ライトキャッシュを安全にオンにすることができます。
これは SCSI のタギング機能を IDE ドライブに持ち込んだものです。
これを書いている時点では、IBM DPTA と DTLA ドライブだけがこの機能を
サポートしています。
警告! これらのドライブは品質管理に問題
があるようなので、私は現時点ではこれらの製品を買うことはおすすめしません。
性能が必要なら SCSI を使いましょう。
.Sh CPU、メモリ、ディスク、ネットワーク
負荷が上がるとシステムのどの部分がボトルネックになりはじめているかによって、
@ -903,9 +893,9 @@ SCSI
.Xr hier 7 ,
.Xr ports 7 ,
.Xr boot 8 ,
.Xr bsdlabel 8 ,
.Xr ccdconfig 8 ,
.Xr config 8 ,
.Xr disklabel 8 ,
.Xr fsck 8 ,
.Xr ifconfig 8 ,
.Xr ipfw 8 ,