권한 인가 기능 비교

Comparison of privilege authorization features

많은 컴퓨터 운영 체제에서는 컴퓨터 시스템을 손상시킬 수 있는 충분한 권한을 악성 소프트웨어가 획득하는 것을 방지하기 위해 보안 기능을 사용합니다.DOS, Windows NT 이전의 Windows 구현, CP/M-80 이전의 Mac 운영 체제 및 Mac OS X 이전의 모든 Mac 운영 체제와 같은 이러한 기능이 없는 운영 체제에는 어떠한 작업도 수행할 수 있는 하나의 범주만 있었습니다.다른 실행 컨텍스트를 사용하면 여러 사용자가 개인 파일을 저장하고 여러 사용자가 동시에 컴퓨터를 사용하여 악의적인 사용자로부터 시스템을 보호하며 악의적인 프로그램으로부터 시스템을 보호할 수 있습니다.최초의 멀티 유저 시큐어·시스템은, 1960년대에 개발을 개시한 멀티 유저·시큐어·시스템입니다.유닉스, BSD, Linux, NT가 80년대 후반과 90년대 초에 이르러서야 x86 컨슈머·머신에 멀티태스킹·시큐러티 콘텍스트가 도입되었습니다.

도입의 개요

Microsoft Windows
User Account Control prompt사용자 계정 컨트롤 프롬프트 대화 상자 사용자 계정 제어(UAC):
Windows Vista 이후의 Microsoft Windows operating system에 포함되어 있는 UAC 는, 애플리케이션이 관리자 [1]태스크를 실행하려고 하면, 유저에게 인가를 요구합니다.
Runas:
프로그램, 제어판 애플릿 또는 MMC 스냅인을 다른 [2]사용자로 실행할 수 있는 명령줄 도구 및 컨텍스트 메뉴 동사입니다.Runas는 Windows [3]2000에도 도입된 "Secondary Login" Windows 서비스를 사용합니다.이 서비스는 별도의 사용자로 실행되는 애플리케이션을 로그인한 사용자의 데스크톱과 상호 작용할 수 있는 기능을 제공합니다.드래그 앤 드롭, 클립보드 공유 및 기타 대화형 로그인 기능을 지원하기 위해 필요합니다.
Mac OS
Authenticate Mac OS X에는 관리자 작업을 수행하기 위해 사용자가 암호를 입력하도록 요구하는 Authenticate 대화상자가 있습니다.이는 기본적으로 그래픽 프론트 엔드입니다.sudo명령어를 입력합니다.
Unix 및 Unix 유사
PolicyKit in GNOME PolicyKit/pkexec:
사용 중인 데스크톱 환경으로부터 독립하여 GNOME에 의해[4] 이미 채택된 권한 부여 기능 PolicyKit을 사용하는 응용 프로그램은 현재 사용자의 권한보다 높은 권한으로 실행되지 않습니다.대신 루트로 실행되는 유일한 프로그램인 PolicyKit 데몬을 간접적으로 요청합니다.
su su:
Unix. su(대체 사용자)용 명령줄 도구를 사용하면 사용자는 해당 계정의 사용자 이름과 비밀번호를 입력하여 단말기를 다른 계정으로 전환할 수 있습니다.사용자 이름이 지정되지 않은 경우 운영 체제의 슈퍼 사용자 계정(루트)이 사용되므로 시스템에 대한 모든 권한을 가진 로그인 셸을 빠르게 얻을 수 있습니다.exit 명령어를 발행하면 사용자는 자신의 계정으로 돌아갑니다.
sudo sudo:
1980년경 [5]만들어진 sudo는 su와 유사한 설정성이 뛰어난 Unix 명령줄 도구이지만 특정 사용자가 루트 셸을 생성하거나 루트의 [6]비밀번호를 요구하지 않고 루트 특권으로 프로그램을 실행할 수 있습니다.
gksudo GKSU 및 GKsudo:
GTK+그래픽 프런트 엔드부터 su [7]및 sudo까지.GKsu는 지원되는 응용 프로그램이 루트 권한을 필요로 하는 작업을 수행해야 할 때 자동으로 실행됩니다.대체품인 [8]"gksu PolicyKit"은 GNOME의 일부로 개발되고 있습니다.
kdesu kdesu:
KDE의 [9]su 명령에 대한 Qt 그래픽 프런트 엔드.
kdesudo kdesudo:
쿠분투 7.10부터 [10]쿠분투의 kdesu를 대체한 Qt 그래픽 프론트 엔드 to sudo.
Ktsuss ktsuss:
ktsuss는 "subsimple, studp"의 약자로 su의 그래픽 버전입니다.이 프로젝트의 아이디어는 단순하고 버그가 없는 상태를 유지하는 것입니다.
beesu 비수:
Red Hat 기반 운영 체제에서 gksu를 대체한 su 명령의 그래픽 프론트 엔드입니다.주로 RHEL과 [11]Fedora용으로 개발되었습니다.
도스:
OpenBSD 5.8 이후 sudo 교체(2015년 10월)

보안에 관한 고려 사항

사용자 입력 조작/감청

주요 보안 고려사항은 악의적인 애플리케이션이 키 입력 또는 마우스 클릭을 시뮬레이션할 수 있다는 것입니다. 따라서 보안 기능을 속이거나 스푸핑하여 악의적인 애플리케이션에 더 높은 권한을 부여할 수 있습니다.

  • 터미널 기반 클라이언트 사용(스탠드 아론 또는 데스크톱/GUI 내): su 및 sudo는 스푸핑된 입력에 취약한 터미널에서 실행됩니다.물론 사용자가 멀티태스킹 환경을 실행하고 있지 않은 경우(즉, 셸 내의 단일 사용자만 해당), 이는 문제가 되지 않습니다.터미널 창은 보통 사용자에게 일반적인 창으로 표시되므로 클라이언트로 사용되는 인텔리전트 클라이언트 또는 데스크톱 시스템에서 사용자는 데스크톱 상의 다른 악성 프로그램이 입력을 조작, 시뮬레이션 또는 캡처하는 것을 방지할 책임이 있습니다.
  • 운영체제에 긴밀하게 통합된 GUI/데스크탑 사용:일반적으로 데스크톱 시스템은 패스워드 또는 기타 인증을 요구하기 전에 모든 일반적인 입력 수단을 잠그거나 보호합니다.이러한 입력 수단은 대행 수신, 조작 또는 시뮬레이션할 수 없습니다.
  • PolicyKit(GNOME) - X 서버가 모든 키보드 및 마우스 입력을 캡처하도록 지시합니다.PolicyKit를 사용하는 다른 데스크톱 환경에서는 자체 메커니즘을 사용할 수 있습니다.
  • gksudo - 기본적으로 키보드, 마우스 및 창의 [12]포커스를 "수정"하여 실제 사용자가 비밀번호를 입력하거나 확인 대화 상자를 방해하는 것을 방지합니다.
  • UAC(Windows) - 기본적으로 보안 데스크톱에서 실행되므로 악의적인 응용 프로그램이 "허용" 단추를 클릭하거나 확인 [13]대화 상자를 방해하지 않습니다.이 모드에서는 사용자의 바탕 화면이 흐리게 표시되고 상호 작용할 수 없습니다.
gksudo의 "잠금" 기능 또는 UAC의 Secure Desktop 중 하나가 손상되거나 비활성화되면 악의적인 응용 프로그램이 키 입력 로깅을 사용하여 관리자의 비밀번호를 기록함으로써 관리자 권한을 얻을 수 있습니다.또한 UAC의 경우 관리자로 실행 중인 경우 "허가" 버튼을 클릭하여 마우스를 스푸핑합니다.따라서 음성 인식은 대화 [citation needed]상자와의 상호 작용도 금지됩니다.gksu 비밀번호 프롬프트는 특별한 권한 없이 실행되므로 악의적인 응용 프로그램은 strace 도구 등을 사용하여 [14]키 스트로크 로깅을 수행할 수 있습니다.(이후 커널 [15]버전에서는 ptrace가 제한되었습니다.)

가짜 인증 대화상자

악성 소프트웨어의 또 다른 보안 고려 사항은 수 있는 능력 법적인 보안 요청 확인 같은 대화 상자 spoof.사용자가 가짜 대화로 대화에 정당했다고 생각하고 자격 증명 정보를 입력 받아, 악성 프로그램은 사용자의 암호를 알게 될 것이다.만약은 데스크 톱 또는 유사한 기능 장애, 악성 소프트웨어 더 높은 특권을 얻기 위해 그 암호를 사용할 수 있다.

  • 사용 적합성 이유로는 아니지만 기본 동작이 UAC는 인증 과정의 일환으로 Ctrl+Alt+Del(보안 주의 순서로 알려진)를 누를 사용자 요구하도록 구성될 수 있다.왜냐하면 Windows에서만, 이러한 추가 보안 대책을 요구하는 합법적인 대화 방법과 동일하게 행동한 것에서spoofed 대화하지 않을 것 이 키 조합을 찾아낼 수 있습니다.[16]예를 들어,spoofed 대화, 그리고 사용자가 대화 가짜 있다는 것을 알아챌 수 있는 사용자 Ctrl+Alt+Del를 누를 것을 요구하지 않을 수 있습니다.사용자가 이 언론 Ctrl+Alt+Del 아니면 사용자는 Ctrl+Alt+Del 평소에 UAC확인 대화 상자 대신 그들을 가져온다 화면에 영입되곤 했다.따라서 사용자가 대화 시도였다 악성 소프트웨어의 작품에 암호를 제공하도록 속일 알 수 있었다.
  • 그 놈에, PolicyKit, 시스템의 구성에 따라 다른 대화 상자를 사용한다.예를 들어, 시스템 지문 판독기에 장착된 인증 대화 시스템에 대한 인증 대화에서 다른 것 없이 보일지도 몰라요.그래서 대화하고 따라서 어떻게 spoof는 것처럼 보일 것이다 알 방법이 없어 애플리케이션, PolicyKit의 구성에 접근하지 못한다.[17]

사용성에 관한 고려 사항

이러한 구현으로 빠져 버렸다 또 다른 고려 사항 사용 적합성.

개별 관리자 계정

  • 수애는 사용자에 적어도 두개 이상의 계정:regular-use 계산은 비밀 번호를 알려, 루트처럼 높은 권한을 가진 계정이 필요하다.
  • 수도, kdesu과 gksudo 더 간단한 방법을 사용하다.이러한 프로그램과 함께 사용자 특정 관리 작업에 접근할 수 있게 되지만, 명시적으로 애플리케이션 그 권한으로 실행하는 것을 허가하야 한다 pre-configured 있다.사용자는 superuser하거나 약간의 다른 계정 대신 그들만의 암호를 입력한다.
  • UAC와 Authenticate는 이 두 가지 아이디어를 하나로 결합합니다.이러한 프로그램을 사용하면 관리자는 프로그램이 더 높은 권한으로 실행되도록 명시적으로 승인합니다.관리자 이외의 사용자에게는 관리자 사용자 이름과 비밀번호를 입력하도록 요구됩니다.
  • PolicyKit 는, 다음의 몇개의 어프로치를 채용하도록 설정할 수 있습니다.실제로는 분포가 하나를 선택합니다.

대화상자의 심플함

  • 응용 프로그램 관리자 권한을 부여하려면 sudo,[18] gksudo 및 Authenticate 관리자에게 암호를 다시 입력하라는 메시지를 표시합니다.
  • UAC에서는 표준 사용자로 로그인 할 때 사용자는 응용 프로그램에 높은 권한을 부여할 때마다 관리자 이름과 비밀번호를 입력해야 합니다.단, Administrators 그룹의 멤버로 로그인 할 때는 패스워드를 매번 재입력하는 것이 아니라 (디폴트로) 확인 또는 거부하기만 하면 됩니다.디폴트 어프로치는 심플하지만 사용자가 컴퓨터를 잠그지 않고 물리적으로 컴퓨터 밖으로 나가면 다른 사용자가 접근하여 시스템에 대한 관리자 권한을 가질 수 있기 때문에 [16]보안성도 떨어집니다.
  • PolicyKit에서는 사용자가 비밀번호를 다시 입력하거나 다른 인증 수단(예: 지문)을 제공해야 합니다.

인증 정보 저장

  • UAC는 프로그램을 승격하기 위해 호출될 때마다 승인을 요구합니다.
  • sudo,[6] gksudo 및 kdesu는 프로그램을 올리기 위해 호출될 때마다 사용자에게 비밀번호를 다시 입력하도록 요구하지 않습니다.대신에, 유저는 개시시에 패스워드를 한번 입력하도록 요구받습니다.사용자가 일정 기간 동안 관리자 권한을 사용하지 않은 경우(sudo 기본값은 5분[6]) 사용자는 다시 암호를 입력할 때까지 표준 사용자 권한으로 제한됩니다.
sudo의 접근방식은 보안과 사용성의 균형입니다.한편, 사용자는 일련의 관리자 작업을 수행하기 위해 작업별로 비밀번호를 입력할 필요가 없으며 비밀번호를 한 번만 입력하면 됩니다.단, 동시에 공격 표면적이 더 커집니다.이는 타임아웃 전에 그 tty에서 실행되는 모든 프로그램(sudo 및 kdesu) 또는 이들 명령어 중 하나로 프리픽스가 부가된 단말기에서 실행되지 않는 모든 프로그램(gksudo 및 kdesu)이 관리자 권한을 받기 때문입니다.보안을 중시하는 사용자는 를 사용하여 필요한 작업을 완료하면 임시 관리자 권한을 제거할 수 있습니다.sudo -ksudo가 사용된 각 tty 또는 pts에서 명령어를 실행합니다(pts의 경우 터미널 에뮬레이터를 닫는 것만으로는 충분하지 않습니다).kdesu에 대응하는 명령어는 다음과 같습니다.kdesu -s. 동일한 작업을 수행하는 gksudo 옵션은 없습니다.단, 실행 중sudo -k터미널 인스턴스 내에 없는 경우(예를 들어 Alt + F2 "Run Application" 대화 상자에서 "Run in terminal"을 선택 해제하면 원하는 효과를 얻을 수 있습니다).
  • 인증에서는 패스워드는 저장되지 않습니다.사용자가 표준 사용자인 경우 사용자 이름과 비밀번호를 입력해야 합니다.사용자가 관리자일 경우 현재 사용자의 이름이 이미 입력되어 있으며 비밀번호만 입력하면 됩니다.다른 사용자로 실행되도록 이름을 수정할 수 있습니다.
인증은 1회만 필요하며 특권이 필요한 시점에서 요구됩니다.「승격」이 끝난 후에는, 애플리케이션을 종료해 재기동할 때까지, 애플리케이션을 재차 인증할 필요는 없습니다.
그러나 권한이라고 하는 다양한 수준의 인증이 있습니다.비밀번호 아래에 있는 "상세" 옆에 있는 삼각형을 확장하여 요청된 오른쪽을 표시할 수 있습니다.일반적으로 응용 프로그램은 system.privilege.admin을 사용하지만 보안에 대한 하위 권한이나 상위 액세스가 필요한 경우 상위 권한 등 다른 권한을 사용할 수 있습니다.응용 프로그램이 가진 권한이 작업에 적합하지 않은 경우 응용 프로그램은 권한 수준을 높이기 위해 다시 인증해야 할 수 있습니다.
  • PolicyKit 는, 다음의 몇개의 어프로치를 채용하도록 설정할 수 있습니다.

관리자 권한이 필요한 시기 식별

운영체제시스템이 사용자에게 인가를 요구하는 타이밍을 인식하기 위해서는 어플리케이션 또는 액션이 자신을 상승된 특권이 필요한 것으로 식별해야 합니다.이러한 권한이 필요한 작업이 실행되는 정확한 순간에 사용자에게 프롬프트를 표시하는 것은 기술적으로 가능하지만 작업 완료 중에 권한을 요청하는 것은 이상적이지 않은 경우가 많습니다.사용자가 적절한 credential을 제공할 수 없는 경우 작업을 끝까지 볼 수 없기 때문에 관리자 권한이 필요하기 전에 수행한 작업을 취소해야 합니다.

Microsoft Windows の [ Control Panel ]및 Mac OS X の [ Preferences ]패널 등의 사용자 인터페이스의 경우 사용자에게 적절한 타이밍(예를 들어 관리자만이 표시할 수 있는 정보를 표시하기 전)에 인가 대화상자가 표시되도록 정확한 권한 요건이 시스템에 하드 코드화되어 있습니다.운영체제에 따라서는 어플리케이션의 보안요건을 특정할 수 있는 방법이 다릅니다.

  • sudo는 모든 권한 인가 정보를 단일 구성 파일로 집중 관리합니다./etc/sudoers사용자 목록과 해당 사용자가 사용할 수 있는 특권 응용 프로그램 및 액션이 포함되어 있습니다.sudoers 파일의 문법은 명령줄 파라미터에 제한을 두는 등 다양한 시나리오를 커버할 수 있도록 유연합니다.예를 들어 다음과 같이 루트 계정을 제외한 모든 사용자의 암호를 변경할 수 있는 액세스 권한을 사용자에게 부여할 수 있습니다.
pete ALL = /usr/bin/passwd [A-z]*, !/usr/bin/passwd 루트
  • 사용자 계정 컨트롤은 경험적 접근 검색과 "응용 프로그램 매니페스트"의 조합을 사용하여 응용 프로그램에 관리자 [19]권한이 필요한지 여부를 확인합니다.Windows XP에서 처음 도입된 매니페스트(.manifest) 파일은 응용 프로그램과 이름이 같고 접미사가 ".manifest"인 XML 파일입니다.Notepad.exe.manifest응용 프로그램이 시작되면 응용 프로그램의 보안 요건에 대한 정보를 얻기 위해 매니페스트를 확인합니다.예를 들어, 이 XML fragment는, 애플리케이션에 관리자 액세스가 필요하지만, 애플리케이션 외부의 유저 데스크탑의 다른 부분에는 제한 없는 액세스가 필요 없는 것을 나타냅니다.
<보안>     <requested Privileges>         <클라이언트>실행레벨 레벨="require Administrator" uiAccess="false" />     </requestedPrivileges> </보안> 
매니페스트 파일은 내장된 리소스로 응용 프로그램 실행 파일 자체에 컴파일할 수도 있습니다.경험적 접근성 검사도 주로 이전 버전과의 호환성을 위해 사용됩니다.예를 들어, 실행 파일의 파일명을 참조하는 것이 있습니다.실행 파일에 「Setup」이라는 단어가 포함되어 있는 경우는, 실행 파일이 인스톨러라고 가정하고, 애플리케이션이 [20]기동하기 전에 UAC 프롬프트가 표시됩니다.
또한 UAC는 서명된 실행 파일의 권한 상승 요청과 서명되지 않은 실행 파일의 권한 상승 요청을 구분합니다. 또한 게시자가 'Windows Vista'인지 여부를 구분합니다.예를 들어 실행 파일이 서명되지 않은 경우보다 더 큰 경고감을 전달하려고 시도하는 경우 [21]등 프롬프트의 색상, 아이콘 및 문구가 각각 다릅니다.
  • PolicyKit를 사용하는 응용 프로그램은 인증을 요구할 때 특정 권한을 요청하며 PolicyKit은 응용 프로그램을 대신하여 이러한 작업을 수행합니다.인증하기 전에 사용자는 액션을 요청한 응용 프로그램과 요청된 액션을 볼 수 있습니다.

「 」를 참조해 주세요.

  • 권한 상승(보안 악용의 일종)
  • 최소 특권의 원칙, 보안 설계 패턴
  • Privileged Identity Management(특권 계정 관리 방법론)
  • 특권 ID 관리와 유사한 개념의 특권 비밀번호 관리:
    • 즉, 정기적으로 특권 비밀번호를 스크램블한다.
    • 안전하고 가용성이 높은 볼트에 비밀번호 값 저장
    • 이러한 비밀번호가 언제, 어떻게, 누구에게 공개될 수 있는지에 대한 정책을 적용합니다.

레퍼런스

  1. ^ "User Account Control Overview". Microsoft. 2006-10-02. Archived from the original on 2011-08-22. Retrieved 2007-03-12.
  2. ^ "Runas". Windows XP Product Documentation. Microsoft. Retrieved 2007-03-13.
  3. ^ ""RunAs" basic (and intermediate) topics". Aaron Margosis' WebLog. MSDN Blogs. 2004-06-23. Retrieved 2007-03-13.
  4. ^ "About PolicyKit". PolicyKit Language Reference Manual. 2007. Archived from the original on 2012-02-18. Retrieved 2017-11-03.
  5. ^ Miller, Todd C. "A Brief History of Sudo". Archived from the original on 2007-02-22. Retrieved 2007-03-12.
  6. ^ a b c Miller, Todd C. "Sudo in a Nutshell". Retrieved 2007-07-01.
  7. ^ "GKSu home page".
  8. ^ "gksu PolicyKit on Gnome wiki".
  9. ^ Bellevue Linux (2004-11-20). "The KDE su Command". Archived from the original on 2007-02-02. Retrieved 2007-03-12.
  10. ^ Canonical Ltd. (2007-08-25). "GutsyGibbon/Tribe5/Kubuntu". Retrieved 2007-09-18.
  11. ^ Wayback Machine에서 beesu Archived 2011-07-25에 대한 자세한 내용을 읽고 Koji에서 다운로드 할 수 있습니다.
  12. ^ "gksu - a Gtk+ su frontend Linux Man Page". Archived from the original on 2011-07-15. Retrieved 2007-08-14.
  13. ^ "User Account Control Prompts on the Secure Desktop". UACBlog. Microsoft. 2006-05-03. Retrieved 2007-03-04.
  14. ^ "gksu: locking mouse/keyboard not enough to protect against keylogging".
  15. ^ "ptrace Protection".
  16. ^ a b Allchin, Jim (2007-01-23). "Security Features vs. Convenience". Windows Vista Team Blog. Microsoft. Retrieved 2007-03-12.
  17. ^ "Authentication Agent". 2007. Archived from the original on 2012-02-18. Retrieved 2017-11-15.
  18. ^ Miller, Todd C. "Sudoers Manual". Retrieved 2007-03-12.
  19. ^ "Developer Best Practices and Guidelines for Applications in a Least Privileged Environment". MSDN. Microsoft. Retrieved 2007-03-15.
  20. ^ "Understanding and Configuring User Account Control in Windows Vista". TechNet. Microsoft. Retrieved 2007-03-15.
  21. ^ "Accessible UAC Prompts". Windows Vista Blog. Microsoft. Archived from the original on 2008-01-27. Retrieved 2008-02-13.