탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 관리: 보안 서비스 Oracle Solaris 11 Information Library (한국어) |
PAM 구성 파일 pam.conf(4)는 login, rlogin, su 및 cron과 같은 시스템 서비스에 대해 PAM 서비스 모듈을 구성하는 데 사용됩니다. 시스템 관리자가 이 파일을 관리합니다. pam.conf의 항목 순서가 잘못되면 예측하지 못한 역효과가 발생할 수 있습니다. 예를 들어, 잘못 구성된 pam.conf는 사용자를 잠그게 되므로 복구하려면 단일 사용자 모드가 필요할 수 있습니다. 순서 설정에 대한 설명은 PAM 스택이 작동하는 방식을 참조하십시오.
service-name module-type control-flag module-path module-options
서비스의 이름(예: ftp, login, passwd)입니다. 응용 프로그램에서는 응용 프로그램이 제공하는 서비스에 대해 서로 다른 서비스 이름을 사용할 수 있습니다. 예를 들어, Oracle Solaris 보안 셸 데몬에서는 sshd-none, sshd-password, sshd-kbdint, sshd-pubkey 및 sshd-hostbased의 서비스 이름을 사용합니다. service-name other는 와일드카드 service-name으로 사용되는 사전 정의된 이름입니다. 특정 service-name을 구성 파일에서 찾을 수 없는 경우 other에 대한 구성 파일이 사용됩니다.
서비스의 유형(즉, auth, account, session 또는 password)입니다.
서비스에 대한 통합된 성공 또는 실패 값을 결정하는 모듈의 역할을 나타냅니다. 유효한 제어 플래그는 binding, include, optional, required, requisite 및 sufficient입니다. 이러한 플래그 사용에 대한 자세한 내용은 PAM 스택이 작동하는 방식을 참조하십시오.
서비스를 구현하는 라이브러리 객체의 경로입니다. 경로 이름이 절대 경로가 아닌 경우 경로 이름은 /usr/lib/security/$ISA/에 대한 상대 경로로 간주됩니다. libpam이 디렉토리에서 응용 프로그램의 특정 아키텍처를 찾도록 하려면 아키텍처 종속 매크로 $ISA를 사용합니다.
서비스 모듈에 전달되는 옵션입니다. 모듈의 매뉴얼 페이지에서는 해당 모듈에서 허용되는 옵션을 설명합니다. 일반적인 모듈 옵션에는 nowarn 및 debug가 포함됩니다.
응용 프로그램이 다음 함수를 호출할 경우 libpam은 구성 파일 /etc/pam.conf를 읽어 어떤 모듈이 이 서비스에 대한 작업에 참여하는지 결정합니다.
/etc/pam.conf에 이 서비스의 작업에 대한 모듈이 하나(예: 인증 또는 계정 관리)만 포함된 경우 해당 모듈의 결과가 작업의 결과를 결정합니다. 예를 들어, passwd 응용 프로그램에 대한 기본 인증 작업에는 하나의 모듈 pam_passwd_auth.so.1이 포함됩니다.
passwd auth required pam_passwd_auth.so.1
반면 서비스의 작업에 대해 정의된 모듈이 여러 개인 경우 해당 모듈을 스택이라 하고 PAM 스택이 해당 서비스에 대해 존재합니다. 예를 들어, pam.conf에 다음 항목이 포함된 경우를 생각해 보십시오.
login auth requisite pam_authtok_get.so.1 login auth required pam_dhkeys.so.1 login auth required pam_unix_cred.so.1 login auth required pam_unix_auth.so.1 login auth required pam_dial_auth.so.1
이러한 항목은 login 서비스에 대한 샘플 auth 스택을 나타냅니다. 이 스택의 결과를 결정하려면 개별 모듈의 결과 코드에 통합 프로세스가 필요합니다. 통합 프로세스에서 모듈은 /etc/pam.conf 에 지정된 대로 순서대로 실행됩니다. 각 성공 또는 실패 코드는 모듈의 제어 플래그에 따라 전체 결과에 통합됩니다. 제어 플래그는 스택의 조기 종료를 유발할 수 있습니다. 예를 들어, requisite 모듈이 실패하거나 sufficient 또는 binding 모듈이 성공할 수 있습니다. 스택이 처리된 후 개별 결과는 하나의 전체 결과로 합쳐서 응용 프로그램에 전달됩니다.
제어 플래그는 PAM 모듈이 서비스에 대한 액세스를 결정하는 데 수행하는 역할을 나타냅니다. 제어 플래그 및 효과는 다음과 같습니다.
Binding – 실패한 이전 required 모듈이 없는 경우 binding 모듈의 요구 사항을 충족하는 성공은 이 응용 프로그램에 즉시 성공을 반환합니다. 이러한 조건이 충족되지 않는다면 모듈은 더 이상 실행되지 않습니다. 실패의 경우 required 실패가 기록되고 모듈 처리가 계속됩니다.
Include – PAM 스택의 이 시점에서 사용될 별도의 PAM 구성 파일에서 행을 추가합니다. 이 플래그는 성공이나 실패 동작을 제어하지 않습니다. 새 파일이 읽혀지면 PAM 포함 스택이 증가됩니다. 새 파일에서 스택 확인이 완료되면 포함 스택 값이 감소합니다. 파일의 끝에 도달하고 PAM 포함 스택이 0이면 스택 처리가 종료됩니다. PAM 포함 스택에 대한 최대 수는 32입니다.
Optional – optional 모듈의 요구 사항을 충족하는 성공은 서비스를 사용하는 데 필요하지 않습니다. 실패의 경우 optional 실패가 기록됩니다.
Required – reauired 모듈의 요구 사항을 충족하는 성공은 서비스를 사용하는 데 필요합니다. 실패의 경우 이 서비스에 대한 나머지 모듈이 실행된 후 오류가 반환됩니다. 서비스에 대한 최종 성공은 실패를 보고한 binding 또는 required 모듈이 없을 경우에만 반환됩니다.
Requisite – requisite 모듈의 요구 사항을 충족하는 성공은 서비스를 사용하는 데 필요합니다. 실패의 경우 모듈의 추가 실행 없이 즉시 오류가 반환됩니다. 함수가 응용 프로그램에 성공을 반환할 수 있으려면 서비스에 대한 모든 requisite 모듈이 성공을 반환해야 합니다.
Sufficient – 발생한 이전 required 실패가 없는 경우 sufficient 모듈의 성공은 모듈의 추가 실행 없이 응용 프로그램에 즉시 성공을 반환합니다. 실패의 경우 optional 실패가 기록됩니다.
다음 두 다이어그램은 통합 프로세스에서 액세스가 어떻게 결정되는지 보여줍니다. 첫번째 다이어그램은 제어 플래그의 각 유형에 대해 성공 또는 실패가 어떻게 기록되는지 나타냅니다. 두번째 다이어그램은 통합된 값이 어떻게 결정되는지 보여줍니다.
그림 15-2 PAM 스택: 제어 플래그의 효과
그림 15-3 PAM 스택: 통합된 값이 결정되는 방식
인증을 요청하는 rlogin 서비스의 다음 예를 살펴보십시오.
예 15-1 일반적인 PAM 구성 파일의 일부
이 예의 pam.conf 파일에는 rlogin 서비스에 대한 다음 내용이 있습니다.
# Authentication management ... # rlogin service rlogin auth sufficient pam_rhosts_auth.so.1 rlogin auth requisite pam_authtok_get.so.1 rlogin auth required pam_dhkeys.so.1 rlogin auth required pam_unix_auth.so.1 ...
rlogin 서비스에서 인증을 요청하면 libpam이 먼저 pam_rhosts_auth(5) 모듈을 실행합니다. 제어 플래그는 pam_rhosts_auth 모듈에 대해 sufficient로 설정됩니다. pam_rhosts_auth 모듈에서 사용자를 인증할 수 있는 경우 처리가 중지되고 응용 프로그램에 성공이 반환됩니다.
pam_rhosts_auth 모듈에서 사용자 인증을 실패할 경우 다음 PAM 모듈인 pam_authtok_get(5)이 실행됩니다. 이 모듈에 대한 제어 플래그는 requisite로 설정됩니다. pam_authtok_get를 실패할 경우 인증 프로세스가 종료되고 rlogin에 실패가 반환됩니다.
pam_authtok_get을 성공할 경우 다음 두 모듈인 pam_dhkeys(5) 및 pam_unix_auth(5)가 실행됩니다. 두 모듈은 required로 설정된 제어 플래그를 가지므로 개별적으로 실패 반환 여부에 상관없이 프로세스가 계속됩니다. pam_unix_auth가 실행된 후 남아 있는 rlogin 인증에 대한 모듈은 없습니다. 이 시점에서 pam_dhkeys 또는 pam_unix_auth가 실패를 반환할 경우 사용자는 rlogin을 통해 액세스가 거부됩니다.