몇 가지 이유가 있습니다 SSH 사용자 세션 제한 특정 디렉토리, 특히 웹 서버에서, 그러나 분명한 것은 시스템 보안입니다. 특정 디렉토리에서 SSH 사용자를 잠그려면 다음을 사용할 수 있습니다. chroot 기구.
루트 변경(chroot) Linux와 같은 Unix 계열 시스템에서 특정 사용자 작업을 나머지 Linux 시스템과 분리하는 수단입니다. 현재 실행 중인 사용자 프로세스의 겉보기 루트 디렉터리와 해당 하위 프로세스를 a라는 새 루트 디렉터리로 변경합니다. chrooted 감옥.
이 자습서에서는 Linux에서 지정된 디렉터리에 대한 SSH 사용자 액세스를 제한하는 방법을 보여줍니다. 모든 명령을 루트로 실행한다는 점에 유의하십시오. sudo 명령 일반 사용자로 서버에 로그인한 경우.
1. 아래의 mkdir 명령을 사용하여 chroot 감옥을 만드는 것으로 시작하십시오.
# mkdir -p /홈/테스트.
2. 다음으로 필요한 파일을 식별합니다. sshd_config 매뉴얼 페이지, Chroot 디렉토리
옵션은 인증 후 chroot할 디렉토리의 경로 이름을 지정합니다. 디렉토리에는 사용자 세션을 지원하는 데 필요한 파일과 디렉토리가 포함되어야 합니다.
대화식 세션의 경우 일반적으로 최소한 셸이 필요합니다. 쉿
, 기본 /dev
null, zero, stdin, stdout, stderr 및 tty 장치와 같은 노드:
# ls -l /dev/{null, 0, stdin, stdout, stderr, random, tty}
3. 이제 생성 /dev
파일을 사용하여 다음과 같이 mknod 명령. 아래 명령에서 -중
플래그는 파일 권한 비트를 지정하는 데 사용되며, 씨
문자 파일을 의미하고 두 숫자는 파일이 가리키는 주 및 부 번호입니다.
# 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 제로 c 1 5. # mknod -m 666 랜덤 c 1 8.
4. 그런 다음 chroot 감옥에 적절한 권한을 설정하십시오. chroot 감옥과 그 하위 디렉터리 및 하위 파일은 다음 사람이 소유해야 합니다. 뿌리 사용자이며 일반 사용자나 그룹이 쓸 수 없습니다.
# chown 루트: 루트 /home/test. # chmod 0755 /홈/테스트. # ls -ld /홈/테스트.
5. 먼저, 생성 큰 상자
디렉토리를 복사한 다음 /bin/bash
파일에 큰 상자
디렉토리는 다음과 같습니다.
# mkdir -p /home/test/bin. # cp -v /bin/bash /home/test/bin/
6. 이제 공유가 필요한 bash를 식별하십시오. 도서관
, 아래와 같이 복사하여 라이브러리
예배 규칙서:
# 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/
7. 이제 다음을 사용하여 SSH 사용자를 만듭니다. 사용자 추가 명령 사용자에 대한 보안 암호를 설정합니다.
# useradd tecmint. # passwd 텍민트.
8. chroot 감옥 일반 구성 디렉토리를 작성하십시오. /home/test/etc
업데이트된 계정 파일을 복사합니다(/etc/passwd 그리고 /etc/group) 다음과 같이 이 디렉토리로 이동합니다.
# mkdir /home/test/etc. # cp -vf /etc/{패스워드, 그룹} /home/test/etc/
메모: 시스템에 SSH 사용자를 더 추가할 때마다 업데이트된 계정 파일을 /home/test/etc
예배 규칙서.
9. 자, 열어 sshd_config
파일.
# vi /etc/ssh/sshd_config.conf
파일에서 아래 줄을 추가/수정합니다.
# chroot 감옥을 적용할 사용자 이름을 정의합니다. 사용자 tecmint 일치 #chroot 감옥을 지정합니다. ChrootDirectory /home/test
파일을 저장하고 종료하고 SSHD 서비스를 다시 시작합니다.
# systemctl sshd를 다시 시작합니다. 또는. # 서비스 sshd를 다시 시작합니다.
10. 이 시점에서 chroot 감옥 설정이 예상대로 작동하는지 테스트합니다.
# SSH [이메일 보호됨]
-bash-4.1$ ls. -bash-4.1$ 날짜. -bash-4.1$ 이름 없음.
위의 스크린샷에서 SSH 사용자가 chrooted 감옥에 잠겨 있고 외부 명령(ls, date, uname 등)을 실행할 수 없음을 알 수 있습니다.
사용자는 아래와 같이 bash 및 (pwd, history, echo 등) 내장 명령만 실행할 수 있습니다.
# SSH [이메일 보호됨]-bash-4.1$ pwd. -bash-4.1$ echo "Tecmint - 가장 빠르게 성장하는 Linux 사이트" -bash-4.1$ 기록.
11. 이전 단계에서 사용자가 루트 디렉터리에 잠겨 있음을 알 수 있습니다. 다음과 같이 SSH 사용자를 위한 홈 디렉터리를 만들 수 있습니다(모든 미래 사용자에 대해 이 작업을 수행).
# mkdir -p /home/test/home/tecmint. # chown -R tecmint: tecmint /home/test/home/tecmint. # chmod -R 0700 /home/test/home/tecmint.
12. 다음으로 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 라이브러리 디렉토리로 이동합니다.
# 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/
14. sftp를 사용하여 최종 테스트를 수행하십시오. 방금 설치한 명령이 작동하는지 확인하십시오.
아래 줄을 추가하십시오. /etc/ssh/sshd_config
파일:
# sftp를 chrooted jail ForceCommand 내부 sftp로 활성화합니다.
파일을 저장하고 종료합니다. 그런 다음 SSHD 서비스를 다시 시작합니다.
# systemctl sshd를 다시 시작합니다. 또는. # 서비스 sshd를 다시 시작합니다.
15. 이제 SSH를 사용하여 테스트하면 다음 오류가 발생합니다.
# SSH [이메일 보호됨]
다음과 같이 SFTP를 사용해 보십시오.
# sftp [이메일 보호됨]
추천 읽기:chroot Jail을 사용하여 SFTP 사용자를 홈 디렉토리로 제한
지금은 여기까지입니다! 이 기사에서는 Linux의 특정 디렉토리(chrooted jail)에서 SSH 사용자를 제한하는 방법을 보여주었습니다. 아래 의견 섹션을 사용하여 이 가이드에 대한 귀하의 생각을 알려주세요.