SSH를 사용하여 연결할 때 사용자를 고정 디렉터리로 제한할 수 없습니다.
사용자가 /var/www/home으로 제한되기를 원하지만 직접 연결하면 시스템 내에서 자유롭게 이동할 수 있습니다.
내 홈 디렉토리를 /var/www/home으로 설정하여 로그인할 때 해당 디렉토리로 이동하지만 제한하지는 않습니다.
Google의 제안에 따라 몇 가지를 시도했지만 지금까지 아무것도 작동하지 않거나 원하는 대로 작동하지 않는 것 같습니다.
예를 들어 www의 chmod를 755로 변경했는데 루트에는 있지만 여전히 효과가 없습니다.
답변1
"감옥"을 설치해야합니다. ~에서여기:
1단계: 감옥 공간 설정
새 디렉터리를 만듭니다.
mkdir -p /home/test
세션을 지원하는 데 필요한 파일을 찾으십시오. 이상적으로는 시스템의 나머지 부분을 숨기는 것이 목표이므로 최소한의 것만 필요합니다.
ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}
이제 필요한 /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
이제 파일을 소유 root
하고 쓰기만 가능 하도록 설정할 수 있습니다 root
.
chown root:root /home/test
chmod 0755 /home/test
2단계: 셸 설정
먼저 셸 바이너리를 추가합니다 bash
. 예를 들면 다음과 같습니다.
mkdir -p /home/test/bin
cp -v /bin/bash /home/test/bin/
실행하는 데 필요한 라이브러리를 알아보세요 bash
(참고: lib64 라이브러리 이상이 필요할 수 있습니다. 예를 들어 내 라이브러리는 /lib/x86_64-linux-gnu/
및 에 있습니다 /lib64
).
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단계: 사용자 설정
먼저 사용자를 생성하고 비밀번호를 제공하세요.
useradd sshguest
passwd sshguest
이제 필요한 /etc
파일을 이동하십시오.
mkdir /home/test/etc
cp -vf /etc/{passwd,group} /home/test/etc/
4단계: 감옥을 사용하도록 sshd 구성
선호하는 편집기를 사용하여 다음 행을 추가하십시오 /etc/ssh/sshd_config
.
#define username to apply chroot jail to
Match User sshguest
#specify chroot jail
ChrootDirectory /home/test
그런 다음 서비스를 다시 시작하여 새 구성을 로드합니다.
sudo service sshd restart
5단계: 셸이 작동하는지 확인
셸 내장 명령을 연결하고 실행할 수 있어야 합니다.
ssh sshguest@[IP of Host]
$ pwd
$ echo "foo"
6단계: 새 사용자에게 홈 디렉터리를 제공하고 다른 프로그램을 추가합니다.
먼저 계정에 집을 제공하십시오.
mkdir -p /home/test/home/tecmint
chown -R sshguest:sshguest /home/test/home/sshguest
chmod -R 0700 /home/test/home/sshguest
이제 감옥에 갇힌 쉘이 액세스할 수 있게 하려는 프로그램에 대해 바이너리를 반복적으로 복사하고 필요한 공유 라이브러리를 확인한 다음 bash
.ls
cp -v /bin/ls /home/test/bin/
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/
### or whatever directory and libs you need on your system