사용자가 시스템과 상호 작용하는 것을 방지합니다.

사용자가 시스템과 상호 작용하는 것을 방지합니다.

저는 사용자를 시스템으로부터 완전히 격리하고 사용자만이 시스템에 로그인하여 열려 있는 프로그램과 상호 작용할 수 있도록 하는 방법을 찾고 있습니다.

이를 달성하는 한 가지 방법은 각 개별 폴더 및/또는 파일의 모든 권한을 제거하는 것입니다.

내 목표는 사용자가 내 시스템에 로그인하여 사용자가 시작하고 상호 작용할 수 있는 Java 실행 파일에만 액세스하도록 허용하는 것입니다.

더 좋은 방법이 있나요?

감사해요

답변1

/bin/rbash이러한 사용자에 대한 기본 셸을 --restricted bash( ) 로 설정할 수 있습니다 bash -r. 바라보다 man rbash. 이는 명령을 통해 수행할 수 있습니다 chsh -s /bin/rbash {USER}.

원하는 명령 이외의 명령을 실행하지 못하게 하려면 PATH 변수 환경을 실행하려는 실행 파일이 포함된 폴더로만 설정하세요 ~/.bash_profile.

export PATH="$HOME/bin"

편집하다:

이 시점에서 공격자가 rbash에 침입하는 것은 여전히 ​​가능합니다. 효과적으로 ssh원격 명령을 실행할 수 있습니다. ssh ... cp /bin/bash bin실행할 수 있는 명령 세트에 bash를 추가하여 비슷한 작업을 수행할 수 있습니다 . 문제는 bash(또는 rbash)가 ssh 에서 직접 실행될 때 .bash_profile,nor .profile, 를 읽지 못하는 것 같다는 것입니다 /etc/profile.

링크(2)는 이 문제에 대한 해결책을 제안합니다. man sshd_config에서 설정할 수 있는 모든 옵션에 대해 설명합니다 /etc/ssh/sshd_config. 분명히 스크립트 ~/.ssh/rc(그리고 /etc/sshrc링크 (4) 참조)는 필요할 때, 즉 사용자 ssh가 어떤 명령에 들어갈 때마다 실행됩니다. 그러나 나는 그것을 테스트하지 않았습니다.

이 시점에서는 .rbash 를 사용하여 rbash를 중단하는 것이 여전히 불가능할 수 있습니다 scp.

추가적으로, 다음 /etc/ssh/sshd_config줄에 주석을 달아서 추가해야 합니다.

Subsystem sftp       /usr/lib/openssh/sftp-server

링크:

관련 정보