File: rssh.1

package info (click to toggle)
manpages-ja 0.5.0.0.20120606-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 25,964 kB
  • sloc: perl: 161; makefile: 116
file content (283 lines) | stat: -rw-r--r-- 12,840 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
.\" Copyright 2003 Derek D. Martin ( code at pizzashack dot org ).
.\" 
.\" The software can be redistributed under the terms of the modified Berkely
.\" software license, as follows:
.\" 
.\" 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.
.\"
.\" Japanese Version Copyright (C) 2003
.\"	System Design and Research Institute Co., Ltd. All rights reserved.
.\"
.\" Translated on Sun Mar  2 23:08:54 JST 2003
.\" by System Design and Research Institute Co., Ltd. <info@sdri.co.jp>
.\" Updated on Fri Feb 25 23:25:07 EST 2005
.\" by Tatsuo Sekine <tsekine@sdri.co.jp>
.\"
.\"WORD: parser 解析器
.\"
.TH RSSH 1 "7 Jul 2003" "man pages" "Derek D. Martin"
.SH 名前
rssh \- scp と sftp の両方だけ、またはその一方のみを許可する
制限付セキュアシェル
.SH 書式
.B rssh 
.I -c scp|sftp-server 
.RI [ " options... " ] " " [ " ... " ]
.SH 説明
.B rssh
はホストへの
.IR ssh (1)
を使ったアクセスの制限を提供する制限付きシェルで、シェルが
.B rssh
に設定されたユーザには、
.IR scp (1) ,
.IR sftp (1) ,
.IR cvs (1) ,
.IR rdist (1) ,
.IR rsync (1)
のうちの一つ以上のコマンド
.B のみ
使用を許可する。
主に、OpenSSH (http://www.openssh.com を参照)
と共に動作するように意図されてはいるが、
他の実装とも共に動作するだろう。
.P
機密をもつシステムの管理者は、このシェルをインストールすべきである。
アクセスが制限されるべきすべてのユーザに対し、
そのパスワードエントリを編集し、シェルが
.B rssh
になるようにする。
例えば以下のようにする。
.P
.RS
luser:x:666:666::/home/luser:/usr/bin/rssh
.RE
.P
もし
.I \-v
オプション付きで起動されたら、
.B rssh
はバージョン番号を表示して終了する。
.B rssh
へのその他の引数はリモートの
.IR ssh (1)
クライアントによって指定されたものが渡される。
一般のユーザはこのことをほとんど意識する必要はない。
制御を
.IR scp (1)
または
.IR sftp (1)
に渡すために、
rssh に渡される引数は、リモート側のシェルが受け取ったものを(そのまま)
使わなければならない。
もし
.B rssh
が適合しない引数を受け取った場合には、エラーメッセージを出して終了する。
ユーザが実行しようとしたプログラムが許可されなかった場合は
エラーメッセージを出力して終了する。
また、(コマンド置換のような)シェルコマンドを実行しようとした場合も
エラーメッセージを出力して終了する。
.P
.B rssh
には設定ファイル rssh.conf(5) があり、
.B rssh
の動きのいくつかを設定可能である。
詳細は man ページを参照のこと。
.SH セキュリティ上の注意
.SS コマンドライン解析器
.B rssh
バージョン 2.2.3 の時点では、任意のコマンドの実行を引き起こす
(その結果、\fBrssh\fP のセキュリティをかいくぐる)
ようなコマンドラインオプションを避けるために、コマンドライン全体を
解析しなくてはならない。
ソースコードを健全にしておくため、やや熱心すぎるぐらいにコマンドラインオプションをマッチングする。
実際にはこれは問題にはならないが、理論上は可能だからである。
.P 
本当はそうではないにもかかわらず、
「安全でないコマンドラインオプションを拒否した」という理由で
.B rssh
の実行を拒否されるという問題に突き当たったら、コマンドラインを次のように
変えてみて欲しい。
すべての\fI短い\fRオプションを1文字のオプションフラグで指定する
(例えば、\-ep の代わりに \-e \-p)、
引数とそれぞれのオプションをスペースで区切る
(例えば、\-p123 の代わりに \-p 123)。
ほとんど全ての場合で、これで問題は解決する。
お分かりのとおり完全な検索はしていないが、
一般的に有り得るような問題は見つかっていない。
.P
別の解決策は、rcp, rdist, rsync に対する完全なコマンドライン解析器を
実装しておくことがだが、それはこのプロジェクトの目的でない。
実用上は、既にある解析器で十分である」
しかし、もしそうでない場合を見つけたのなら、詳細を
rssh メーリングリストに投稿して欲しい。
rssh メーリングリストへの投稿に関する詳細は
rssh ホームページから得ることができる。
.SS rssh をかいくぐることに対する安全策
.B rssh
は他のいくつかのプログラムと相互に作用するように設計されている。
たとえ rssh に完全にバグがなくても、他のプログラムの変更が
.B rssh
が提供している保護機能を無視する結果となり得る。
\fBシステム管理者、すなわちあなたにとって重要なことは、
rssh と共に使うようにしたサービスを現在のままにしておき、
それらのコマンドがユーザーに任意のコマンドの実行を許可するような
仕組みを提供して\fIいない\fBことを確かにしておくことでである。\fP
また、すべてのリリースの目標はバグがないことである一方、
完璧なものなど無い……
.B rssh
には発見されていないバグがあるかもしれず、それはユーザーが
rssh を無視することを許してしまうかもしれない。
.P
そのような脆弱性から、システムを守ることができる。
3つの基本的な方法がある。

.PD 0
.RS .3i
.TP .3i
1.
ユーザーを chroot jail に押し込める
.TP .3i
2.
ユーザーのホームのあるファイルシステムを
noexec オプション付きでマウントする
.TP .3i
3.
一般的なファイルパーミッションを適切に用いる
.RE
.PD

.B rssh
は、ユーザーを chroot jail に入れる能力をシステム管理者に与える。
詳細は
.BR rssh.conf (5)
の man ページと、ソースコードと共に配布されている
.I CHROOT
ファイルを参照のこと。
ユーザーが任意のコマンドを実行できないことを確かなものにしたいなら、
chroot jail を使用し、提供しようとしているサービスに必要なプログラム以外を
そこに置かないように気をつけること。
そうすれば、標準的なコマンドの実行を防ぐことができる。
.P
そして、システムの実行ファイルがあるファイルシステムと、
ユーザーのファイルを分けておき、
(もしオペレーティングシステムにその機能があれば)
ユーザーのファイルのある
ファイルシステムを
.I noexec
オプション付きでマウントする。
こうすれば、目的のマシンに(例えば scp を使って)アップロードされた
プログラムが実行されるのを防ぐことができる。
.\"tsekine 「which might otherwise be executable」は訳しませんでした
.P
最後に、chroot jail の中でユーザーがアクセスできてはならないものに
ついては、標準的な Unix/POSIX ファイルパーミッションを使用すること。
.SS OpenSSH のバージョンと rssh の無視
OpenSSH 3.5 より前では、一般的には
.IR sshd (8)
はユーザのホームディレクトリにあるファイルを解析しようとし、
またユーザの
.I $HOME/.ssh
ディレクトリからスタートアップスクリプトを実行しようとする。
.B rssh
は決してユーザーの環境(変数)を使用しようとはしない。
関連するコマンド(訳注: sftp-serverなど)は、
コンパイル時に指定されたコマンドへのフルパスを指定して
execv(3) を呼び出すことで実行される。
これはユーザの PATH 変数には依存しないし、他の環境変数にも依存しない。
.P
しかしながら、起こりうるいくつかの問題が存在する。
これは完全に OpenSSH プロジェクトの sshd の動作の仕方に原因があり、
決して
.B rssh
の欠陥ではない。たとえば、存在するであろう一つの問題としては、
OpenSSH の少なくともいくつかのリリースの
.IR sshd (8)
の man ページによれば、
.I $HOME/.ssh/rc
ファイルに書かれているコマンドはユーザのデフォルトシェルの代わりに
.I /bin/sh
によって実行される。
著者がテストに使えるシステムではこの問題は発生しない。
すなわち、コマンドはユーザに設定されたシェル
.RB ( rssh )
によって実行され、それは実行を許可しない。
しかし、もしこれがあなたのシステムで有効になってしまっていれば、
悪意のあるユーザは
.I /bin/sh
に実行されるであろう
.I $HOME/.ssh/rc
ファイルをアップロードして、
.B rssh
を無視することができるだろう。

実際のところ、もしこの脆弱性問題が存在する(OpenSSH の)リリースが
あるとすれば、それは古く、旧式のバージョンである。
最近のバージョンのOpenSSHを動かしている限りは、
私が言える範囲では問題ないはずだ。
.P
もし使っている sshd がこの攻撃に対して脆弱で
.I ある
ならば、かなり制限がかかるものの、この問題に対する回避方法がある。
.B "ユーザのホームディレクトリは絶対にそのユーザが書き込めては*いけない*。"
もし書き込めてしまえば、ユーザは sftp を使って(.ssh)ディレクトリの
名前を変えるか消すかして、あたらしい同名のディレクトリを作り、好きな
環境ファイル(訳注: 上記 $HOME/.ssh/rc ファイルのこと)をそこに書き込める。
ファイルのアップロードを開放するためには、ユーザが書き込めるディレクトリが
作成されていなければならず、ホームディレクトリのそれ以外の場所には
書き込めないことをユーザに承知させなければならない。
.P
二つ目の問題は、ユーザが環境に変数を設定できることを可能にする
.I $HOME/.ssh/environment
ファイルを、sshd がユーザの認証後に読み込むことである。
環境変数
.I LD_LIBRARY_PATH
または
.I LD_PRELOAD
を上手に操作して、任意の共有ライブラリを rssh バイナリにリンク
させることによって
.B rssh
を完全に欺くことを許してしまう。
この問題を防ぐために、
.B rssh
は(バージョン 0.9.3 の時点では)デフォルトでは静的にコンパイルされる。
前述の制限付きの回避方法は、この種の攻撃も防ぐことができる。
OpenSSH 3.5 の時点では、
.I sshd
.I PermitUserEnvironment
オプションをサポートしており、これはデフォルトで "no" に設定されている。
このオプションは、
.B rssh
のような制限つきシェルが静的リンクの必要なしに適切に機能することを
可能にする。
.B rssh
バージョン 1.0.1 の時点で、configure スクリプトは OpenSSH 3.5 が
存在するかを検出し、静的コンパイルを無効にする。
.SH バグ
ない =8^)
.SH 関連項目
.IR rssh.conf (5),
.IR sshd (8),
.IR ssh (1),
.IR scp (1),
.IR sftp (1)