差異處

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

連向這個比對檢視

兩邊的前次修訂版 前次修改
下次修改
前次修改
tech:jailkit [2008/05/27 10:38] jonathantech:jailkit [2010/02/08 17:02] (目前版本) jonathan
行 1: 行 1:
 +====== 使用 jailkit 限制使用者只能使用 scp/sftp 與特定目錄功能 ======
 +
 +  * jailkit 官方網址 : http://olivier.sessink.nl/jailkit/
 +
 +因為最近有需要提供一個 sftp 的上傳檔案服務,但是不希望使用者可以用到 ssh 登入操作的功能,在 Google 大神的指示下,先找到了 [[http://www.pizzashack.org/rssh/|rssh]] 但是[[tech:rssh|無法成功安裝到 CentOS 5上面]], 後來再找到 jailkit, 終於可以將這個合乎需求的開源自由軟體成功安裝與設定完成.
 +
 +===== - 下載與安裝 =====
 +  * 以下是針對在 CentOS 5 64bit 實際執行的語法
 +  * jailkit 版本為 2.7
 +<code>
 +su - root
 +cd /tmp
 +wget http://olivier.sessink.nl/jailkit/jailkit-2.7.tar.gz
 +tar -zxvf jailkit-2.7.tar.gz
 +cd jailkit-2.7
 +./configure
 +make
 +make install
 +cp extra/jailkit /etc/init.d/jailkit
 +chmod a+x /etc/init.d/jailkit
 +chkconfig jailkit on
 +</code>
 +<note>
 +  * 如果有安裝 rpmforge 可以直接<code sh>yum install jailkit</code>下載安裝
 +  * 然後設定自動啟動<code sh>chkconfig jailkit on</code>
 +</note>
 +
 +===== - 建立虛擬根目錄 =====
 +  * 預計讓所有 sftp 使用者上來的根目錄為 /srv/sftpjail
 +<code>
 +jk_init -v -j /srv/sftpjail sftp scp
 +jk_init -v -j /srv/sftpjail jk_lsh
 +</code>
 +
 +===== - 建立 sftp 使用者 =====
 +  * 預計建立 sftpuser 當預設使用者以及 sftpuser1, sftpuser2 兩位實際使用者, 共用群組 sftpuser
 +<code>
 +useradd sftpuser
 +useradd -g sftpuser sftpuser1
 +useradd -g sftpuser sftpuser2
 +passwd sftpuser <- 設定 sftpuser 密碼
 +passwd sftpuser1 <- 設定 sftpuser1 密碼
 +passwd sftpuser2 <- 設定 sftpuser2 密碼
 +jk_jailuser -m -j /srv/sftpjail sftpuser
 +jk_jailuser -m -j /srv/sftpjail sftpuser1
 +jk_jailuser -m -j /srv/sftpjail sftpuser2
 +</code>
 +  * 建立完成之後可以在 /etc/passwd 看到如下的結果:
 +<file>
 +:
 +sftpuser:x:511:511::/srv/sftpjail/./home/sftpuser:/usr/sbin/jk_chrootsh
 +sftpuser1:x:512:511::/srv/sftpjail/./home/sftpuser1:/usr/sbin/jk_chrootsh
 +sftpuser2:x:513:511::/srv/sftpjail/./home/sftpuser2:/usr/sbin/jk_chrootsh
 +</file>
 +  * 在 /srv/sftpjail/etc/passwd 看到如下的結果:
 +<file>
 +:
 +sftpuser:x:511:511::/home/sftpuser:/usr/sbin/jk_lsh
 +sftpuser1:x:512:511::/home/sftpuser1:/usr/sbin/jk_lsh
 +sftpuser2:x:513:511::/home/sftpuser2:/usr/sbin/jk_lsh
 +</file>
 +
 +===== - 建立虛擬 log device =====
 +  * jk_lsh 可能會出現一些訊息紀錄, 如果有這虛擬的 log device 就可以在 /var/log/message 內看到由 jk_lsh 產生的系統訊息
 +<code>
 +service syslog stop
 +syslogd -a /srv/sftpjail/dev/log
 +service syslog start
 +</code>
 +  * 這樣應該會自動更改到 /etc/jailkit/jk_socketd.ini , 內容如下:
 +<file>
 +[/srv/sftpjail/dev/log]
 +base=512
 +peak=2048
 +interval=10
 +</file>
 +  * 然後重新啟動 jailkit 的 daemon
 +<code>
 +service jailkit restart
 +</code>
 +
 +===== - 設定 sftpuser 群組使用者權限 =====
 +  * 編輯 /srv/sftpjail/etc/jailkit/jk_lsh.ini 設定 sftpuser 群組使用者只能執行 sftp 與 scp
 +<code>
 +[group sftpuser]
 +paths= /usr/bin, /usr/lib/
 +executables= /usr/bin/scp, /usr/libexec/openssh/sftp-server
 +</code>
 +
 +<note>
 +  * 這樣的設定針對 **[[tech:sshlogin]]** 依然有效, 所以只需要將 Client 端的 id_dsa.pub 複製到 Server 端該 account 的 home 目錄內 .ssh/authorized_keys2 , 以下就用 sftpuser 這個 account 來做說明:
 +<code sh>
 +cp id_dsa.pub /srv/sftpjail/home/sftpuser/.ssh/authorized_keys2
 +</code>
 +將權限設定正確
 +<code sh>
 +chown -R sftpuser:sftpuser /srv/sftpjail/home/sftpuser/.ssh/
 +chmod 600 /srv/sftpjail/home/sftpuser/.ssh/authorized_keys2
 +</code>
 +</note>
 +
 +===== 參考資料 =====
 +  * [[http://olivier.sessink.nl/jailkit/howtos_sftp_scp_only.html|Jailkit howto - creating an sftp/scp-only shell in a chroot jail]]
 +
 +{{tag>ssh sftp scp jailkit 密技}}