웹사이트 검색

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


이 튜토리얼에서는 SFTP 사용자를 홈 디렉터리나 특정 디렉터리로 제한하는 방법에 대해 설명합니다. 이는 사용자가 전체 파일 시스템이 아닌 해당 홈 디렉토리에만 액세스할 수 있음을 의미합니다.

사용자 홈 디렉터리를 제한하는 것은 특히 공유 서버 환경에서 매우 중요합니다. 그래야 승인되지 않은 사용자가 다른 사용자의 파일과 폴더를 몰래 엿볼 수 없습니다.

중요: 또한 이 문서의 목적은 SSH 로그인이 아닌 SFTP 액세스만 제공하는 것입니다. 이 문서를 따르면 파일 전송을 수행할 수 있는 권한을 갖게 됩니다. 그러나 원격 SSH 세션을 수행하는 것은 허용되지 않습니다.

권장 읽기: Chrooted Jail을 사용하여 특정 디렉토리에 대한 SSH 사용자 액세스를 제한합니다.

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

사용자를 홈 디렉터리로 제한

이 섹션에서는 sftpgroup이라는 새 그룹을 만들고 사용자 계정에 올바른 소유권과 권한을 할당합니다. 사용자를 홈 또는 특정 디렉터리로 제한하는 두 가지 선택 사항이 있습니다. 이 기사에서는 두 가지 방법을 모두 살펴보겠습니다.

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

기존 사용자(예: tecmint)를 /home/tecmint라는 홈 디렉터리로 제한하겠습니다. 이를 위해서는 다음과 같이 groupadd 명령을 사용하여 새 sftpgroup 그룹을 만들어야 합니다.

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 

여기,

  1. tecmint – 원격 시스템의 사용자 이름.
  2. 192.168.1.150 – 원격 시스템의 IP 주소입니다.
샘플 출력:
[email '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 
샘플 출력:
[email '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를 통해서만 원격 시스템에 액세스할 수 있으며 로컬 및 원격 시스템과의 파일 전송을 수행할 수 있습니다.

결론

이제 Linux에서 Chroot 환경을 사용하여 사용자 홈 디렉터리를 제한하는 방법을 알았습니다. 이 내용이 유용하다고 생각되면 소셜 네트워크에서 이 기사를 공유하고 사용자 홈 디렉터리를 제한하는 다른 방법이 있으면 아래 댓글 섹션에 알려주시기 바랍니다.