Tips - etc/Ubuntu

Ubuntu 에서 SFTP 사용시 사용자 폴더에 가두기

Logger.one 2020. 5. 24. 23:46
반응형

 

Ubuntu에서 SFTP 사용 시 로그인 사용자를 해당 폴더에 가두는 방법입니다. ( SSH를 사용하기 때문에 vsftpd는 필요 없습니다. )

 

0. 조건

 

- 우선 SSH 가 깔려 있다는 것을 전제로 합니다.

- 사용자 그룹 sftponly 에 등록된 사용자들을 sftp 폴더에 가두게 될 것입니다.

 

* 주의 : SSH 사용자를 sftponly 그룹에 등록하지 마시기 바랍니다. sftponly에 등록된 사용자는 ssh에 로그인이 되지 않게 될 것입니다.

 

1. SSH config 변경하기

 

우선 /etc/ssh/sshd_config 를 수정합니다.

 

$ vim /etc/ssh/sshd_config

 

그리고 문서의 최하단으로 내리셔서 아래와 같이 internal-sftp을 추가하고 Match Group를 추가하도록 합니다.

 

변경 전
Subsystem sftp /usr/lib/openssh/sftp-server

변경 후
Subsystem sftp internal-sftp /usr/lib/openssh/sftp-server

최하단에 아래의 문구 추가

Match Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

 

이제 모두 완료 되었다면 저장 후 닫아 주시고 ssh를 재시작해 주도록 합니다.

 

$ service sshd restart

 

2. 사용자 추가 및 설정

 

아래의 명령어로 sftponly 를 추가하고 환경을 설정해 주도록 합니다.

 

groupadd sftponly

useradd tutorial_sftp
passwd

*비밀번호 입력과정 진행

usermod tutorial_sftp -g sftponly
usermod tutorial_sftp -s /bin/false
usermod tutorial_sftp -d /data/server

 

각 명령어 별로 설명을 드리면

 

groupadd sftponly

- 그룹을 추가 합니다.

 

useradd tutorial_sftp

- tutorial_sftp라는 사용자를 추가합니다/

 

passwd

- 이전에 등록한 사용자의 비밀번호를 설정합니다.

 

usermod tutorial_sftp -g sftponly

- tutorial_sftp을 sftponly 그룹에 등록합니다.

 

usermod tutorial_sftp -s /bin/false

- tutorial_sftp의 설정을 /bin/false로 변경합니다. 효과는 쉘 권한을 없애며 쉘 로그인이 불가능 해집니다. 

 

* sftponly에 등록이 되어 있어도 /bin/bash 면 쉘 로그인은 가능합니다. 만약 실수로 쉘 유저를 sftponly 에 등록하는 바람에 로그인이 안된다면 이 부분을 /bin/bash로 수정하시면 됩니다. ( 혹은 /etc/passwd를 직접 수정 )

 

usermod tutorial_sftp -d /data/server

- tutorial_sftp의 홈 디렉터리를 설정합니다. 

 

* 주의하셔야 할 부분입니다. sftp의 홈 디렉터리는 root 권한으로 설정되어 있어야 합니다. 만약 다르다면 Command failed.라는 메시지를 보게 될 것입니다.

 

이제 sftp에 로그인해보시면 정상적으로 작동하는 모습을 확인하실 수 있으실 것입니다.

반응형