Memo/Linux/jailkit

http://dexlab.net/pukiwiki/index.php?Memo/Linux/jailkit
 


jailkit


SCPでWARNINGが出る場合

  1. vim /etc/ssh/sshd_config
  2. ----
  3. # override default of no subsystems
  4. #Subsystem       sftp    /usr/libexec/openssh/sftp-server
  5. Subsystem       sftp    internal-sftp
  6. ----
  7. service sshd reload

chroot環境で操作ログを記録

  • よく使われる script コマンドは/dev/pts/* を参照できないため"openpty failed"エラーとなり使えなかった
  • mount --bind /dev/pts /jail/minissh/dev/pts としてもscriptコマンドは動作せず
  • BASH_COMMAND をtrapする方法
    1. mkdir -p /jail/minissh/etc/profile.d
    2. vim /jail/minissh/etc/profile.d/logging.sh
    3. ----
    4. COMMAND_LOG_FILE=~/.command.log
    5. if [ -n "${BASH_VERSION}" ]; then
    6.   trap "caller >/dev/null || \
    7. printf '%s\\t%s\\t%s\\t%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\" \"\$\$\" \"\${USER}\" \"\${BASH_COMMAND}\" 2>/dev/null >> $COMMAND_LOG_FILE" DEBUG
    8. fi
    9. unset COMMAND_LOG_FILE
    10. ----
    11. chmod 755 /jail/minissh/etc/profile.d/logging.sh

ssh他コマンドのみの環境を作成

  • id svn php 追加
    1. cat >> /etc/jailkit/jk_init.ini << EOS
    2. [id]
    3. comment = print user identity
    4. paths = /usr/bin/id
    5. devices = /dev/null
    6.  
    7. [svn]
    8. comment = Subversion
    9. paths = /usr/bin/svn
    10. devices = /dev/null
    11.  
    12. [php]
    13. comment = php
    14. paths = /usr/bin/php
    15. regularfiles = /etc/php.ini
    16. directories = /usr/lib/php
    17. devices = /dev/null
    18. EOS
  • ssh他コマンドが使える環境
    1. jk_init -v -j /jail/minissh basicshell editors extendedshell netutils ssh sftp scp jk_lsh id svn php
  • hogeユーザを追加
    1. useradd hoge -g GROUPNAME
    2. passwd hoge
    3. jk_jailuser -m -j /jail/minissh/ hoge
  • シェル変更
    1. vi /jail/minissh/etc/passwd
    2. ----
    3. hoge:x:506:501::/home/hoge:/bin/bash
    4. ----
  • sshでログインして確認
    1. ssh hoge@localhost

jailkitでchrootよりも簡単に制限ユーザを作る

  • インストール (CentOS5.2)
    1. yum install jailkit --enablerepo=rpmforge
  • jail用の安全な親ディレクトリを用意
    1. mkdir /jail
    2. chown root.root /jail
    3. chmod 755 /jail
  • 「ldconfig: Can't open configuration file /etc/ld.so.conf: No such file or directory」エラーの場合、以下を追加
    1. vi /etc/jailkit/jk_init.ini
    2. ----
    3. [ldconfig]
    4. executables = /sbin/ldconfig
    5. regularfiles = /etc/ld.so.conf
    6.  
    7. [uidbasics]
    8. this section probably needs adjustment on 64bit systems
    9. or non-Linux systems
    10. regularfiles = /etc/nsswitch.conf /etc/ld.so.conf
    11. comment = common files for all jails that need user/group information
    12. libraries = /lib/libnsl.so.1, /lib64/libnsl.so.1, /lib/libnss*.so.2, /lib64/libnss*.so.2
    13. regularfiles = /etc/nsswitch.conf
    14. includesections = ldconfig
    15. ----
  • sftp,scpしか使えないように、only_sftp 環境を作成
    1. jk_init -v -j /jail/only_sftp sftp scp jk_lsh
  • hogeユーザを追加し、only_sftpに閉じ込める
    1. useradd hoge
    2. passwd hoge
    3. jk_jailuser -j /jail/only_sftp/ hoge
    4. home directory /home/hoge is not within /jail/only_sftp/, move the directory contents?
    5. [Y]/[n]y
  • hogeユーザに実行権限を与える
    1. vi /jail/only_sftp/etc/jailkit/jk_lsh.ini
    2. ----
    3. [DEFAULT]
    4. paths= /usr/bin, /usr/lib/
    5. executables= /usr/bin/scp, /usr/libexec/openssh/sftp-server
    6.  
    7. [hoge]
    8. paths= /usr/bin, /usr/lib/
    9. executables= /usr/bin/scp, /usr/libexec/openssh/sftp-server
    10. ----
  • 接続テスト
    1. $ ssh hoge@ホスト - 接続できなければOK
    2. $ sftp hoge@ホスト - 接続できればOK

シンボリックの代わりにマウントする

  • /var/www/html を読み書きできるようにする場合
  • jailのユーザはその他のディレクトリが見えないので、mountでシンボリックリンクの変わりを作成
    1. chmod -R 777 /var/www/html
    2. mkdir /jail/only_sftp/home/hoge/html
    3. chown hoge /jail/only_sftp/home/hoge/html
    4. mount --bind /var/www/html /jail/only_sftp/home/hoge/html

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-02-20 (木) 19:02:07 (1643d)