서버개발

우분투 계정별로 SFTP 접속시 지정한 폴더 상위로 접근 제한하기

CHROOT를 이용한 방법으로 SFTP로 접근했을 경우, 지정한 폴더를 가상 root로 보이게 함으로써 상위폴더로 이동을 못하게 하는 방법입니다. 사실상 유저에게 홈폴더를 만들어주고, 그 홈폴더에서만 놀아라~ 하는 것입니다.

이 경우, SSH 로 터미널 접속은 불가합니다. (SSH도 되면서 SFTP도 막으려면 모든 폴더에 대해서 권한을 지정해 주는 방법을 써야 하는데, 너무 번거롭고 잘못막으니 여러 에러가 발생해서 저는 안했습니다.)

우선 계정을 만들어줘야 합니다.

sudo adduser kildong

/home/kildong 폴더가 생겼을 것입니다. SFTP로 접속시 그곳에서 벗어날 수 없도록 하겠습니다. 일단 /home/kildong 폴더의 소유자를 root로 변경해야 합니다. 그리고 권한을 755로 줍니다. 그리고 그밑에 다시 폴더를 만들어서 권한을 775로 주면 폴더 작업은 완료됩니다.

chown root:kildong /home/kildong
chmod 755 /home/kildong
mkdir /home/kildong/workspace
chown root:kildong /home/kildong/workspace
chmod 775 /home/kildong/workspace
vim /etc/ssh/sshd_config

Subsystem sftp /usr/lib/openssh/sftp-server  이부분을 다음과 같이 바꿔줍니다.

Subsystem sftp internal-sftp

이제 sshd_config 파일 내에서 Match 라는 부분을 찾습니다. 그 아랫부분에 다음 코드를 넣고, 저장하고 나옵니다.

Match User kildong
     ChrootDirectory %h
     ForceCommand internal-sftp
     X11Forwarding no
     AllowTCPForwarding no

SSH 데몬을 재시작한 후, SSH로 접속하면 튕겨 나오는 것을 볼 수 있습니다.(접속불가인데, 느낌이 튕겨나오는 느낌입니다.)

sudo service ssh restart

SFTP로 접속하면 홈폴더가 / 로 보이는 것을 확인 할 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다