이 튜토리얼에서는 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]
여기에서,
- tecmint – 원격 시스템의 사용자 이름.
- 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> pwd Remote working directory: / sftp> ls tecmint
여기서 tecmint
는 홈 디렉토리입니다. tecmint 디렉토리로 이동하여 원하는 파일이나 폴더를 만드세요.
sftp> cd tecmint Remote working directory: / sftp> 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/