답변:
귀하의 질문은 :
내 사용자를 믿지 않습니다. 바보 같은 사람들은 인터넷에서 무언가를보고 그것이 무엇을하는지 이해하지 않고 사용해보십시오. 악의적 인 사람들은 스누핑하고 다른 사람들의 파일을보고 그들의 아이디어를 훔치기를 좋아합니다. 그리고 게으른, 게으른 사람들을 시작하게하지 마십시오.
시스템과 사용자를 사용자로부터 어떻게 보호합니까?
첫째, 유닉스는 매우 포괄적 인 파일 시스템 권한 시스템을 가지고 있습니다. 이것은 유닉스 파일 시스템 권한에 대한 훌륭한 튜토리얼 인 것 같습니다 . 요점은 사용자가 디렉토리로 이동하여 해당 디렉토리에서 프로그램을 실행할 수는 있지만 디렉토리의 내용을 볼 수 없도록 디렉토리를 설정할 수 있다는 것입니다. 예를 들어, / home에서이 작업을 수행하면 사용자가 / home에서 ls를 실행하면 권한 거부 오류가 발생합니다.
사용자가 정말로 무서워서 슈퍼 맥스 유형의 제한된 환경에 갇히고 싶다면 freebsd의 감옥이나 solaris의 영역과 같은 것을 사용하십시오. 각 사용자는 자신 만의 맞춤형 환경을 갖습니다. 추가 된 포인트의 경우 ZFS를 사용하여 로그인 할 때 환경의 스냅 샷을 찍을 수 있으므로 파일을 삭제하면 스냅 샷에서 파일을 가져올 수 있습니다.
원하는 것을 완전히 수행하려면 다음 세 가지가 필요합니다.
벨트, 멜빵 및 스테이플 건을 잘 측정하십시오. 거기에 잘못 가기가 어렵습니다.
AppArmor는 특정 실행 파일의 MAC이 모든 하위 항목에서 상속되므로 흥미 롭습니다. 사용자의 로그인을로 /bin/bash-bob설정하고 해당 특정 바이너리 권한에 대한 AppArmor 프로파일을 설정하십시오.이 권한을 벗어나는 유일한 방법은 커널 악용을 통한 것입니다. 게으른 설치 스크립트가 /var/opt/vendor/tmp어리석은 이유로 전역 쓰기 가능으로 남겨둔 경우 , /bin/bash-bob쉘로 사용하는 사용자 는 거기에서 쓸 수 없습니다 . 홈 디렉토리에 쓰기 만 허용하도록 bash-bob 프로필을 설정하면 /tmp이러한 권한 실수를 활용할 수 없습니다. 그들은 어떻게 든 루트 암호를 발견하더라도, 대한 AppArmor의 프로파일은 /bin/bash-bob여전히 후에도 적용됩니다 su이후까지 su와 bash과정이 급부상이의 자녀입니다 /bin/bash-bob.
어려운 부분은 그 AppArmor 프로파일을 구축하는 것입니다.
제 생각에는 2 단계와 3 단계 만 필요합니다. 두 단계 모두 신중하게 구성된 상자 외부에서 해로운 것을 수행 할 수 없기 때문에 두 단계 모두 필요합니다.
사용자가 특정 스크립트 / 이진 파일 만 실행할 수있게하려면 제한된 쉘을 사용할 수 있습니다 . 이것은 Wikipedia 기사에서 언급했듯이 완전히 안전하지는 않지만 실행할 수있는 응용 프로그램이 새 셸을 실행할 수 없다는 것을 보장 할 수 있다면 좋은 대안입니다.
사용자 제한 쉘을 설정하려면 사용자 쉘로 /bin/rbash바이너리를 r *** name *으로 지정하면 대부분의 쉘이 제한 모드로 들어갑니다 . 그런 다음 **. bashrc (또는 동등한 항목)를 편집$PATH 하고 허용 된 모든 바이너리 / 스크립트가 저장된 디렉토리로 설정하십시오 .
예, 가능하지만 실제로 많은 작업과 계획이 필요합니다. 스크립트를 작성하여 권한있는 용도로 실행 한 다음 해당 사용자의 모든 권한을 제거 할 수 있습니다. 또는 사용자의 쉘을 자신이 만든 것으로 설정하여 명시 적으로 허용하는 것만 수행 할 수 있습니다.
그러나 리눅스의 표준 권한은 일반 사용자가 "시스템을 손상"시키는 것을 거의 불가능하게합니다. 어떤 종류의 피해를 막으려 고합니까? 사용자가 홈 디렉토리 외부에서 소프트웨어를 설치하거나 프로그램을 실행할 수 없도록하는 것은 사소한 일이며 chroot를 사용하여 시스템을 더 잠글 수 있습니다.
[lshell] [1] (제한된 쉘)을 시도 할 수 있습니다.
lshell은 Python으로 코딩 된 쉘로, 사용자 환경을 제한된 명령 세트로 제한하고 SSH를 통한 명령 (예 : SCP, SFTP, rsync 등)을 활성화 / 비활성화, 사용자 명령 기록, 타이밍 제한 구현, 그리고 더.
[1] : http://lshell.ghantoos.org/ 개요 lshell
일반적으로 이러한 종류의 제한을 구현하려면 몇 가지 조건을 충족해야합니다. 그렇지 않으면 제한을 쉽게 피할 수 있습니다.
wheel그룹 에 속하지 않으며 사용 권한이있는 유일한 그룹입니다 su(PAM을 통해 시행).읽기 전용으로 private을 가리키는 적절한 보안 이 사용자에게 제공되며 ,이 디렉토리에는 간단한 유틸리티에 대한 링크가 있습니다.rbashPATH~/bin~/bin/
$ ll ~/bin
total 0
lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 clear -> /usr/bin/clear*
lrwxrwxrwx. 1 root dawud 7 Sep 17 08:58 df -> /bin/df*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 egrep -> /bin/egrep*
lrwxrwxrwx. 1 root dawud 8 Sep 17 08:58 env -> /bin/env*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 fgrep -> /bin/fgrep*
lrwxrwxrwx. 1 root dawud 9 Sep 17 08:58 grep -> /bin/grep*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 rview -> /bin/rview*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 rvim -> /usr/bin/rvim*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 sudo -> /usr/bin/sudo*
lrwxrwxrwx. 1 root dawud 17 Sep 17 08:58 sudoedit -> /usr/bin/sudoedit*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 tail -> /usr/bin/tail*
lrwxrwxrwx. 1 root dawud 11 Sep 17 08:58 wc -> /usr/bin/wc*
사용자가 제한된 읽기 전용 환경을 제공한다 (같은 물건의 생각 LESSSECURE, TMOUT, HISTFILE변수).
staff_u에게 맵핑되며을 통해 다른 사용자로서 명령을 실행할 수있는 권한이 부여됩니다 sudo.사용자는의 /home, /tmp그리고 아마도 /var/tmp통해 polyinstantiated 있습니다 /etc/security/namespace.conf:
/tmp /tmp/.inst/tmp.inst-$USER- tmpdir:create root
/var/tmp /tmp/.inst/var-tmp.inst-$USER- tmpdir:create root
$HOME $HOME/$USER.inst/ tmpdir:create root
또한 /etc/security/namespace.init모든 스켈 레탈 파일을 사용자가 읽기 전용으로 소유하고 root있습니다.
이 방법 으로 다른 사용자를 대신하여 (위에 설명 된대로 $USER개인 ~/bin디렉터리 의 링크를 통해 /etc/skel,을 통해 프로비저닝 된) 개인을 대신하여 명령을 실행할 수 있는지 또는 전혀 사용하지 않을 수 있습니다 sudo.