본문 바로가기

리눅스

우분투에서 SFTP에 ChrootDirectory를 설정하여 사용자를 특정 디렉토리에 제한하는 방법

반응형

우분투에서 SFTP에 ChrootDirectory를 설정하여 사용자를 특정 디렉토리에 제한하는 방법

우분투 22.04에서 특정 사용자에게 SFTP만 허용하고, ChrootDirectory로 홈 디렉토리 밖으로 접근하지 못하도록 제한하는 설정입니다.

사용자 생성

sudo adduser 사용자명

Chroot용 디렉토리 소유자 및 권한 설정

sudo chown root:root /home/사용자명
sudo chmod 755 /home/사용자명

SFTP 작업용 디렉토리 생성

sudo mkdir /home/사용자명/upload
sudo chown 사용자명:사용자명 /home/사용자명/upload
sudo chmod 750 /home/사용자명/upload

SSH 설정 파일 수정

sudo vim /etc/ssh/sshd_config
# SFTP 설정
Subsystem sftp internal-sftp

# 특정 사용자에 대한 Chroot 설정
Match User 사용자명
    ChrootDirectory /home/사용자명
    ForceCommand internal-sftp
    AllowTcpForwarding no
    PermitTunnel no
    X11Forwarding no

SSH 설정 점검 및 재시작

sudo sshd -t
sudo systemctl restart sshd
728x90

테스트 환경

$ lsb_release -d
Description:    Ubuntu 22.04.3 LTS

사용자 및 디렉토리 설정

사용자 생성

sudo useradd -m -d /home/testuser -s /usr/sbin/nologin testuser
echo 'testuser:testuser' | sudo chpasswd

Chroot용 디렉토리 소유자 및 권한 설정

sudo chown root:root /home/testuser
sudo chmod 755 /home/testuser

SFTP 작업용 디렉토리 생성

sudo mkdir /home/testuser/upload
sudo chown testuser:testuser /home/testuser/upload
sudo chmod 750 /home/testuser/upload

외부 디렉토리 바인드 마운트

sudo mkdir -p /apps/sftproot
sudo chown testuser:testuser /apps/sftproot
echo '/apps/sftproot /home/testuser/upload none bind 0 0' | sudo tee -a /etc/fstab
sudo mount -a
/apps/sftproot을 upload 폴더에 바인드 마운트
sudo mount --bind /apps/sftproot /home/testuser/upload

마운트 확인

mount | grep testuser
/dev/mapper/vg1-lv--0 on /home/testuser/upload type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)

SSH 설정

설정 파일 수정

vim /etc/ssh/sshd_config
Match User testuser
    ChrootDirectory /home/testuser
    ForceCommand internal-sftp
    AllowTcpForwarding no
    PermitTunnel no
    X11Forwarding no

SSH 설정 점검 및 재시작

sudo sshd -t
sudo systemctl restart sshd

확인 방법

SFTP 클라이언트(FileZilla 등) 또는 터미널

sftp testuser@서버IP

로그인 후

cd upload
put somefile.txt

 

이 설정으로 testuser는 SFTP로 /home/testuser/upload에만 접근 가능하며, 홈 디렉토리 밖으로 나갈 수 없고 SSH 셸 접속도 차단됩니다.

 

반응형