差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

兩邊的前次修訂版 前次修改
下次修改
前次修改
tech:rssh [2008/05/27 08:07] jonathantech:rssh [2009/03/03 01:03] (目前版本) jonathan
行 1: 行 1:
 +====== 使用 rssh 來解決只能使用 scp/sftp 與限制權限功能 ======
 +  * rssh 官方網址 : http://www.pizzashack.org/rssh/
 +
 +<note warning>
 +  * **本頁內容目前測試還是無法正常運作**
 +  * 僅留下提供未來有機會需要時的參考資訊
 +  * 實際完成此功能請參考 **[[tech:jailkit]]**
 +</note>
 +
 +===== - 下載與安裝 =====
 +  * 以下是針對在 CentOS 5 32bit 實際執行的語法
 +  * rssh 版本為 2.3.2
 +<code>
 +su - root
 +cd /tmp
 +wget http://nchc.dl.sourceforge.net/sourceforge/rssh/rssh-2.3.2.tar.gz
 +tar -zxvf rssh-2.3.2.tar.gz
 +cd rssh-2.3.2
 +./configure
 +make
 +make install
 +</code>
 +  * 執行以上指令後就會將 rssh 安裝到 /usr/local/bin/rssh , 可以執行以下語法瞭解相關檔案位置
 +<code>
 +rssh -v
 +</code>
 +<file>
 +[root@vm-server rssh-2.3.2]# rssh -v
 +
 +rssh 2.3.2
 +Copyright 2002-5 Derek D. Martin <rssh-discuss at lists dot sourceforge dot net>
 +
 +    rssh config file = /usr/local/etc/rssh.conf
 +  chroot helper path = /usr/local/libexec/rssh_chroot_helper
 +     scp binary path = /usr/bin/scp
 +  sftp server binary = /usr/libexec/openssh/sftp-server
 +     cvs binary path = /usr/bin/cvs
 +   rdist binary path = /usr/bin/rdist
 +   rsync binary path = /usr/bin/rsync
 +</file>
 +
 +===== - 參數檔設定 =====
 +<code h|h vi /usr/local/etc/rssh.conf>
 +:
 +allowscp
 +allowsftp
 +#allowcvs
 +#allowrdist
 +#allowrsync
 +:
 +</code>
 +
 +
 +===== - 設定登入後只能在自己的目錄內 =====
 +  * 設定 /usr/chroot 為登入後的根目錄
 +
 +相關檔案如下:
 +  * /usr/bin/scp
 +  * /usr/libexec/openssh/sftp-server
 +  * /usr/local/libexec/rssh_chroot_helper
 +
 +<code>
 +mkdir -p /usr/chroot/usr/bin
 +cp -p /usr/bin/scp /usr/chroot/usr/bin/
 +mkdir -p /usr/chroot/usr/libexec/openssh
 +cp -p /usr/libexec/openssh/sftp-server /usr/chroot/usr/libexec/openssh/
 +mkdir -p /usr/chroot/usr/local/libexec
 +cp -p /usr/local/libexec/rssh_chroot_helper /usr/chroot/usr/local/libexec/rssh_chroot_helper
 +ldd `which scp`
 +看到一堆相關的 lib 必須複製進去 /usr/chroot 內
 +mkdir -p /usr/chroot/lib
 +cp -p /lib/ld-linux.so.2 /usr/chroot/lib/
 +cp -p /lib/libresolv.so.2 /usr/chroot/lib/
 +cp -p /lib/libcrypto.so.6 /usr/chroot/lib/
 +cp -p /lib/libutil.so.1 /usr/chroot/lib/
 +cp -p /lib/libnsl.so.1 /usr/chroot/lib/
 +cp -p /lib/libcrypt.so.1 /usr/chroot/lib/
 +cp -p /lib/libcom_err.so.2 /usr/chroot/lib/
 +cp -p /lib/libdl.so.2 /usr/chroot/lib/
 +cp -p /lib/libc.so.6 /usr/chroot/lib/
 +cp -p /lib/libkeyutils.so.1 /usr/chroot/lib/
 +cp -p /lib/libpthread.so.0 /usr/chroot/lib/
 +cp -p /lib/libselinux.so.1 /usr/chroot/lib/
 +cp -p /lib/libsepol.so.1 /usr/chroot/lib/
 +mkdir -p /usr/chroot/usr/lib
 +cp -p /usr/lib/libz.so.1 /usr/chroot/usr/lib/
 +cp -p /usr/lib/libgssapi_krb5.so.2 /usr/chroot/usr/lib/
 +cp -p /usr/lib/libkrb5.so.3 /usr/chroot/usr/lib/
 +cp -p /usr/lib/libk5crypto.so.3 /usr/chroot/usr/lib/
 +cp -p /usr/lib/libnss3.so /usr/chroot/usr/lib/
 +cp -p /usr/lib/libkrb5support.so.0 /usr/chroot/usr/lib/
 +cp -p /usr/lib/libplc4.so /usr/chroot/usr/lib/
 +cp -p /usr/lib/libplds4.so /usr/chroot/usr/lib/
 +cp -p /usr/lib/libnspr4.so /usr/chroot/usr/lib/
 +mkdir -p /usr/chroot/etc/
 +cp -p /etc/passwd /usr/chroot/etc/
 +cp -a /etc/ld.so* /usr/chroot/etc/
 +mkdir -p /usr/chroot/dev/
 +service syslog stop
 +/sbin/syslogd -a /usr/chroot/dev/log
 +service syslog start
 +mkdir -p /usr/chroot/home/
 +</code>
 +
 +<code h|h vi /usr/local/etc/rssh.conf>
 +:
 +chrootpath = /usr/chroot
 +:
 +</code>
 +
 +===== - 建立使用 rssh 帳號 =====
 +  * Exp. 建立 scusftp 這個帳號只能使用 sftp 與 scp 
 +<code>
 +
 +useradd scusftp -d /usr/chroot/home/scusftp -s /usr/local/bin/rssh
 +passwd scusftp <- 設定密碼
 +</code>
 +<code h|h vi /etc/passwd>
 +:
 +scusftp:x:510:510::/home/scusftp:/usr/local/bin/rssh
 +</code>
 +
 +===== - 使用 winscp 測試與驗證 =====
 +<note wraning>
 +  * 如果不設定 chroot 可以正常運作.. 
 +  * 依據以上將所有相關 lib 複製到 chroot 之後, 目前已不會出現錯誤訊息..但是 sftp 還是會立即登出
 +  * 打算考慮改用 [[http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html|jailkit]] 來當替代方案
 +</note>
 +
 +  * 使用 [[http://winscp.net/eng/download.php|winscp]] 版本 4.1.0 Build 375 測試可以正確登入
 +{{:tech:sftp.png}}
 +  * 使用 ssh 登入時會出現以下的錯誤訊息(不允許使用 ssh 操作模式)
 +<file>
 +This account is restricted by rssh.
 +Allowed commands: scp sftp
 +
 +If you believe this is in error, please contact your system administrator.
 +</file>
 +
 +===== 參考資料 =====
 +  * [[http://www.sdri.co.jp/rssh/CHROOT_en.html|Setting up a chroot jail for rssh]]
 +  * [[http://www.kathmannlabs.net/mediawiki/index.php/Red_Hat_SFTP_How-to|Red Hat SFTP How-to]]
 +  * [[http://www.sun.com/bigadmin/content/submitted/chroot_jail_rssh.jsp|Setting Up a Chroot Jail With rssh in the Solaris 8 OS]]
 +
 +{{tag>ssh sftp scp 密技}}