sudo를 사용하여 사용자 쓰기 가능 스크립트 실행의 보안 영향

sudo를 사용하여 사용자 쓰기 가능 스크립트 실행의 보안 영향

sudo를 사용하여 몇 가지 명령을 실행해야 합니다. 이러한 명령은 .bashrc또는 에 있으며 ~/bingit 저장소(예: 도트 파일)에 저장됩니다.

~root내 사용자의 을(를) 가리키는 데 심볼릭 링크를 배치했지만 $HOME그렇게 하는 것은 보안상 좋지 않다고 생각하여 제거했습니다.

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

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

생각: /etc/sudoersNOPASSWD를 사용하여 모든 단일 명령을 승인한 다음 루트 비밀번호를 요청하면 뭔가 이상한 냄새가 날 것입니다.

추가 정보:

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

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

답변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
}

그렇군요. 제가 너무 생각하고 있는 것 같아요. 그래도 지금은 그 자리에 있습니다. 대부분 좋은 습관에서 벗어났습니다.


편집: 나는 이것을 더 이상 사용하지 않습니다. 추가된 보안 감각보다 더 불편했기 때문입니다.

관련 정보