웹사이트 검색

Chrooted Jail을 사용하여 홈 디렉토리에 대한 SSH 사용자 액세스 제한


특히 웹 서버에서 SSH 사용자 세션을 특정 디렉터리로 제한하는 데는 여러 가지 이유가 있지만 가장 확실한 이유는 시스템 보안입니다. 특정 디렉토리에서 SSH 사용자를 잠그기 위해 chroot 메커니즘을 사용할 수 있습니다.

Linux와 같은 Unix 계열 시스템에서 루트 변경(chroot)은 Linux 시스템의 나머지 부분에서 특정 사용자 작업을 분리하는 수단입니다. 현재 실행 중인 사용자 프로세스와 해당 하위(상위) 프로세스의 명백한 루트 디렉터리를 chrooted Jail이라는 새 루트 디렉터리로 변경합니다.

이 튜토리얼에서는 Linux에서 특정 디렉터리에 대한 SSH 사용자 액세스를 제한하는 방법을 보여줍니다. 모든 명령은 루트로 실행됩니다. 일반 사용자로 서버에 로그인한 경우 sudo 명령을 사용하세요.

1단계: SSH Chroot Jail 생성

1. 아래 mkdir 명령을 사용하여 chroot Jail을 생성하는 것부터 시작하세요.

mkdir -p /home/test

2. 다음으로 필요한 파일을 식별합니다. sshd_config 매뉴얼 페이지에 따라 ChrootDirectory 옵션은 인증 후 chroot할 디렉터리의 경로 이름을 지정합니다. . 디렉터리에는 사용자 세션을 지원하는 데 필요한 파일과 디렉터리가 포함되어 있어야 합니다.

대화형 세션의 경우 최소한 셸, 일반적으로 sh 및 null, zero, stdin, stdout, stderr 및 tty 장치와 같은 기본 /dev 노드가 필요합니다.

ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. 이제 mknod 명령을 사용하여 다음과 같이 /dev 파일을 생성합니다. 아래 명령에서 -m 플래그는 파일 권한 비트를 지정하는 데 사용됩니다. c는 문자 파일을 의미하며 두 숫자는 파일이 가리키는 주 번호와 부 번호입니다. .

mkdir -p /home/test/dev/		
cd /home/test/dev/
mknod -m 666 null c 1 3
mknod -m 666 tty c 5 0
mknod -m 666 zero c 1 5
mknod -m 666 random c 1 8

4. 그런 다음 chroot Jail에 적절한 권한을 설정합니다. chroot Jail과 해당 하위 디렉터리 및 하위 파일은 root 사용자가 소유해야 하며 일반 사용자나 그룹이 쓸 수 없어야 합니다.

chown root:root /home/test
chmod 0755 /home/test
ls -ld /home/test

2단계: SSH Chroot Jail용 대화형 셸 설정

5. 먼저 bin 디렉토리를 생성한 다음 다음을 사용하여 /bin/bash 파일을 bin 디렉토리에 복사합니다. cp 명령은 다음과 같습니다.

mkdir -p /home/test/bin
cp -v /bin/bash /home/test/bin/

6. 이제 아래와 같이 공유 libs에 필요한 bash를 식별하고 이를 lib 디렉터리에 복사합니다.

ldd /bin/bash
mkdir -p /home/test/lib64
cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

3단계: SSH 사용자 생성 및 구성

7. 이제 useradd 명령을 사용하여 SSH 사용자를 생성하고 해당 사용자에 대한 보안 비밀번호를 설정합니다.

useradd tecmint
passwd tecmint

8. chroot Jail 일반 구성 디렉터리인 /home/test/etc를 만들고 업데이트된 계정 파일(/etc/passwd 및 < Strong>/etc/group)을 다음과 같이 이 디렉토리에 추가합니다.

mkdir /home/test/etc
cp -vf /etc/{passwd,group} /home/test/etc/

4단계: Chroot Jail을 사용하도록 SSH 구성

9. 이제 sshd_config 파일을 엽니다.

vi /etc/ssh/sshd_config

파일에서 아래 줄을 추가/수정합니다.

#define username to apply chroot jail to
Match User tecmint
#specify chroot jail
ChrootDirectory /home/test

파일을 저장하고 종료한 후 SSHD 서비스를 다시 시작합니다.

systemctl restart sshd
OR
service sshd restart

5단계: Chroot Jail로 SSH 테스트

10. 이 시점에서 chroot Jail 설정이 예상대로 작동하는지 테스트합니다.

ssh [email 
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

위 스크린샷에서 SSH 사용자가 루트가 지정된 감옥에 잠겨 있으며 외부 명령(ls, date, uname 등)을 실행할 수 없음을 알 수 있습니다.

사용자는 아래와 같이 bash 및 (pwd, History, echo 등) 내장 명령만 실행할 수 있습니다.

ssh [email 
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history

6단계. SSH 사용자의 홈 디렉터리 생성 및 Linux 명령 추가

11. 이전 단계에서 사용자가 루트 디렉토리에 잠겨 있음을 알 수 있습니다. 다음과 같이 SSH 사용자를 위한 홈 디렉토리를 생성할 수 있습니다(향후 모든 사용자에 대해 이 작업을 수행).

mkdir -p /home/test/home/tecmint
chown -R tecmint:tecmint /home/test/home/tecmint
chmod -R 0700 /home/test/home/tecmint

12. 다음으로 bin 디렉토리에 ls, date 및 mkdir과 같은 몇 가지 사용자 명령을 설치합니다.

cp -v /bin/ls /home/test/bin/
cp -v /bin/date /home/test/bin/
cp -v /bin/mkdir /home/test/bin/

13. 다음으로, 위 명령에 대한 공유 라이브러리를 확인하고 chrooted Jail Library 디렉토리로 이동합니다.

ldd /bin/ls
cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

7단계. Chroot Jail로 SFTP 테스트

14. SFTP를 사용하여 최종 테스트를 수행합니다. 방금 설치한 명령이 작동하는지 확인하세요.

/etc/ssh/sshd_config 파일에 아래 줄을 추가합니다.

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

파일을 저장하고 종료합니다. 그런 다음 SSHD 서비스를 다시 시작합니다.

systemctl restart sshd
OR
service sshd restart

15. 이제 SSH를 사용하여 테스트하면 다음 오류가 발생합니다.

ssh [email 

다음과 같이 SFTP를 사용해 보세요.

sftp [email 

지금은 그게 다야! 이 기사에서는 Linux의 특정 디렉터리(Chrooted Jail)에서 SSH 사용자를 제한하는 방법을 보여주었습니다. 아래의 의견 섹션을 사용하여 이 가이드에 대한 귀하의 생각을 알려주십시오.