Top過去ログ目次掲示板

作成日:2007年12月06日 作成:おやじ
掲示板で過去に質問された内容です。

No.7355 rssh + chroot jail環境構築


No.7355 投稿時間:2007年12月06日(Thu) 03:42 投稿者名:アクア URL:http://http://www.sdri.co.jp/rssh/CHROOT_ja.html
タイトル:rssh + chroot jail環境構築

CentOS5.0でサーバー運用をしており、こちらのサイトをよく参考にさせていただいています。
rssh解説ページでchroot jailができなかった、とのことでしたが
必要に迫られてチャレンジしてみたところ
なんとかrssh + chroot jail環境を構築することができたので
さしでがましいようですが日頃のお礼がてら簡単に構築手順をご報告させていただきます。

1.まずrsshをyumでインストールし、/etc/rssh.confをそれなりに編集しました。(chrootpathのコメント解除等)
2.yumでインストールするとchroot jail環境を比較的手軽に構築するためのmkchroot.shがないので
 本家からsource tarballをDLしてきてこのシェルスクリプトだけ抽出し、
 「mkchroot.sh /usr/local/chroot」というように実行しました。
3.これでできあがり…だったらよかったのですが、
 mkchroot.sh内でscpやrsshの依存ライブラリを抽出・コピーする部分で何件かエラーが発生したので
 手動でlddを再実行してコピーに失敗したファイル群を/usr/local/chroot/以下に同じ階層構造になるようにコピーしました。
 (ファイル群、と言っても私の場合は/lib/ld-linux.so.2ぐらいだった気がします)
 それとエラー発生に伴って「/usr/local/chroot./」というゴミディレクトリもできてしまっていたので削除しました。
4.さらにmkchroot.shでは何もしてくれていない(?)ようなのですが
 dev/nullも必要だったようなので、本物の/dev/nullを参考に
 「mknod /usr/local/chroot/dev/null c 1 3; chmod 666 /usr/local/chroot/dev/null」というようにして作成しました。
5./etc/passwdが/usr/local/chroot/etc/にコピーされましたが
 ほとんどのユーザーはchroot jail内では不要なので
 rootとscp接続ユーザーの情報を残して後は削除しました。
 /etc/passwd側はこんな感じ…
  root:x:0:0:root:/root:/bin/bash
  …
  scpuser:x:501:100::/usr/local/chroot/home/scpuser:/usr/bin/rssh
 で、/usr/local/chroot/etc/passwdの方はこんな感じです。
  root:x:0:0:root:/root:/bin/bash
  scpuser:x:501:100::/home/scpuser:/usr/bin/rssh
6.あとは/usr/local/chroot/home/scpuser/などを作成し
 sftp接続した際にグループをIDではなく名称で表示させるために
 /etc/groupを/usr/local/chroot/etc/にコピーしました。
 passwdと同様、これも必要最低限でいいと思うのですが面倒だったので…(^^;

私の場合、この手順で構築した最終的なディレクトリ・ファイル構成(ls -FR /usr/local/chroot)はこんなカンジです。
/usr/local/chroot/:
dev/  etc/  home/  lib/  usr/

/usr/local/chroot/dev:
null

/usr/local/chroot/etc:
group  ld.so.cache  ld.so.conf  nsswitch.conf  passwd

/usr/local/chroot/home:
scpuser/

/usr/local/chroot/home/scpuser:

/usr/local/chroot/lib:
ld-linux.so.2*  libcom_err.so.2*  libcrypto.so.6*  libnsl.so.1*          libnss_files.so.2@  libutil.so.1*
libc.so.6*      libcrypt.so.1*    libdl.so.2*      libnss_files-2.5.so*  libresolv.so.2*

/usr/local/chroot/usr:
bin/  lib/  libexec/

/usr/local/chroot/usr/bin:
rssh*  scp*

/usr/local/chroot/usr/lib:
libgssapi_krb5.so.2*  libk5crypto.so.3*  libkrb5.so.3*  libkrb5support.so.0*  libz.so.1*

/usr/local/chroot/usr/libexec:
openssh/  rssh_chroot_helper*

/usr/local/chroot/usr/libexec/openssh:
sftp-server*

ここまでやってWinSCPで接続テストをしたところ、接続エラーになってしばらく悩みましたが、
rsshのFAQページにWinSCPのscpはサポートしないというのを見つけ、
 http://www.sdri.co.jp/rssh/faq.html#12
sftpにして接続できました。
WinSCPのscpはダメでしたがPuTTY付属のpscpなら(もちろんpsftpも)OKでした。

mkchroot.shの最後でsyslogdのためにdev/logの設定もすべき、といったメッセージが表示されますが
私はやらなかったのでとりあえず動いてるみたい…といった程度の情報ですが
どなたかの参考になれば幸いです(^-^)


No.7356 投稿時間:2007年12月06日(Thu) 21:39 投稿者名:おやじ URL:
タイトル:時間があれば、再チャレンジしてみたいと思います。

おやじがチャレンジしたのは3年近く前の話で、当時はうまく動きませんでした。何が問題だったかも忘れました。サイトを見ると2.3以降でないと駄目みたいな記述がありますね。
時間があれば、再チャレンジしてみたいと思います。


No.7629 投稿時間:2008年07月25日(Fri) 08:30 投稿者名:ハナコパパ URL:
タイトル:Re: rssh + chroot jail環境構築

> CentOS5.0でサーバー運用をしており、こちらのサイトをよく参考にさせていただいています。
> rssh解説ページでchroot jailができなかった、とのことでしたが
> 必要に迫られてチャレンジしてみたところ
> なんとかrssh + chroot jail環境を構築することができたので
> さしでがましいようですが日頃のお礼がてら簡単に構築手順をご報告させていただきます。
>
> 1.まずrsshをyumでインストールし、/etc/rssh.confをそれなりに編集しました。(chrootpathのコメント解除等)
> 2.yumでインストールするとchroot jail環境を比較的手軽に構築するためのmkchroot.shがないので
>  本家からsource tarballをDLしてきてこのシェルスクリプトだけ抽出し、
>  「mkchroot.sh /usr/local/chroot」というように実行しました。
> 3.これでできあがり…だったらよかったのですが、
>  mkchroot.sh内でscpやrsshの依存ライブラリを抽出・コピーする部分で何件かエラーが発生したので
>  手動でlddを再実行してコピーに失敗したファイル群を/usr/local/chroot/以下に同じ階層構造になるようにコピーしました。
>  (ファイル群、と言っても私の場合は/lib/ld-linux.so.2ぐらいだった気がします)
>  それとエラー発生に伴って「/usr/local/chroot./」というゴミディレクトリもできてしまっていたので削除しました。
> 4.さらにmkchroot.shでは何もしてくれていない(?)ようなのですが
>  dev/nullも必要だったようなので、本物の/dev/nullを参考に
>  「mknod /usr/local/chroot/dev/null c 1 3; chmod 666 /usr/local/chroot/dev/null」というようにして作成しました。
> 5./etc/passwdが/usr/local/chroot/etc/にコピーされましたが
>  ほとんどのユーザーはchroot jail内では不要なので
>  rootとscp接続ユーザーの情報を残して後は削除しました。
>  /etc/passwd側はこんな感じ…
>   root:x:0:0:root:/root:/bin/bash
>   …
>   scpuser:x:501:100::/usr/local/chroot/home/scpuser:/usr/bin/rssh
>  で、/usr/local/chroot/etc/passwdの方はこんな感じです。
>   root:x:0:0:root:/root:/bin/bash
>   scpuser:x:501:100::/home/scpuser:/usr/bin/rssh
> 6.あとは/usr/local/chroot/home/scpuser/などを作成し
>  sftp接続した際にグループをIDではなく名称で表示させるために
>  /etc/groupを/usr/local/chroot/etc/にコピーしました。
>  passwdと同様、これも必要最低限でいいと思うのですが面倒だったので…(^^;
>
> 私の場合、この手順で構築した最終的なディレクトリ・ファイル構成(ls -FR /usr/local/chroot)はこんなカンジです。
> /usr/local/chroot/:
> dev/ etc/ home/ lib/ usr/
>
> /usr/local/chroot/dev:
> null
>
> /usr/local/chroot/etc:
> group ld.so.cache ld.so.conf nsswitch.conf passwd
>
> /usr/local/chroot/home:
> scpuser/
>
> /usr/local/chroot/home/scpuser:
>
> /usr/local/chroot/lib:
> ld-linux.so.2* libcom_err.so.2* libcrypto.so.6* libnsl.so.1* libnss_files.so.2@ libutil.so.1*
> libc.so.6* libcrypt.so.1* libdl.so.2* libnss_files-2.5.so* libresolv.so.2*
>
> /usr/local/chroot/usr:
> bin/ lib/ libexec/
>
> /usr/local/chroot/usr/bin:
> rssh* scp*
>
> /usr/local/chroot/usr/lib:
> libgssapi_krb5.so.2* libk5crypto.so.3* libkrb5.so.3* libkrb5support.so.0* libz.so.1*
>
> /usr/local/chroot/usr/libexec:
> openssh/ rssh_chroot_helper*
>
> /usr/local/chroot/usr/libexec/openssh:
> sftp-server*
>
> ここまでやってWinSCPで接続テストをしたところ、接続エラーになってしばらく悩みましたが、
> rsshのFAQページにWinSCPのscpはサポートしないというのを見つけ、
>  http://www.sdri.co.jp/rssh/faq.html#12
> sftpにして接続できました。
> WinSCPのscpはダメでしたがPuTTY付属のpscpなら(もちろんpsftpも)OKでした。
>
> mkchroot.shの最後でsyslogdのためにdev/logの設定もすべき、といったメッセージが表示されますが
> 私はやらなかったのでとりあえず動いてるみたい…といった程度の情報ですが
> どなたかの参考になれば幸いです(^-^)

rssh.confの内容がよくわからないですが、
この通りやると、確かにwinscpから接続はできました。
しかし、chroot下のディレクトリ以外ものぞけてしまいますね。
これだと、普通につないだときと変わらないと思うんですが、
どうなんでしょうか?


No.7630 投稿時間:2008年07月25日(Fri) 21:35 投稿者名:stranger URL:
タイトル:Re: rsshにこだわらないなら

rsshにこだわらないなら
最近のopenssh(openssh-4.9p1以降)はChrootDirectoryパラメータが使え
sftp専用ディレクトリなら、ライブラリのコピーなど複雑な処理をすることなく
それなりの効果を得られる


No.7633 投稿時間:2008年07月29日(Tue) 18:14 投稿者名:ハナコパパ URL:
タイトル:Re^2: rsshにこだわらないなら

> rsshにこだわらないなら
> 最近のopenssh(openssh-4.9p1以降)はChrootDirectoryパラメータが使え
> sftp専用ディレクトリなら、ライブラリのコピーなど複雑な処理をすることなく
> それなりの効果を得られる

centos5.2+openssh-5.1pはrpmbuildが実行できないので、断念。

openssh-5.0pに落として、rpmbuild、インストールまで完了したんですが、
chrootユーザでログインして、suでrootになれない状態は確認できたのですが、
chrootディレクトリ外へ出れる状態になっています。
pwdをたたくと、本来「/」となるべきところが、「/home/$USER」に・・・

これはバグなんでしょうか?


No.7634 投稿時間:2008年07月30日(Wed) 12:12 投稿者名:stranger URL:
タイトル:Re^3: rsshにこだわらないなら

> > rsshにこだわらないなら
> > 最近のopenssh(openssh-4.9p1以降)はChrootDirectoryパラメータが使え
> > sftp専用ディレクトリなら、ライブラリのコピーなど複雑な処理をすることなく
> > それなりの効果を得られる
>
> centos5.2+openssh-5.1pはrpmbuildが実行できないので、断念。
>
> openssh-5.0pに落として、rpmbuild、インストールまで完了したんですが、
> chrootユーザでログインして、suでrootになれない状態は確認できたのですが、
> chrootディレクトリ外へ出れる状態になっています。
> pwdをたたくと、本来「/」となるべきところが、「/home/$USER」に・・・
>
> これはバグなんでしょうか?

参考 CentOS5.2 openssh-5.1p1(ソースからインストール)

sftp専用ユーザ・グループの設定

仮定 一般ユーザ ( umi ) とします
パスワードを設定しないと公開鍵認証でもエラーになります
groupIDは/etc/groupファイルを参照して未使用の番号を使用します

# useradd -s /sbin/nologin umi
# passwd umi
New UNIX password:
Retype new UNIX password:
# groupadd -g 103 sftponly
# gpasswd -M umi sftponly

書き込み可能なディレクトリの作成

chrootディレクトリの所有者はrootでなければなりません
公開鍵のディレクトリは ( umi:umi 700 ) のまま使用します
書き込み可能なディレクトリ ( 例 /home/umi/pub ) をつくります

# chown root:root /home/umi
# chmod 755 /home/umi
# mkdir /home/umi/pub
# chown umi:sftponly /home/umi/pub

configファイルの修正

*省略*
Subsystem sftp internal-sftp
*省略*
Match Group sftponly
AllowTcpForwarding no
ChrootDirectory /home/%u


No.7632 投稿時間:2008年07月29日(Tue) 15:36 投稿者名:わらび URL:
タイトル:Re: chrootは脱出できる

できるみたいです。
http://blog.gcd.org/archives/51069231.html



掲示板▲頁先頭