rsshによるセキュアなファイル転送


サーバに置いたファイルを外部から扱う方法の一つとしてsshがあります。sshの良いところは、秘密鍵を使用した認証(秘密鍵なら絶対安全というわけではありませんが)や単一のポート(22番)でセキュアな通信路を確保できることにありますが、一方でシステムにログインしてシェルでありとあらゆるコマンドが使用できてしまうという問題もあります。基本的に管理者以外はシェルでのアクセスはさせずに、ftpに変わる方法でセキュアなファイル転送をさせたい場合、何らかの対策が必要になります。そのような要求に答えてくれるのが、rsshです。
rssh はホストへの ssh を使ったアクセスの制限を提供する制限付きシェルで、シェルが rssh に設定されたユーザには、scp、sftp、cvs、rdist、rsyncのうち許可されたものしか利用できないようにできます。ここでは、scp と sftp のみを許可するイメージで、概要を示します。
なお、SSHそのものやクライアントとしてよく使用されるWinSCPについては、他にいくらでも情報があるのでそちらを参照ください。

■rsshのダウンロードとインストール

まずは、rsshをダウンロードしてインストールします。バージョン2.2.2には問題があるので、必ずバージョン2.2.3以降を使用してください。2005/01/15現在、このバージョン2.2.3は作者の本家には置いてないので、こちらからダウンロードしてください。(作者が忙しく本家をフォローできない様子) なお、rsshは日本語サイトもあるので参考にされるといいでしょう。
なお、ダウンロード先にはソース以外にrpmおよびsrpmが用意されているので、基本的にそちらを利用することを薦めます。RedHat系はそのままrpmが使用できます。
一方、SuSEの方はというと、いつものとおり素直にはいきませんでした。仕方ないので、srpmを利用させてもらいパッチをあててrpmを作成しました。作成したrpmとsrpmはダウンロードに置いておきます。9.x系は全てOKです。
  1. [ソースインストール]

    rsshをこちらから、rsshをダウンロードしてインストールする。下記では、configureオプションでrssh本体を /usr/bin/rssh配下に、設定ファイル(rssh.conf)を /etc/rssh.confにインストールするようにした。

    # wget http://jaist.dl.sourceforge.net/sourceforge/rssh/rssh-2.2.3.tar.gz
    # tar zxfv rssh-2.2.3.tar.gz
    # cd rssh-2.2.3
    # ./configure --prefix=/usr --sysconfdir=/etc
    # make
    # make install


    [SRPM/RPMインストール]

    rsshのsrpmをこちらもしくはおやじのところ(SuSE9.xの場合)からダウンロードしてインストールする。rpmならダウンロード場所にあわせて最後の一行のみ。

    # cd /usr/src/redhat/SOURCES
    # wget http://jaist.dl.sourceforge.net/sourceforge/rssh/rssh-2.2.3-1.src.rpm
    # rpmbuild --rebuild rssh-2.2.3-1.src.rpm

    # rpm -Uvh ../RPMS/i386/rssh-2.2.3-1.i586.rpm


  2. rsshの動作条件を /etc/rssh.conf で設定する。ここでは、SCPとSFTPのみ許可した。

    # This is the default rssh config file

    # set the log facility.  "LOG_USER" and "user" are equivalent.
    logfacility = LOG_USER

    # Leave these all commented out to make the default action for rssh to lock
    # users out completely...

    allowscp    # 「SCP」を許可するため行頭の'#'を外す。
    allowsftp    # 「SFTP」を許可するため行頭の'#'を外す。
    #allowcvs
    #allowrdist
    #allowrsync

    # set the default umask
    umask = 022

       :
       :


■ユーザの設定

ユーザ毎に制限を加えるには、そのパスワードエントリでシェルが rssh になるようにします。変更(新規)方法は、usermodやuseraddコマンドで-s オプションでシェルのパスを「/usr/bin/rssh 」にするか、YaST等のGUIツールで同様にシェルのパスを「/usr/bin/rssh 」に変更するだけです。

■動作試験

ここで、思い通りの動作をしているかサーバ機で確認してみてください。下記は、rootで設定変更したoyajiにログインした例です。

# slogin oyaji@localhost
Password:
*****
Last login: Tue Jan 18 21:43:45 2005 from localhost
Have a lot of fun...

This account is restricted by rssh.
Allowed commands: scp sftp

If you believe this is in error, please contact your system administrator.

Connection to localhost closed.


■考察

rsshを用いることで、かなりセキュアなファイル転送システムができるのは事実であるが、欠点がないわけではない。

  1. FTPのようにユーザ毎に一括してchrootができないため、ユーザ毎のホームページデータのアップローダとして使用するには、使用する人間のスキルを考えるとチョットしたミスでシステム関連のファイルが消えてしまう等、かなり危険が伴う。~/public_html配下しかアクセスできないようにする方法はないものか?
    本件は、chroot jailできるとの指摘をいただき、チャレンジしてみましたがおやじにはできませんでした。下記のほか付属ドキュメントにも説明がありますので、必要な方はチャレンジしてみてはどうでしょうか?

     http://www.sdri.co.jp/rssh/index.html.ja

  2. マシンパワーに依存すると思うが、FTPに比べて格段に転送速度が遅いので、大量のデータを扱うにはやや難がある。セキュリティとのバータである以上やむを得ないことである。FTP+SSLはその中間といったところであるが、Downloadはかなり早くFTPと遜色ないがUploadはrssh並み。ただ、rsshとftp+sslではUploadとDownloadで全く違う傾向を示しているのは何故?

    アクセス構成 Upload Download
    時間(sec) 速度(KByte/s) 時間(sec) 速度(KByte/s)
    rssh 36 1,800 81 800
    ftp
    (proftpd)
    7 9,600 7 9,600
    ftp+ssl
    (proftpd)
    26 2,490 10 6,422

    • サーバ機: Celeron 1.4G, Memory 512MByte, SuSE9.0
    • クライアント機: Pentium4 2.6G HT, Memory 1GByte DC, WindowsXP sp2


Top Pageへ