JavaScript is required to for searching.
탐색 링크 건너뛰기
인쇄 보기 종료
Oracle Solaris 11.1 관리: 보안 서비스     Oracle Solaris 11.1 Information Library (한국어)
search filter icon
search icon

문서 정보

머리말

제1부보안 개요

1.  보안 서비스(개요)

제2부시스템, 파일 및 장치 보안

2.  시스템 보안 관리(개요)

3.  시스템에 대한 액세스 제어(작업)

4.  바이러스 검사 서비스(작업)

5.  장치에 대한 액세스 제어(작업)

6.  BART를 사용하여 파일 무결성 확인(작업)

7.  파일에 대한 액세스 제어(작업)

제3부역할, 권한 프로파일 및 권한

8.  역할 및 권한 사용(개요)

역할 기반 액세스 제어(개요)

RBAC: 수퍼유저 모델의 대안

RBAC 요소 및 기본 개념

권한 에스컬레이션

RBAC 권한 부여

권한 부여 및 권한

권한 있는 응응 프로그램 및 RBAC

UID 및 GID를 검사하는 응용 프로그램

권한을 검사하는 응용 프로그램

권한 부여를 검사하는 응용 프로그램

RBAC 권한 프로파일

RBAC 역할

프로파일 셸 및 RBAC

이름 서비스 범위 및 RBAC

보안 속성을 직접 지정할 때 보안 고려 사항

보안 속성을 직접 지정할 때 유용성 고려 사항

권한(개요)

권한으로 커널 프로세스 보호

권한 설명

권한 있는 시스템의 관리상 차이점

권한 및 시스템 리소스

권한이 구현되는 방법

프로세스가 권한을 얻는 방법

권한 지정

사용자 또는 역할의 권한 확장

사용자 또는 역할의 권한 제한

스크립트에 권한 지정

권한 및 장치

권한 및 디버깅

이 릴리스의 RBAC 정보

9.  역할 기반 액세스 제어 사용(작업)

10.  Oracle Solaris의 보안 속성(참조)

제4부암호화 서비스

11.  암호화 프레임워크(개요)

12.  암호화 프레임워크(작업)

13.  키 관리 프레임워크

제5부인증 서비스 및 보안 통신

14.  플러그 가능한 인증 모듈 사용

15.  Secure Shell 사용

16.  Secure Shell(참조)

17.  단순 인증 및 보안 계층 사용

18.  네트워크 서비스 인증(작업)

제6부Kerberos 서비스

19.  Kerberos 서비스 소개

20.  Kerberos 서비스 계획

21.  Kerberos 서비스 구성(작업)

22.  Kerberos 오류 메시지 및 문제 해결

23.  Kerberos 주체 및 정책 관리(작업)

24.  Kerberos 응용 프로그램 사용(작업)

25.  Kerberos 서비스(참조)

제7부Oracle Solaris에서 감사

26.  감사(개요)

27.  감사 계획

28.  감사 관리(작업)

29.  감사(참조)

용어집

색인

권한(개요)

프로세스 권한 관리에서는 명령, 사용자, 역할, 시스템 레벨에서 프로세스가 제한됩니다. Oracle Solaris는 권한을 통해 프로세스 권한 관리를 구현합니다. 권한을 사용하면 시스템에서 전체 수퍼유저 능력을 보유한 하나의 사용자나 프로세스와 연관된 보안 위험을 줄일 수 있습니다. 권한 및 RBAC는 전통적인 수퍼유저 모델의 강력한 대체 모델입니다.

권한으로 커널 프로세스 보호

권한은 프로세스가 작업을 수행하는 데 필요한 별개의 권한입니다. 권한은 커널에서 시행됩니다. 권한의 기본 세트의 한도 내에서 운영되는 프로그램은 시스템 보안 정책의 한도 내에서 운영됩니다. 시스템 보안 정책의 한도 밖에서 운영되는 프로그램의 예로 setuid 프로그램이 있습니다. 권한을 사용할 경우 프로그램이 setuid를 호출할 필요가 없습니다.

권한은 시스템에서 가능한 작업 종류를 별개로 열거합니다. 정확히 프로그램 성공을 위해 필요한 권한만으로 프로그램을 실행할 수 있습니다. 예를 들어, 파일을 조작하는 프로그램에 file_dac_writefile_flag_set 권한이 필요할 수 있습니다. 프로세스에 대한 이러한 권한으로 인해 프로그램을 root로 실행할 필요가 없습니다.

전통적으로, 시스템은 권한 모델을 따르지 않았습니다. 오히려 수퍼유저 모델을 사용했습니다. 수퍼유저 모델에서는 프로세스가 root 또는 사용자로 실행됩니다. 사용자 프로세스는 사용자의 디렉토리와 파일에서 작동하도록 제한되었습니다. root 프로세스는 시스템의 어디든지 디렉토리 및 파일을 만들 수 있습니다. 사용자의 디렉토리 밖에 디렉토리를 만들어야 하는 프로세스는 UID=0, 즉 root로 실행됩니다. 시스템 파일을 보호하기 위해 보안 정책이 DAC(모든 액세스 제어)에 의존했습니다. 장치 노드가 DAC로 보호되었습니다. 예를 들어, sys 그룹이 소유한 장치는 sys 그룹의 구성원만 열 수 있었습니다.

그러나 setuid 프로그램, 파일 사용 권한 및 관리 계정은 오용되기 쉽습니다. setuid 프로세스가 허가한 동작이 작업 완료를 위해 필요한 것보다 훨씬 많습니다. 그러면 전권의 root 사용자로 실행된 침입자에 의해 setuid 프로그램이 손상될 수 있습니다. 마찬가지로, root 암호에 액세스할 수 있는 사용자가 전체 시스템을 손상시킬 수 있습니다.

이와 반대로, 권한으로 정책을 시행하는 시스템은 사용자 능력과 root 능력 사이에 단계적 등급을 허용합니다. 일반 사용자 능력을 벗어난 작업을 수행하려면 사용자에 권한을 부여할 수 있고, root는 현재 보유한 root보다 적은 권한으로 제한될 수 있습니다. RBAC를 사용하여 권한으로 실행되는 명령을 권한 프로파일에 격리하고 하나의 사용자나 역할에 지정할 수 있습니다. 표 8-1은 RBAC+권한 모델이 제공하는, 사용자 능력과 루트 능력 사이의 단계적 등급을 요약한 것입니다.

권한 모델이 수퍼유저 모델보다 훨씬 안전합니다. 프로세스에서 제거된 권한은 악용될 수 없습니다. 프로세스 권한은 프로그램이나 관리 계정이 모든 능력에 액세스하지 못하도록 합니다. 프로세스 권한은 민감한 파일에 추가 보호 조치를 제공할 수 있으며, DAC 보호만으로는 액세스에 악용될 수 있습니다.

그런 다음 프로그램과 프로세스에 필요한 능력만으로 권한을 제한할 수 있습니다. 이 기능을 최소 권한의 원칙이라고 합니다. 최소 권한을 구현하는 시스템에서는 프로세스를 탈취하는 침입자가 프로세스가 가진 권한에만 액세스할 수 있습니다. 시스템의 나머지는 손상될 수 없습니다.

권한 설명

권한은 분야에 따라 논리적으로 그룹화됩니다.

다른 논리 그룹에는 CONTRACT, CPC, DTRACE, GRAPHICS, VIRTWIN이 포함됩니다.

일부 권한은 시스템에 제한된 효과를 미치고, 일부는 광범위한 효과를 미칩니다. proc_taskid 권한의 정의는 제한된 효과를 나타냅니다.

proc_taskid
        Allows a process to assign a new task ID to the calling process.

net_rawaccess 권한의 정의는 광범위한 효과를 나타냅니다.

net_rawaccess
        Allow a process to have direct access to the network layer.

privileges(5) 매뉴얼 페이지는 모든 권한을 설명합니다. ppriv -lv 명령은 모든 권한의 설명을 표준 출력으로 인쇄합니다.

권한 있는 시스템의 관리상 차이점

권한이 있는 시스템과 권한이 없는 시스템 사이에는 몇 가지 눈에 띄는 차이점이 있습니다. 다음 표는 일부 차이점을 나열합니다.

표 8-2 권한 있는 시스템과 권한 없는 시스템 사이의 눈에 띄는 차이점

기능
권한 없음
권한
데몬
데몬이 root로 실행됩니다.
데몬이 사용자 daemon으로 실행됩니다.

예를 들어, 적절한 권한이 지정되었고 daemon으로 실행되는 데몬에는 lockdrpcbind가 있습니다.

로그 파일 소유권
root가 로그 파일을 소유합니다.
로그 파일을 만든 daemon이 로그 파일을 소유합니다. root 사용자는 파일을 소유하지 않습니다.
오류 메시지
오류 메시지가 수퍼유저를 참조합니다.

예를 들어, chroot: not superuser입니다.

오류 메시지가 권한 사용을 반영합니다.

예를 들어, chroot 실패에 해당하는 오류 메시지는 chroot: exec failed입니다.

setuid 프로그램
프로그램이 setuid를 사용하여 일반 사용자가 수행할 수 없는 작업을 완료합니다.
많은 setuid 프로그램이 권한으로 실행되도록 변경되었습니다.

예를 들어, 권한을 사용하는 명령에는 audit, ikeadm, ipadm, ipsecconf, ping, traceroute, newtask 등이 있습니다.

파일 사용 권한
장치 사용 권한을 DAC로 제어합니다. 예를 들어, sys 그룹의 구성원이 /dev/ip를 열 수 있습니다.
파일 사용 권한(DAC)이 장치를 열 수 있는 사람을 예측하지 않습니다. 장치는 DAC 장치 정책으로 보호됩니다.

예를 들어, /dev/ip 파일에 666 사용 권한이 있지만 적절한 권한을 가진 프로세스로만 장치를 열 수 있습니다. 원시 소켓은 여전히 DAC로 보호됩니다.

감사 이벤트
su 명령 사용의 감사에 많은 관리 기능이 관여합니다.
권한 사용의 감사에 대부분의 관리 기능이 관여합니다. pm, ps, ex, ua, as 감사 클래스는 장치 정책과 권한 사용을 모니터하는 감사 이벤트를 포함합니다.
프로세스
프로세스를 소유한 사람이 프로세스를 보호합니다.
권한으로 프로세스를 보호합니다. 프로세스 권한 및 프로세스 플래그는 /proc/<pid> 디렉토리에서 새 항목 priv로 표시됩니다.
디버깅
코어 덤프에 권한에 대한 참조가 없습니다.
코어 덤프의 ELF 노트 절은 NT_PRPRIVNT_PRPRIVINFO 노트에 프로세스 권한 및 플래그에 대한 정보를 포함합니다.

ppriv 명령 및 기타 명령은 적절히 크기 조정된 세트의 적절한 개수를 보여줍니다. 정확히 비트 세트의 비트를 권한 이름에 매핑합니다.

권한 및 시스템 리소스

Oracle Solaris에서 project.max-locked-memory zone.max-locked-memory 리소스 컨트롤을 사용하여 PRIV_PROC_LOCK_MEMORY 권한에 지정된 프로세스의 메모리 소비를 제한할 수 있습니다. 이 권한으로 프로세스가 물리적 메모리의 페이지를 잠글 수 있습니다.

PRIV_PROC_LOCK_MEMORY 권한을 권한 프로파일에 지정하면 이 권한을 가진 프로세스에 모든 메모리를 잠그는 능력을 제공할 수 있습니다. 보호 조치로, 권한 사용자가 모든 메모리를 잠그지 못하도록 리소스 컨트롤을 설정하십시오. 비전역 영역에서 실행되는 권한 있는 프로세스의 경우 zone.max-locked-memory 리소스 컨트롤을 설정합니다. 시스템에서 실행되는 권한 있는 프로세스의 경우 프로젝트를 만들고 project.max-locked-memory 리소스 컨트롤을 설정합니다. 이러한 리소스 컨트롤에 대한 내용은 Oracle Solaris 11.1 관리: Oracle Solaris 영역, Oracle Solaris 10 영역 및 리소스 관리의 6 장, 리소스 제어(개요)Oracle Solaris 11.1 관리: Oracle Solaris 영역, Oracle Solaris 10 영역 및 리소스 관리의 16 장, 비전역 영역 구성(개요)을 참조하십시오.

권한이 구현되는 방법

모든 프로세스에는 프로세스가 특정 권한을 사용할 수 있는지 여부를 결정하는 4개의 권한 세트가 있습니다. 커널이 자동으로 권한의 유효 세트를 계산합니다. 권한의 초기 상속 가능한 세트를 수정할 수 있습니다. 권한을 사용하도록 코딩된 프로그램은 권한의 허가된 세트를 줄일 수 있습니다. 권한의 제한 세트를 축소할 수 있습니다.

커널은 기본 권한 세트를 인식합니다. 수정되지 않은 시스템에서 각 사용자의 초기 상속 가능한 세트는 로그인 시 기본 세트와 같습니다. 기본 세트를 수정할 수 없는 반면, 사용자가 기본 세트에서 상속한 권한은 수정할 수 있습니다.

수정되지 않은 시스템에서 로그인 시 사용자의 권한 세트는 다음과 비슷합니다.

E (Effective): basic
I (Inheritable): basic
P (Permitted): basic
L (Limit): all

따라서 로그인 시 모든 사용자는 상속 가능한 세트, 허가된 세트, 유효 세트에 기본 세트를 포함합니다. 사용자의 제한 세트는 (전역 또는 비전역) 영역의 기본 제한 세트와 같습니다. 사용자의 유효 세트에 더 많은 권한을 넣으려면 권한 프로파일을 사용자에 지정해야 합니다. 권한 프로파일은 사용자가 권한을 추가한 명령을 포함합니다. 또한 위험을 동반하더라도 사용자나 역할에 직접 권한을 지정할 수도 있습니다. 위험 설명은 보안 속성을 직접 지정할 때 보안 고려 사항을 참조하십시오.

프로세스가 권한을 얻는 방법

프로세스는 권한을 상속할 수 있습니다. 또는 프로세스가 권한에 지정될 수 있습니다. 프로세스는 부모 프로세스에서 권한을 상속합니다. 로그인 시, 사용자의 초기 상속 가능한 권한 세트는 사용자의 프로세스에 사용 가능한 권한을 결정합니다. 사용자 초기 로그인의 모든 자식 프로세스는 해당 세트를 상속합니다.

프로그램, 사용자, 역할에 직접 권한을 지정할 수도 있습니다. 프로그램에 권한이 필요할 때 권한 프로파일에서 프로그램의 실행 파일에 권한을 지정합니다. 프로그램을 실행하도록 허가된 사용자나 역할이 프로그램을 포함하는 프로파일에 지정됩니다. 로그인 시 또는 프로파일 셸을 입력할 때, 프로그램의 실행 파일을 프로파일 셸에 입력하면 프로그램이 권한으로 실행됩니다. 예를 들어, Object Access Management 프로파일을 포함하는 역할은 chmod 명령을 file_chown 권한으로 실행할 수 있습니다.

역할/사용자가 추가 권한이 직접 지정된 프로그램을 실행할 때 지정된 권한이 역할/사용자의 상속 가능한 세트에 추가됩니다. 권한이 지정된 프로그램의 자식 프로세스는 부모의 권한을 상속합니다. 자식 프로세스에 부모 프로세스보다 더 많은 권한이 필요한 경우 자식 프로세스에 해당 권한을 직접 지정해야 합니다.

권한을 사용하도록 코딩된 프로그램을 권한 인식 프로그램이라고 합니다. 권한 인식 프로그램은 프로그램 실행 중 권한 사용을 켜고 끕니다. 운용 환경에서 성공하려면 프로그램이 켜고 끄는 권한을 지정해야 합니다.

권한 인식 코드의 예는 Developer’s Guide to Oracle Solaris 11 Security의 2 장, Developing Privileged Applications를 참조하십시오. 권한이 필요한 프로그램에 권한을 지정하려면 예 9-18를 참조하십시오.

권한 지정

보안 관리자의 자격으로 권한을 지정할 책임이 있습니다. 최적의 사용법은 권한 프로파일에서 명령에 권한을 지정하는 것입니다. 그런 다음 권한 프로파일을 역할이나 사용자에 지정합니다.

사용자, 역할, 권한 프로파일에 직접 권한을 지정할 수도 있습니다. 세션 동안 책임감 있게 권한을 사용할 것으로 신뢰되는 일부 사용자에게는 권한을 직접 지정할 수 있습니다. 직접 지정의 좋은 후보는 proc_clock_highres와 같은 제한된 영향을 미치는 권한입니다. 직접 지정의 나쁜 후보는 file_dac_write와 같은 폭넓은 영향을 미치는 권한입니다.

사용자나 시스템에 권한이 거부될 수도 있습니다. 사용자나 시스템의 초기 상속 가능한 세트 또는 제한 세트에서 권한을 제거할 때는 주의를 기울여야 합니다.

사용자 또는 역할의 권한 확장

사용자 및 역할은 상속 가능한 권한 세트를 갖습니다. 제한 세트는 초기에 모든 권한이므로 확장할 수 없습니다. 사용자, 역할, 시스템에 대한 초기 상속 가능한 세트를 확장할 수 있습니다. 상속 가능한 세트에 속하지 않는 권한을 프로세스에 지정할 수도 있습니다.

세 가지 방식으로 사용 가능한 권한을 확장할 수 있습니다.

프로세스별 권한 지정이 가장 정확한 권한 추가 방법입니다. 사용자에 역할을 지정하여 사용자가 수행할 수 있는 권한 있는 작업의 수를 확장할 수 있습니다. 역할은 추가된 권한을 가진 명령을 포함하는 권한 프로파일에 지정됩니다. 사용자가 역할을 맡으면 역할의 프로파일 셸을 얻습니다. 권한 프로파일의 명령을 역할의 셸에 입력할 때 추가된 권한으로 명령이 실행됩니다.

사용자가 맡은 역할이 아닌, 사용자에게 권한 프로파일을 지정할 수도 있습니다. 사용자가 pfksh와 같은 프로파일 셸을 열면 사용자의 권한 프로파일의 명령을 권한으로 실행할 수 있습니다. 일반 셸에서 명령은 권한으로 실행되지 않습니다. 권한 있는 프로세스는 권한 있는 셸에서만 실행할 수 있습니다.

사용자, 역할, 시스템에 대한 초기 상속 가능한 권한 세트를 확장하는 것은 위험한 권한 지정 방법입니다. 상속 가능한 세트의 모든 권한은 허가된 세트와 유효 세트에 속합니다. 사용자나 역할이 셸에 입력하는 모든 명령은 직접 지정된 권한을 사용할 수 있습니다. 직접 지정된 권한을 통해 사용자/역할의 관리 책모든 한도를 벗어난 작업을 쉽게 수행할 수 있습니다.

이러한 위험을 줄이기 위해 한 번에 하나의 객체에서 작업할 수 있도록 사용자 또는 역할에 권한을 지정할 수 있습니다. 가능한 객체는 네트워크 포트, UID 및 파일 객체입니다. 예를 들어, /var/core 디렉토리의 파일에 대한 file_dac_read 권한을 사용자에게 지정할 수 있습니다. file_dac_read 권한은 이 확장 정책이 적용된 경우 사용자 프로세스의 유효 세트에 있어야 합니다. 그러면 사용자가 이 디렉토리 객체에 대한 확장 정책이 이 사용자에게 지정된 경우 /var/core 디렉토리의 모든 파일을 읽을 수 있습니다.

시스템에서 초기 상속 가능한 권한 세트에 추가할 때 시스템에 로그온한 모든 사용자는 더 큰 기본 권한 세트를 받습니다. 이러한 직접 지정으로 시스템의 모든 사용자는 일반 사용자의 한도를 벗어난 작업을 쉽게 수행할 수 있습니다.


주 - 제한 세트는 초기에 모든 권한이므로 확장할 수 없습니다.


사용자 또는 역할의 권한 제한

권한을 제거하여 사용자나 역할이 특정 작업을 수행하는 것을 막을 수 있습니다. 초기 상속 가능한 세트 및 제한 세트에서 권한을 제거할 수 있습니다. 초기 상속 가능한 세트 또는 제한 세트가 기본 세트보다 작은 경우 세트를 분배하기 전에 권한 제거를 주의 깊게 테스트해야 합니다. 초기 상속 가능한 세트에서 권한을 제거하면 사용자의 로그인을 막을 수 있습니다. 제한 세트에서 권한을 제거할 때 기존의 setuid 프로그램에 제거된 권한이 필요한 경우 프로그램을 실패할 수 있습니다.

스크립트에 권한 지정

스크립트는 명령과 비슷한 실행 파일입니다. 따라서 권한 프로파일에서 명령에 권한을 추가하듯이 스크립트에 권한을 추가할 수 있습니다. 권한 프로파일에 지정된 사용자/역할이 프로파일 셸에서 스크립트를 실행할 때 추가된 명령으로 스크립트가 실행됩니다. 스크립트에 권한이 필요한 명령이 포함된 경우 추가된 권한을 가진 명령 역시 지정된 권한 프로파일에 있어야 합니다.

권한 인식 프로그램은 프로세스별 권한을 제한할 수 있습니다. 권한 인식 프로그램의 임무는 프로그램에 필요한 권한만 실행 파일에 지정하는 것입니다. 그런 다음 프로그램을 테스트하여 프로그램이 작업 수행을 성공하는지 확인합니다. 또한 프로그램이 권한 사용을 오용하지 않는지 검사합니다.

권한 및 장치

권한 모델은 권한을 사용하여 시스템 인터페이스를 보호하며, 수퍼유저 모델은 파일 사용 권한만으로 보호합니다. 권한 있는 시스템에서 파일 사용 권한은 인터페이스를 보호하기에 너무 약합니다. proc_owner와 같은 권한은 파일 사용 권한을 대체하고 시스템 전체에 대한 전체 액세스 권한을 부여할 수 있습니다.

따라서 Oracle Solaris에서 장치 디렉토리의 소유권은 장치를 열기에 충분하지 않습니다. 예를 들어 sys 그룹의 구성원은 더 이상 자동으로 /dev/ip 장치를 열도록 허용되지 않습니다. /dev/ip의 파일 사용 권한은 0666이지만, 장치를 열려면 net_rawaccess 권한이 필요합니다.

장치 정책은 권한으로 제어합니다. getdevpolicy 명령은 모든 장치에 대한 장치 정책을 표시합니다. 장치 구성 명령 devfsadm은 장치 정책을 설치합니다. devfsadm 명령은 장치 읽기/쓰기를 위해 권한 세트를 open과 바인드합니다. 자세한 내용은 getdevpolicy(1M)devfsadm(1M) 매뉴얼 페이지를 참조하십시오.

장치 정책을 통해 장치 열기 권한 부여에 유연성이 확대됩니다. 기본 장치 정책과 비교해 다른 권한이나 많은 권한이 필요할 수 있습니다. 장치 정책 및 드라이버에 대한 권한 요구 사항을 적절히 수정할 수 있습니다. 장치 드라이버를 설치, 추가, 업데이트할 때 권한을 수정할 수 있습니다.

add_drvupdate_drv 명령을 사용하여 장치 정책 항목 및 장치 특정 권한을 수정할 수 있습니다. 장치 정책을 변경하려면 전체 권한 세트를 보유한 프로세스를 실행 중이어야 합니다. 자세한 내용은 add_drv(1M)update_drv(1M) 매뉴얼 페이지를 참조하십시오.

권한 및 디버깅

Oracle Solaris는 권한 실패를 디버깅하는 도구를 제공합니다. ppriv 명령과 truss 명령은 디버깅 출력을 제공합니다. 예제는 ppriv(1)매뉴얼 페이지를 참조하십시오. 절차는 프로그램에 필요한 권한을 확인하는 방법을 참조하십시오. 또한 dtrace 명령을 사용할 수 있습니다. 자세한 내용은 dtrace(1M) 매뉴얼 페이지를 참조하십시오.