사용자가 쓸 수 있는 스크립트를 실행하기 위해 sudo를 사용할 경우의 보안 위험

사용자가 쓸 수 있는 스크립트를 실행하기 위해 sudo를 사용할 경우의 보안 위험

sudo를 사용하여 몇 가지 명령을 실행해야 합니다. 이러한 명령은 git 저장소(예: 도트파일)에 있거나 저장되어 있습니다 .bashrc.~/bin

~root내 사용자를 가리키는 심볼릭 링크를 넣었 $HOME지만 보안 측면에서 그다지 좋지 않다고 판단하여 제거했습니다.

제가 걱정되는 것은 만약에루트가 아닌사용자에게 이러한 파일에 대한 쓰기 권한이 있으면 악성 프로그램이 권한 상승을 수행할 수 있습니다. 그러나 나는 내 책에서 많은 도트 파일 저장소가 안전하지 않다는 것을 발견했습니다.

에서 .bashrcsudo 명령할 수 있는NOPASSWD를 활성화합니다 /etc/sudoers. 스크립트 에서는 bin/*.sh명령에서 sudo를 생략하고 루트에 권한을 부여하는 것을 고려하고 있지만 git이 소유권을 저장하지 않기 때문에 문제가 될 수 있습니다. (거의) 모든 개별 명령에는 sudo가 필요하므로 루트에 스크립트를 할당하는 것이 더 안전하다는 점을 제외하면 기술적으로는 동일하다고 생각합니다. Git이 문제를 일으킬 것 같아요.

한 가지 생각: NOPASSWD를 사용하여 모든 명령을 승인하고 /etc/sudoers루트 비밀번호를 요청하면 뭔가 잘못된 냄새가 날 것입니다.

추가 정보:

  • 이는 여러 로컬 단일 사용자 컴퓨터에서 작동합니다.
  • 내 데스크톱 컴퓨터에 대한 무단 액세스는 문제가 되지 않으므로 자동 로그인을 설정했습니다.
  • 내 노트북에서 세션을 시작하려면 비밀번호가 필요합니다.

지금쯤 질문이 명확하지 않다면 어떻게 하면 이러한 스크립트/명령을 안전한 방법으로 배열할 수 있습니까? 권한 상승을 위해 루트를 사용하는 것이 악성 프로그램보다 내 사용자 데이터에 더 해롭습니까? 어쩌면 내가 너무 많은 생각을 하고 있는 건 아닐까?

답변1

쓰기 가능한 스크립트는 사용자가 보지 않을 때 사악한 것으로 대체될 수 있으며 루트가 이를 실행하면 게임이 끝납니다.

실제로 귀하가 기계의 유일한 사용자라면 위험은 낮습니다. 그러나 일반적으로 일반 사용자의 계정을 해킹하는 것이 더 쉽습니다(맬웨어가 포함된 이메일 읽기, 악성 웹사이트에 연결, 무작위 소스를 무작위로 컴파일하고 실행하여 "무엇을 하는지 확인" 등...). 그러면 루트 권한으로 업그레이드할 수 있습니다.

답변2

내가 알고 있는 모든 옵션( /usr/local/bin, 소유자 루트, 쓰기 권한 제거)을 고려하여 각 버전 파일에 불변 플래그를 사용했습니다.

sudo chattr +i filename

소유자는 물론 루트가 아닌 사용자도 이 플래그를 재설정할 수 있습니다. 파일이나 상위 디렉터리도 삭제하거나 교체할 수 없습니다.

파일을 편집하기 위해 다음 기능을 추가했습니다 .bashrc.

editrc () {
    sudo chattr -i $1
    nano $1
    sudo chattr +i $1
}

다른 컴퓨터에서는 도트 파일을 추출해야 했고, 이를 위해서는 플래그를 제거한 다음 git pull다시 적용해야 했습니다. 플래그를 매개변수로 사용하는 도우미 함수를 만들었습니다.

protect-config () {
    FLAG=$1
    FILES=$(git ls-files | xargs -I @ -- find @ -type f | xargs echo)
    lsattr $FILES
    if [ "$FLAG" ]; then
        sudo chattr $FLAG $FILES
    fi
}

그렇긴 하지만, 나는 그것을 지나치게 생각하고 있다. 하지만 이제는 제자리에 있습니다. 주로 좋은 습관에서 벗어났습니다.


편집: 추가된 보안보다 더 불편하기 때문에 더 이상 사용하지 않습니다.

관련 정보