Memo/Linux/jailkit

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


jailkit


SCPでWARNINGが出る場合

vim /etc/ssh/sshd_config
----
# override default of no subsystems
#Subsystem       sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp
----
service sshd reload

chroot環境で操作ログを記録

  • よく使われる script コマンドは/dev/pts/* を参照できないため"openpty failed"エラーとなり使えなかった
  • mount --bind /dev/pts /jail/minissh/dev/pts としてもscriptコマンドは動作せず
  • BASH_COMMAND をtrapする方法
    mkdir -p /jail/minissh/etc/profile.d
    vim /jail/minissh/etc/profile.d/logging.sh
    ----
    COMMAND_LOG_FILE=~/.command.log
    if [ -n "${BASH_VERSION}" ]; then
      trap "caller >/dev/null || \
    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
    fi
    unset COMMAND_LOG_FILE
    ----
    chmod 755 /jail/minissh/etc/profile.d/logging.sh

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

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

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

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

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

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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38 (94d)