SFTP 서비스에 chroot를 적용하여 폴더 접근 제한하기
SFTP 서비스에 폴더 접근 제한을 설정하는 방법을 정리한 글입니다.
SFTP 서비스에 chroot를 적용하여 폴더 접근 제한하기
SFTP 서비스 사용방법
기본적인 SFTP 서비스 사용방법은 아래 글에서 설명하고 있다.
https://sirius-mhlee.github.io/posts/how-to-use-sftp/
위 글을 토대로 SFTP 서비스에 정상적으로 접속되는지 먼저 확인해 준다.
SFTP 서비스 접속을 위한 계정 생성
먼저 SFTP 서비스 접속을 위한 계정을 새로 만들어 준다.
adduser
명령을 사용하면 만들 수 있다. guest 라는 이름의 계정을 생성해 보자.
1
sudo adduser guest
비밀번호 이외 다른 항목은 값 입력 없이 Enter 를 쳐서 기본값으로 설정하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Adding user `guest' ...
Adding new group `guest' (1001) ...
Adding new user `guest' (1001) with group `guest' ...
Creating home directory `/home/guest' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for guest
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
계정의 Shell 변경
그리고 계정의 Shell을 nologin
Shell로 변경해 준다.
아래 명령어로 /etc/passwd
파일을 열어준다.
1
sudo nano /etc/passwd
guest 계정 부분의 Shell을 다음과 같이 /usr/sbin/nologin
으로 바꾸어 준다.
1
guest:x:1001:1001:,,,:/home/guest:/usr/sbin/nologin
SFTP 서비스 공개 폴더 생성 및 chroot 적용
SFTP 서비스 접속시 최상위 위치 로 사용할 폴더를 생성해 준다.
1
sudo mkdir /home/guest/sftp
이제 chroot
를 적용해야 하는데, 다음 명령어로 /etc/ssh/sshd_config
파일을 열어준다.
1
sudo nano /etc/ssh/sshd_config
파일의 맨 아래에 다음과 같이 작성해 준다.
1
2
3
Match User guest
ForceCommand internal-sftp
ChrootDirectory /home/guest/sftp
홈 디렉토리의 소유자와 소유그룹을 root로 변경해 준다.
1
sudo chown root:root /home/guest
마지막으로 guest 계정이 자유롭게 사용할 수 있는 폴더만 생성해주면 된다.
1
2
sudo mkdir /home/guest/sftp/share
sudo chown guest:guest /home/guest/sftp/share
컴퓨터를 재부팅하고 SFTP 서비스에 접속해보면 지정된 최상위 위치 를 벗어나지 못하는 것을 확인할 수 있다.
This post is licensed under CC BY 4.0 by the author.