chroot Jail을 사용하여 SFTP 사용자를 홈 디렉터리로 제한하는 방법

이 튜토리얼에서는 SFTP 사용자를 홈 디렉토리 또는 특정 디렉토리로 제한하는 방법에 대해 논의할 것입니다. 이는 사용자가 자신의 홈 디렉토리에만 액세스할 수 있고 전체 파일 시스템에는 액세스할 수 없음을 의미합니다.

사용자 홈 디렉토리를 제한하는 것은 특히 공유 서버 환경에서 중요합니다. 이렇게 함으로써 무단으로 다른 사용자의 파일 및 폴더를 엿볼 수 없습니다.

중요: 이 문서의 목적은 SFTP 액세스만 제공하는 것이며 SSH 로그인을 제공하지 않습니다. 이 문서를 따르면 파일 전송을 수행할 수 있지만 원격 SSH 세션을 수행할 수는 없습니다.

권장 독서: Chrooted Jail을 사용하여 특정 디렉토리에 대한 SSH 사용자 액세스 제한하기

이를 수행하는 가장 간단한 방법은 SFTP 액세스를 위한 chrooted jail 환경을 만드는 것입니다. 이 방법은 모든 Unix/Linux 운영 체제에 대해 동일합니다. chrooted 환경을 사용하여 사용자를 홈 디렉토리 또는 특정 디렉토리로 제한할 수 있습니다.

홈 디렉토리로 사용자 제한하기

이 섹션에서는 sftpgroup이라는 새 그룹을 만들고 사용자 계정에 올바른 소유권과 권한을 할당할 것입니다. 사용자를 홈 디렉토리 또는 특정 디렉토리로 제한하는 두 가지 방법이 있으며, 이 문서에서 두 가지 방법을 모두 살펴볼 것입니다.

사용자 및 그룹 생성 또는 수정

기존 사용자를 그의/그녀의 홈 디렉토리인 /home/tecmint로 제한하십시오. 이를 위해 다음과 같이 sftpgroup 그룹을 만들어야 합니다. groupadd 명령을 사용하여:

# groupadd sftpgroup

다음으로, 사용자 ‘tecmint’sftpgroup 그룹에 할당하십시오.

# usermod -G sftpgroup tecmint

또한 useradd 명령을 사용하여 새 사용자를 만들 수 있으며, 예를 들어 senthil을(를) 만들고 사용자를 sftpusers 그룹에 할당하십시오.

# adduser senthil -g sftpgroup -s /sbin/nologin
# passwd tecmint

SSH 구성 파일 수정

/etc/ssh/sshd_config 구성 파일을 열어 다음 줄을 추가하십시오.

Subsystem sftp internal-sftp
 
   Match Group sftpgroup
   ChrootDirectory /home
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

파일을 저장하고 나가서 새로운 변경 사항을 적용하려면 sshd 서비스를 다시 시작하십시오.

# systemctl restart sshd
OR
# service sshd restart

여러 사용자를 동일한 디렉토리로 chroot하는 경우 각 사용자의 홈 디렉토리의 권한을 변경하여 다른 모든 사용자가 서로의 홈 디렉토리를 찾아보지 못하도록 해야 합니다.

# chmod 700 /home/tecmint

SSH 및 SFTP 사용자 로그인 확인

이제 로컬 시스템에서 로그인을 확인할 때입니다. 로컬 시스템에서 원격 시스템에 ssh를 시도하십시오.

# ssh [email protected]

여기에서,

  1. tecmint – 원격 시스템의 사용자 이름.
  2. 192.168.1.150 – 원격 시스템의 IP 주소.
샘플 출력:
[email protected]'s password: 
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.

그런 다음 SFTP를 사용하여 원격 시스템에 액세스하십시오.

# sftp [email protected]
샘플 출력:
[email protected]'s password: 
Connected to 192.168.1.150.
sftp>

현재 작업 디렉토리를 확인하겠습니다:

sftp&gt pwd
Remote working directory: /

sftp&gt ls
tecmint  

여기서 tecmint는 홈 디렉토리입니다. tecmint 디렉토리로 이동하여 원하는 파일이나 폴더를 만드세요.

sftp&gt cd tecmint
Remote working directory: /

sftp&gt mkdir test
tecmint  

특정 디렉토리로 사용자 제한

이전 예제에서 기존 사용자를 홈 디렉토리로 제한했습니다. 이제 새 사용자를 사용자 정의 디렉토리로 제한하는 방법을 살펴보겠습니다.

그룹 및 새 사용자 생성

새 그룹 sftpgroup을 만드세요.

# groupadd sftpgroup

다음으로 SFTP 그룹을 위한 디렉토리를 만들고 루트 사용자에게 권한을 할당하세요.

# mkdir -p /sftpusers/chroot
# chown root:root /sftpusers/chroot/

다음으로 각 사용자를 위한 새 디렉토리를 만들어 전체 액세스 권한을 부여하세요. 예를 들어, 다음 명령어 시리즈를 사용하여 올바른 그룹 권한을 사용하여 tecmint 사용자와 새 홈 디렉토리를 만들겠습니다.

# adduser tecmint -g sftpgroup -s /sbin/nologin
# passwd tecmint
# mkdir /sftpusers/chroot/tecmint
# chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
# chmod 700 /sftpusers/chroot/tecmint/

SFTP 액세스를 위해 SSH 구성

파일 끝에 다음 줄을 수정하거나 추가하세요.

#Subsystem  	sftp	/usr/libexec/openssh/sftp-server
Subsystem sftp  internal-sftp
 
Match Group sftpgroup
   ChrootDirectory /sftpusers/chroot/
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

파일을 저장하고 종료하세요. 저장된 변경 사항이 적용되도록 sshd 서비스를 다시 시작하세요.

# systemctl restart sshd
OR
# service sshd restart

이것으로 끝났습니다. 위에서 제공된 단계를 사용하여 원격 SSH 및 SFTP 서버에 로그인하여 확인할 수 있습니다. SSH 및 SFTP 로그인 확인.

이 방법은 쉘 액세스를 비활성화하므로 원격 시스템의 쉘 세션에 SSH를 사용하여 액세스할 수 없습니다. 로컬 및 원격 시스템 간에 파일을 전송하려면 SFTP를 통해 원격 시스템에만 액세스할 수 있습니다.

결론

이제 리눅스에서 Chroot 환경을 사용하여 사용자 홈 디렉토리를 제한하는 방법을 알게 되었습니다. 이것이 유용하다고 생각하면 소셜 네트워크에서 이 문서를 공유하고 아래의 댓글 섹션에서 사용자 홈 디렉토리를 제한하는 다른 방법이 있는지 알려주세요.

Source:
https://www.tecmint.com/restrict-sftp-user-home-directories-using-chroot/