어떻게 누군가에게 안전하게 쉘을 줄 수 있나요?

어떻게 누군가에게 안전하게 쉘을 줄 수 있나요?

누군가에게 쉘 계정을 제공하는 것에 대해 질문이 있습니다. 얼마나 안전합니까? 그는 /etc를 읽을 수 있습니다. 사용자를 특정 쓰레기통과 자신의 집에만 제한하는 보안 셸 계정을 어떻게 제공할 수 있나요? chroot 감옥이 유일한 방법입니까?

답변1

사용자가 수행할 수 있는 작업을 제어하는 ​​가장 간단하고 효과적인 방법 중 하나는 다음과 같습니다.껍데기.

lshell은 Python으로 작성된 셸로, 사용자 환경을 제한된 명령 집합으로 제한하고, SSH를 통한 모든 명령(예: SCP, SFTP, rsync 등)을 활성화/비활성화하도록 선택하고, 사용자 명령을 기록하고, 시행할 수 있습니다. 타이밍 제한 등.

답변2

누군가에게 쉘 계정을 제공하면 그 사람은 누구나 읽을 수 있는 모든 파일을 볼 수 있습니다. 여기 에는 사용자 이름은 포함하지만 비밀번호는 포함하지 않는 등 /etc시스템 작동에 필요한 많은 파일이 포함됩니다./etc/passwd

사용자가 chroot 내부에만 로그인하도록 허용하면 chroot 외부의 파일을 볼 수 없습니다. 이는 chroot에 충분한 프로그램, 라이브러리 등을 넣어야 함을 의미합니다. 즉, 사용자가 액세스해야 하는 모든 것과 각 종속 항목을 포함합니다.

chroot는 직접적인 파일 액세스만 보호합니다. 사용자는 모든 사용자가 실행하는 프로세스의 이름과 매개변수를 포함하여 모든 종류의 항목을 스누핑할 수 있습니다(SELinux와 같은 추가 보호를 설정하지 않는 한). 사용자가 많은 작업을 수행할 필요가 없는 경우 제한된 셸을 사용하여 더 엄격한 제한을 설정할 수 있지만(사용자가 자신의 실행 파일을 생성하는 것을 방지하는 것을 포함) 제한된 셸 권한을 설정하는 것은 까다롭기 때문에 권장하지 않습니다.

요즘 가상 머신 가격은 매우 저렴합니다. 선택할 수 있는 무료 구현이 많이 있으며(사용자 모드 Linux, VirtualBox, VMware, KVM, OpenVZ, VServer 등) 추가 시스템 설치는 디스크 공간을 거의 사용하지 않습니다(어쨌든 chroot가 필요할 것입니다). 가상 머신은 파일, 프로세스, 네트워크 등 거의 모든 것을 격리합니다. 매우 특이한 제약 조건이 없는 한 이 방법을 사용합니다.

답변3

한 가지 옵션은 제한된 쉘 세션에 넣는 것입니다.rbash[배쉬-r].

정확히 무엇을 달성하려는지는 확실하지 않지만, 겉으로는 "기타"에 대한 POSIX ACL은 물론 계정이 속한 그룹(예: "사용자")에 대한 모든 그룹 ACL에도 적용됩니다. .

답변4

/etc권한이 없는 사용자라도 이 부분을 읽어야 한다는 점을 명심하세요 . 그 중 일부를 /etc읽을 수 없어야 하지만 실제로는 읽을 수 있다면 더 큰 문제가 있는 것이므로 최소한 배포판의 권한 확인/수정을 실행해야 합니다.

감옥은 엄격한 제한을 설정하는 가장 쉬운 방법입니다. SElinux를 설정하고 사용자가 매우 제한된 보안 컨텍스트를 갖도록 조정하는 것과 같은 다른 접근 방식이 있습니다.

관련 정보