- PR -

OpenSSHでディレクトリ移動の制限

投稿者投稿内容
m.k.s.
常連さん
会議室デビュー日: 2003/06/08
投稿数: 20
投稿日時: 2003-10-29 12:39
最近RedHatを使い始めました。
何分初心者なので、ご指導の程宜しくお願い致します。

OpenSSHのを利用したWinSCPを導入し、FTPの様にホームディレクトリ以外へのアクセス
を制限したいのですが、設定方法がわかりません。

ログインするユーザーのbashを変更し、発行できる命令を制限することはできたのですが、
肝心のCDコマンドが制限出来ない為、自由に移動できる状態です。
パーミッションで制限できるのかな?と思い挑戦して見たのですが、移動して欲しくない
共通ディレクトリなどに移動できてしまい、思うように制限できませんでした。

通常にSSHを利用した場合も移動を制限したいのですが、そんな事は可能なのでしょうか?

以下、試行した環境です。
・Linux 2.2.16 (i586)
・GNU bash, version 1.14.7(1)
・OpenSSH_3.7.1p2, SSH protocols 1.5/2.0,
・OpenSSL 0.9.6c
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2003-10-29 23:43
こういうのでしょうか。
http://chrootssh.sourceforge.net/
m.k.s.
常連さん
会議室デビュー日: 2003/06/08
投稿数: 20
投稿日時: 2003-10-30 12:40
ありがとうございます。大変参考になりました。
早速試してみたのですが、問題が発生しました。

/home/chroot/./home/hoge ... ホームディレクトリ
上記の様に設定したのですが、ログイン直後に切断されてしまいます。
> ... 承認
> debug1: channel 0: new [client-session]
> debug1: Entering interactive session.
> debug1: channel 0: free: client-session, nchannels 1
> Connection to 192.168.10.51 closed by remote host.
> Connection to 192.168.10.51 closed.
> ... 切断

WinSCPの方でも調べたのですが、bashが発見されないとエラーが出ていました。
> ! /bin/bash: No such file or directory
> . All channels closed. Disconnecting

仕方が無いので、アクセス可能な位置へ再配置をしてみましたが、結果は同じでした。
/home/chroot/./bin, usr, etc, run, var, ... 必要なファイル一式

ホームディレクトリを変更しただけなので、もしかしたら設定に不備があるのかもしれません。
# 英語は苦手なので(T.T; ヒンズー語じゃないだけマシかな...

# --追加--
root権限でのchrootは確認しましたが、ログインユーザーでは移動できませんでした。

># /usr/sbin/chroot /home/chroot
> /usr/sbin/chroot:
> cannot change root directory to /home/chroot: Operation not permitted

これが原因かなとも思うのですが、chrootはroot権限でしか使用できないのでしょうか?



[ メッセージ編集済み 編集者: m.k.s. 編集日時 2003-10-30 18:49 ]
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2003-11-01 18:05
すみません、自分で使ったことはないので具体的な設定方法については
答えられないのですが...
chroot と ssh をキーワードにして検索エンジンを利用すると、
日本語のページがいくつか見つかりますので、それを参考にされては
いかがでしょうか。
m.k.s.
常連さん
会議室デビュー日: 2003/06/08
投稿数: 20
投稿日時: 2003-11-02 21:12
ありがとうございます。
関連するキーワードでの検索はかけて、情報は集めているのですが
成功はしていません。やはりBSD系のサイトが多く引っかかる所を
みると、Linux系では一筋縄では動かないのでしょうか。
引き続き情報を集めて見ます。
けんたおる
会議室デビュー日: 2003/11/05
投稿数: 3
投稿日時: 2003-11-05 13:45
はじめまして。
実際に自宅のサーバで運用中のものです。

アクセス制限をかけたいユーザは以下のように設定すると良いようです。
(rootでの作業例)
# mkdir /home/user1
# useradd user1 -d /home/user1/./
# passwd user1
# chown user1:user1 /home/user1
# chmod 700 /home/user1

useradd で、./を末尾に追加するとアクセス制限対象となります。
既に登録しているユーザの場合は、設定ファイルのホームのパスに./を追加してあげれば良いみたいです。

この設定を行った後は、ホームがルートディレクトリに相当しますので、
bash等の実行に必要なファイルをホーム以下にコピーしてあげる必要があります。
m.k.s.
常連さん
会議室デビュー日: 2003/06/08
投稿数: 20
投稿日時: 2003-11-05 15:30
はじめまして。ありがとうございます。
こちらの環境では、残念ながら接続できませんでした。

下にデバッグログを表記していますが、サーバー側で
アカウントが見つからないような事を言われてしまいます?
> login_get_lastlog: Cannot find account for uid 115

けんたおるさんは、どのバージョンの組み合わせを使用されているのでしょうか?
もし宜しければ教えて頂けないでしょうか。お願いします。

#-- Server Debug --
...承認省略...
debug1: session_new: init
debug1: session_new: session 0
debug1: session_open: channel 0
debug1: session_open: session 0: link with channel 0
debug1: server_input_channel_open: confirm session
debug1: server_input_channel_req: channel 0 request pty-req reply 0
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req pty-req
login_get_lastlog: Cannot find account for uid 115
debug1: Calling cleanup 0x8063abc(0x0)
debug1: channel 0: free: server-session, nchannels 1
debug1: Calling cleanup 0x806b48c(0x0)
##-------

#-- Client Debug --
...承認省略...
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: channel 0: free: client-session, nchannels 1
Connection to 192.168.1.250 closed by remote host.
Connection to 192.168.1.250 closed.
debug1: Transferred: stdin 0, stdout 0, stderr 89 bytes in 0.0 seconds
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 6846.1
debug1: Exit status -1
##-------
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2003-11-07 10:12
仄聞ですが,WinSCP は SFTP とはまたちょっと違う発想の代物だと聞いたことがあります.
結果的にクライアント側からは違わないが,その違いを知ってないとサーバ側で ChrootedSSH 環境を作る時に思いっきりはまるとか?
※ごめんなさい,詳しくは憶えていませんので...

ちなみに scponly という shell があります.
http://www.sublimation.org/scponly/
FreeBSD PRESS No.13 で見かけて興味を持ち,導入してみました.
一応手元の Linux ではちゃんと動いてくれています.この scponly を chroot-enable で compile して,setup-chroot.sh という付属 script で任意の directory に chroot tree を作ると,WinSCP や rsync でご希望の環境になるんじゃないかと...
ご一考ください.

スキルアップ/キャリアアップ(JOB@IT)