sudo, su 또는 login 중 루트 권한을 얻는 가장 안전한 방법은 무엇입니까?

sudo, su 또는 login 중 루트 권한을 얻는 가장 안전한 방법은 무엇입니까?

권한이 없는 사용자가 손상되더라도 루트 계정이 안전하기를 바랍니다.

Ubuntu에서는 기본적으로 "보안상의 이유로" sudo만 사용할 수 있습니다. 하지만 텍스트 모드 콘솔에서 로그인을 사용하는 것보다 더 안전한지는 잘 모르겠습니다. 공격자가 일반 사용자로서 코드를 실행할 수 있다면 많은 문제가 발생할 수 있습니다. 예를 들어 별칭 추가, PATH에 콘텐츠 추가, LD_PRELOAD 및 X11 키로거 설정 등이 있습니다. 제가 볼 수 있는 유일한 장점은 시간 초과가 있어서 로그아웃하는 것을 절대 잊지 않는다는 것입니다.

su와 동일한 문제가 있지만 시간 제한도 없습니다. 일부 작업(특히 IO 리디렉션)은 su를 사용하는 것이 더 편리하지만 보안 관점에서 보면 이는 더 나빠 보입니다.

텍스트 모드 콘솔에 로그인하는 것이 가장 안전한 것 같습니다. init에 의해 시작되므로 공격자가 PATH 또는 LD_PRELOAD를 제어할 수 있으면 그는 이미 루트입니다. X에서 실행되는 프로그램은 주요 이벤트를 가로챌 수 없습니다. X에서 실행되는 프로그램이 [ctrl]+[alt]+[f1]을 가로채고 (콘솔처럼 보이는 전체 화면 창을 열 수 있는지) 아니면 [ctrl]+[alt]+와 같은 것인지 모르겠습니다. Windows에서 [del] 안전합니다. 그 외에 내가 보는 유일한 문제는 시간 초과가 없다는 것입니다.

그럼 내가 뭔가를 놓치고 있는 걸까? 우분투 사람들은 왜 sudo만 허용하기로 결정했습니까? 모든 방법의 보안을 향상하려면 어떻게 해야 합니까?

SSH는 어떻습니까? 전통적으로 루트는 SSH를 통해 로그인할 수 없습니다. 그러나 위의 논리를 사용하는 것이 가장 안전한 접근 방식은 아닙니다.

  • SSH를 통한 루트 액세스 허용
  • 텍스트 모드로 전환
  • 루트로 로그인
  • SSH를 통해 다른 머신으로
  • 루트로 로그인하시겠습니까?

답변1

보안에는 항상 절충안이 따릅니다. 바다 밑바닥에 있는 안전한 언플러그드 서버처럼 root,최대전혀 접근할 수 없다면 안전합니다.

귀하가 설명하는 LD_PRELOAD 및 PATH 공격은 공격자가 이미 귀하의 계정에 액세스했거나 적어도 도트 파일에 액세스했다고 가정합니다. Sudo는 이에 대해 전혀 잘 보호하지 않습니다. 결국 그들이 귀하의 비밀번호를 알고 있다면 앞으로 귀하를 속일 필요가 없을 것입니다... 그들은 다음을 사용할 수 있습니다.sudo 지금.

Sudo가 원래 설계된 목적이 무엇인지 고려하는 것이 중요합니다.특정한명령(예: 프린터 관리 명령)은 루트 권한을 완전히 포기하지 않은 채 "하위 관리자"(아마도 연구실의 대학원생)에게 전송됩니다. sudo를 사용하여 수행모든 것지금 내가 본 가장 일반적인 용도이지만 프로그램이 반드시 해결하려고 하는 것은 아닙니다(따라서 구성 파일 구문이 매우 복잡함).

그러나 sudo-for-unrestricted-root하다다른 보안 문제인 루트 비밀번호 관리 효율성을 해결합니다. 많은 조직에서는 이러한 정보를 사탕처럼 전달하고, 화이트보드에 적어서 영원히 보관하는 경우가 많습니다. 접근권한을 철회하거나 변경하는 경우 대량생산이 될 수 있기 때문에 큰 구멍이 남게 됩니다. 누가 어떤 비밀번호를 가지고 있는지 추적하는 것조차 어렵습니다.알다어느 것.

대부분의 "사이버 범죄"는 내부에서 발생한다는 점을 기억하십시오. 설명된 루트 비밀번호 상황에 따르면 누가 무엇을 했는지 추적하기가 어렵습니다. 원격 로깅을 사용하는 sudo가 이를 잘 처리합니다.

홈 시스템에서는 두 개의 비밀번호를 기억할 필요가 없다는 편리함보다 이것이 실제로 더 중요하다고 생각합니다. 많은 사람들이 단지 동일하게 설정하거나 더 나쁘게는 처음에 동일하게 설정한 다음 동기화되지 않게 하여 루트 비밀번호를 쓸모 없게 만들 가능성이 높습니다.

비밀번호 사용별말씀을요SSH는 위험하고, 제가 본 실제 시스템 유출의 90%에는 비밀번호를 스니핑하는 트로이 목마 SSH 데몬이 설치되어 있기 때문입니다. SSH 키를 사용하는 것이 더 좋으며 이는 원격 루트 액세스를 위한 실행 가능한 시스템일 수도 있습니다.

하지만 이제 문제는 비밀번호 관리에서 키 관리로 전환했고 SSH 키는 실제로 관리하기가 쉽지 않다는 것입니다. 복사본을 제한할 수 있는 방법은 없으며 누군가 복사본을 만드는 경우 암호를 무차별 대입 공격할 수 있습니다. 키를 이동식 장치에 저장하고 필요할 때만 설치해야 한다는 정책이 있을 수 있지만 이를 시행할 수 있는 방법은 없습니다. 이제 이동식 장치를 분실하거나 도난당할 가능성이 있습니다.

일회성 키 또는 시간/카운터 기반 암호화 토큰을 통해 최대 보안이 달성됩니다. 이는 소프트웨어를 통해 수행할 수 있지만 변조 방지 하드웨어가 더 좋습니다. 오픈 소스 세계에는 다음과 같은 것들이 있습니다.위키피디아,유비 키, 또는린 OTP, 그리고 물론 독점적인 헤비급RSA 보안 ID. 귀하의 조직이 중대형 조직이거나 보안에 민감한 소규모 조직이라면 이러한 관리형 액세스 방법 중 하나를 살펴보는 것이 좋습니다.

그러나 이는 합리적인 보안 관행을 따르는 한 실제 관리 문제가 없는 가족에게는 다소 부담이 될 수 있습니다.

답변2

이것은 매우 복잡한 문제입니다.매트 뎀 많은 포인트가 다뤄졌습니다.

su와 sudo 중에서 su는 사용자의 비밀번호를 알아낸 공격자가 즉시 루트 권한을 얻을 수 없기 때문에 단일 사용자를 고려할 때 약간 더 안전합니다. 그러나 공격자에게 필요한 것은 로컬 루트 취약점(비교적 흔하지 않음)을 찾거나 트로이 목마를 설치하고 사용자가 su를 실행할 때까지 기다리는 것뿐입니다.

Sudo는 사용자가 여러 명인 경우 콘솔 로그인에 비해 장점도 있습니다. 예를 들어 시스템이 원격 변조 로깅으로 구성된 경우 누가 마지막으로 sudo를 실행했는지(또는 누구의 계정이 손상되었는지) 항상 알 수 있지만 콘솔에 루트 비밀번호를 입력한 사람은 알 수 없습니다.

나는 Ubuntu의 결정이 부분적으로는 단순성(단 하나의 비밀번호만 기억하면 됨) 때문이고 부분적으로는 보안과 공유 컴퓨터(회사 또는 가정)에서의 자격 증명 배포의 용이성 때문이라고 생각합니다.

Linux에는 인증을 위한 보안 주의 키나 기타 보안 사용자 인터페이스가 없습니다. 내가 아는 한 OpenBSD도 아닙니다. 루트 액세스가 걱정된다면 실행 중인 시스템에 대한 루트 액세스를 완전히 비활성화할 수 있습니다. 루트가 되려면 부트로더 프롬프트에 무언가를 입력해야 합니다. 이는 분명히 모든 사용 사례에 적합하지 않습니다. (*BSD의보안 레벨작동 방식은 다음과 같습니다. 높은 보안 수준에서는 보안 수준을 낮추거나 설치된 원시 장치에 직접 액세스하는 등 재부팅하지 않고는 수행할 수 없는 몇 가지 작업이 있습니다. )

루트가 되는 방법을 제한하는 것이 항상 보안에 좋은 것은 아닙니다. 세 번째 멤버를 기억하시나요?보안 트라이어드:비밀의,똑바로,유효성. 시스템에서 자신을 잠그면 사고에 대응하지 못할 수 있습니다.

답변3

보안 OpenWall GNU/*/Linux 배포판의 설계자는 su(루트가 되는) 및 에도 관심이 있습니다 sudo.

...불행히도 su와 sudo에는 미묘하지만 근본적인 결함이 있습니다.

함정 및 기타 문제를 논의하는 것 외에도 suSolar Designer는 특정 사용 이유도 설명합니다 su.

예, 시스템 관리자는 일반적으로 루트로 로그인하는 대신 "su root"를 선택합니다. 이러한 선호에 대한 타당한 이유를 실제로 제시할 수 있는 사람들은 질문을 받았을 때 이 접근 방식을 통해 달성된 더 큰 책임감을 언급했습니다. 예, 이것이 실제로 이 접근 방식을 지지하는 좋은 이유입니다. 그러나 그것은 또한 유일한 것입니다. ...(자세히 보기)

그들의 배포에서 그들은"기본 설치에서 SUID 루트 프로그램을 완전히 제거합니다"(즉, include su; 그리고 이 기능을 사용하지 않습니다):

서버의 경우 사람들이 재고해야 하며 대부분의 경우 사용자가 su 및 sudo를 호출하는 것을 허용하지 않아야 한다고 생각합니다. 이전의 "루트가 아닌 사용자로 로그인한 다음 루트에 su 또는 sudo"를 사용하는 sysadmin "wisdom"은 루트가 아닌 사용자와 루트(두 개의 별도 세션)로 직접 로그인하는 것에 비해 보안을 추가하지 않습니다. 반대로 후자의 접근 방식은 보안 관점에서 유일하게 올바른 접근 방식입니다.

http://www.openwall.com/lists/owl-users/2004/10/20/6

(여러 시스템 관리자를 담당하려면 시스템이 Owl처럼 여러 루트 계정을 지원해야 합니다.)

(X가 설치된 데스크톱에서는 이 문제가 더 까다로워집니다.)

당신은 또한 반드시 처리해야합니다 ...

sulogin그건 그렇고, 그들은 다음으로 대체됩니다msulogin여러 루트 계정으로 설정 허용: msulogin단일 사용자 모드에 들어갈 때 사용자 이름을 입력할 수 있도록 허용하고 "책임"을 유지합니다(이 정보는 다음에서 제공됩니다).이 토론은 러시아어로 진행됩니다.).

답변4

가장 안전한 방법은 SSH 로그인에 (적어도) 2048 긴 키(비밀번호 로그인 비활성화)를 사용하고 물리적 장치를 사용하여 키를 저장하는 것입니다.

관련 정보