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.