0. 내가 원하는것?
  대부분의 사용자가 ssh접속시 자기 홈 디렉토리를 벗어나지 못하게 하고 싶다.
 ftp는 그게 기본적으로 가능하지만, ssh는 chroot 패치를 하므로 가능하다.
 예전부터 하고 싶었지만, 못 했던것을 진행 해 보려 한다.!

1. 설치
  wget http://chrootssh.sourceforge.net/download/openssh-4.2p1-chroot.tar.gz
  tar xvfz openssh-4.2p1-chroot.tar.gz
  cd openssh-4.2p1-chroot
  ./configure --exec-prefix=/usr --sysconfdir=/etc/ssh --with-pam --without-zlib-version-check
  ## 옵션설명:
  ## --with-pam PAM 인증사용
  ## --without-zlib-version-check : 이놈은 zlib 최신버전을 찾지만.. 하지 않게 하려고 한다.
 make
 make install

2. 설정
 1) chroot 적용된 사용자를  /home/chroot에 가둬둔다^^;  그럼 이 디렉토리에 필수파일들을 만든다.
    mkdir -p /home/chroot/home/
    cd /home/chroot
    mkdir -p etc bin lib usr/bin dev
    mknod dev/null c 1 3
    mknod dev/zero c 1 5
 
 2) 가둬진 사용자가 사용할 수 있는 명령어를 복사해 준다.

  APPS="/bin/bash /bin/ls /bin/mkdir /bin/mv /bin/pwd /bin/rm /usr/bin/id /usr/bin/ssh /bin/ping /usr/bin/dircolors /usr/bin/vim"
  unalias cp
  for prog in $APPS;  do
        cp $prog ./$prog

        # 관련라이브러리복사.
        ldd $prog > /dev/null
        if [ "$?" = 0 ] ; then
                LIBS=`ldd $prog | awk '{ print $3 }'`
                for l in $LIBS; do
                        mkdir -p ./`dirname $l` > /dev/null 2>&1
                        cp $l ./$l
                done
        fi
  done

 3) 다음단계?
  cp /lib/libnss_compat.so.2 /lib/libnsl.so.1 /lib/libnss_files.so.2 ./lib/
  echo '#!/bin/bash' > usr/bin/groups
  echo "id -Gn" >> usr/bin/groups
  touch etc/passwd
  grep /etc/passwd -e "^root" > etc/passwd
  grep /etc/group -e "^root" -e "^users" > etc/group
  /etc/init.d/ssh restart

SSH chroot 적용

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다