Post

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.

© sirius-mhlee. Some rights reserved.

Using the Chirpy theme for Jekyll.