소스에서 루트로 설치할 때의 보안 문제

소스에서 루트로 설치할 때의 보안 문제

질문이 있습니다. 루트 계정의 소스에서 설치하는 것은 보안상의 이유로 좋은 생각이 아닙니다.

내 입장은 누군가가 루트 계정을 사용하고 코드의 압축을 풀어 시작한 다음 설치 단계를 수행해도 상관없다는 것입니다.

#./configure 
#make 
#make install

반대:

$./configure
$make
$sudo make install

내 논리는 다음과 같습니다. 보안 위험이 발생한다면 코드 자체 때문이지 설치 방법이 아니기 때문입니다. end 명령은 루트를 사용하여 최종 바이너리와 함께 설치되는 모든 파일을 설치하기 때문입니다.

루트가 아닌 사용자 세션인지 여부에 관계없이 소스 코드가 소스 코드에 악성 코드를 인코딩한 경우 이제 상관없이 시스템에 있습니다. 그래서 무슨 일이 있어도 항상 위험합니다.

이는 자신의 코드보다는 앱이 포함되지 않은 자신의 저장소와 더 관련이 있으므로 Git 허브나 이를 작성한 사람의 웹사이트로 이동하여 소스 코드를 사용하여 설치하세요. 심지어 나무를 설치하는 것만큼 간단합니다.

그러면 사용자는 루트 계정이나 "일반" 사용자 계정에 로그인했을 때보다 소스 코드를 어떻게 얻었는지에 대해 더 관심을 갖게 됩니다.

나는 루트를 사용하지 말아야 하는 이유에 대한 모든 주장을 들었습니다. 왜냐하면 터미널에 작성한 내용에 주의를 기울이지 않으면 시스템에 돌이킬 수 없는 손상이 발생할 수 있기 때문입니다. sudo를 사용하면 그만큼 많은 손상이 발생할 수 있으므로 이는 불필요한 주장이자 믿음입니다. 시스템. 그러므로 그것은 이 주장에 포함된 요점의 일부도 아닙니다.

그것은 다소 예 또는 아니오 질문입니다. 예 - 제가 옳았습니다. 장기적으로 보면 소스 코드 애플리케이션을 컴파일하고 시스템에 설치하기 위해 루트 계정을 사용하는지 여부는 중요하지 않습니다.

또는

아니요. 제가 틀렸습니다. 동일한 작업을 수행하려면 루트 권한을 사용해야 하기 때문에 이는 중요합니다.

답변1

프로그램을 루트로 실행하여 이를 과도하게 수행하면 잠재적인 공격자에게 "필요한" 공격 지점보다 더 많은 공격 지점을 제공하게 됩니다. 루트 액세스가 없으면 시스템을 손상시키려는 시도는 대부분의 경우 불가능하거나 더 어렵습니다. 모든 명령을 루트로 실행하는 접근 방식은 단순히 모든 것을 루트로 실행하는 결과(디렉터리 나열, 이미지 열기, 음악 재생 등)를 초래할 수 있으며 이는 많은 잠재적인 문제 지점을 의미합니다.

의도치 않게라도 실행하는 프로그램의 버그는 루트로 실행할 때 더 많은 피해를 입힐 수 있습니다(그리고 소프트웨어에서 모든 버그를 제거하는 것은 사실상 불가능합니다). 또는 사용자가 잘못된 옵션을 입력한 경우(가능성이 더 높음)

또한 ./configure.NET을 사용하는 경우 make모든 사람을 위해 프로그램을 설치하고 싶지 않을 수도 있습니다(예: 자신에게만 필요한 라이브러리가 있을 수 있음).

답변2

설치하려는 프로그램이 다음과 같은 것으로 의심되는 경우악의 있는, 루트나 일반 사용자로 실행하지 마십시오. 여기에는 컴파일된 프로그램 실행 및 제공된 빌드 스크립트 실행이 포함됩니다. 공격자가 사용자처럼 코드를 실행하면 사용자의 계정을 소유하게 됩니다(그리고 늦어도 사용자가 해당 계정에서 루트 액세스 권한을 얻으면 공격자는 사용자의 컴퓨터를 소유하게 됩니다). 공격자의 코드가 make실행되었기 때문에 실행되었는지, 아니면 실행했기 때문에 실행되었는지 는 중요하지 않습니다 make install.

일반 사용자로 빌드하고 루트로 설치하는 목적은 다음 위험을 줄이는 것입니다.우연한질문. 그럼에도 불구하고 일반적으로 필요한 경우가 아니면(예: 드라이버 또는 시스템 서비스 설치) 홈브류 프로그램을 루트로 설치해서는 안 됩니다. 자신의 사용자로 별도의 디렉토리에 설치한 다음 다음과 같은 것을 사용하십시오.가게/usr/local/bin표준 디렉토리( 등) 에서 프로그램을 사용할 수 있도록 하십시오 . 이렇게 하면 설치 단계에서 기존 소프트웨어를 덮어쓰거나(이름 충돌 가능성이 있음) 의도하지 않은 디렉터리에 쓸 위험이 줄어들고, 모든 파일이 한 위치에 있으므로 프로그램을 쉽게 제거할 수 있습니다.

답변3

사용자 Joe로서,

./configure
make
sudo make install

넌 보통 그렇지 않아필요코드를 루트로 구성하거나 컴파일하여 설치하세요. 그렇지 않으면필요루트가 된 다음 루트가 되지 마십시오.

configure둘 다 make코드를 실행하고 있습니다. 다른 공격 벡터를 도입할 필요가 없을 때 루트로 실행하십시오(예를 들어 누군가 메이크파일을 깨뜨릴 수 있지만 소스 코드는 깨뜨릴 수 없습니다).

답변4

최종 프로그램(및 설치)은 건물보다 더 세심하게 완성될 수 있습니다.어느루트로 실행할 때 빌드 프로세스의 오류나 온전성 검사 완료로 인해 시스템이 손상될 수 있습니다. 위험을 최대한 줄이는 것이 가장 좋습니다.

관련 정보