PAM/ko

PAM, 또는 장착 가능 인증 모듈은, 모듈화 인증 기법입니다. (서드 파티) 서비스에서 PAM 기능 시스템에서 사용할 수 있도록 서비스에 인증 모듈을 제공할 수 있도록 합니다. PAM 인증 기능을 사용하는 서비스는 모듈을 따로 빌드하지 않고 바로 사용할 수 있습니다.

도입부
리눅스 서버의 인증 관리(접근 관리 일부)는 PAM(장착 가능 인증 모듈)으로 처리할 수 있습니다. PAM은, 서비스 자체에서 인증 서비스를 제공할 필요가 없게 합니다. 대신, 시스템에서 사용하는 PAM 모듈에 의존합니다. 각각의 서비스는 제각각의 서비스마다 유사하게 대부분의 시간 기반 인증을 처리하지만, 원하는 경우 제각기 다른 PAM 설정을 사용할 수 있습니다. PAM 모듈을 호출하면, 특별하게 2개 인자 인증을 지원할 수 있으며, 집중 인증 저장소 그 이상의 기능을 바로 사용할 수 있습니다.

PAM은 다음 서비스에 대해 유연한 모듈식 구조를 지원합니다:


 * 사용자가 누군지 검증하는 인증 관리
 * 사용자의 암호 기간이 끝났거나 사용자로 하여금 제각각의 서비스에 접근할 수 있는지 확인하는 계정 관리
 * 사용자의 로그인, 로그오프 작업(감사, 파일 시스템 마운트 등)을 실행하는 세션 관리
 * 암호 초기화 같은 목적을 다루려 인터페이스를 지원하는 암호 관리

PAM에 숨겨놓은 원리
PAM을 다룰 때, 관리자 여러분께서는 PAM과 동작하는 요소가 무엇인지 간단하게 살펴보도록 하겠습니다.

첫번째는 백엔드 독립성입니다. PAM을 인지하는 프로그램은 데이터베이스, LDAP 서비스, 암호 파일, WS-보안 가능 웹서비스 또는 아직 고안하지 않은 다른 백엔드 같은 부분을 다룰 어떤 로직도 포함할 필요가 없습니다. PAM을 사용하면 프로그램 백엔드 통합 로직 자체로부터 프로그램을 따로 떨어뜨려놓습니다. 이 자체로 필요한 기능이 PAM 기능입니다.

다른 원리는 설정 원리입니다. 관리자는 제각기 다른 프로그램에서 LDAP 서버와 어떻게 인증 단계에서 상호 작용할지 알아볼 필요가 없습니다. 대신 PAM에서 제공하는 동일한 설정 구조를 쓰시면 됩니다.

PAM 이름의 일부이자 마지막 원리는 장착 가능 구조 입니다. 새 백엔드를 통합해야 한다면 모든 관리자가 해야 할 일은 이 백엔드용 라이브러리의 설치(시스템의 올바른 티렉터리에 복사)와 이 모듈의 설정(대부분의 모듈은 단일 설정 파일을 사용함)입니다. 이 시점이 지나면, 프로그램용 모듈을 사용할 수 있습니다. 관리자는 백엔드를 사용할 수 있게 인증을 설정할 수 있으며, 단지 프로그램을 다시 시작하기만 하면 됩니다.

PAM 동작 원리
Applications that want to use PAM link with the PAM library (libpam) and call the necessary functions that reflect the above services. Other than that, the application does not need to implement any specific features for these services, as it is all handled by PAM. So when a user wants to authenticate itself against, say, a web application, then this web application calls PAM (passing on the user id and perhaps password or challenge) and checks the PAM return to see if the user is authenticated and allowed access to the application. It is PAMs task underlyingly to see where to authenticate against (such as a central database or LDAP server).

The strength of PAM is that everyone can build PAM modules to integrate with any PAM-enabled service or application. If a company releases a new service for authentication, all it needs to do is provide a PAM module that interacts with its service, and then all software that uses PAM can work with this service immediately: no need to rebuild or enhance those software titles.

설정
Another important aspect of PAM is that it supports chaining of multiple modules. Let's look at a PAM configuration file for an unnamed service:

We see that the configuration file is structured in the four service domains that PAM supports: authentication, account management, password management and session management.

Each of the sections in the configuration file calls one or more PAM modules. For instance, sets the environment variable which can be used by subsequent modules. The return code provided by the PAM module, together with the control directive (required or optional in the above example), allow PAM to decide how to proceed.

제어 지시문
PAM은 다음 설정 지시문을 지원합니다.

Chaining of modules allows for multiple authentications to be done, multiple tasks to be performed upon creating a session and more.

PAM 설정 파일 관리
프로그램에서 PAM 설정 파일로 인증 단계를 다룰 때 설정 파일을 조심스럽게 다루는 것이 상당히 중요합니다. 보통 설정 파일은 디렉터리에 있습니다.

대기업체나, 보안에 민감한 시스템에서는 PAM 설정 파일 수정을 적절하게 감독해야 합니다.

설정은 PAM 모듈 자체가 들어가는 위치( 또는 )에 동일하게 넣습니다.

PAM과 젠투
조건에 따라 PAM을 지원할 수 있는 프로그램은 'pam' USE 플래그를 사용합니다. 젠투 시스템이 PAM 없이 동작할 수는 있지만 기본적으로는 PAM 지원 기능이 있는 상태로 시스템이 동작합니다.

추가 참조

 * Project:PAM 젠투 프로젝트
 * SSH 공개키 기반 인증을 처리하는 개별 PAM 모듈을 설지하고 설정하는 방법을 설명하는PAM ssh agent moduleen 게시글
 * 구글 인정 프로그램을 PAM으로 인증할 때 어떻게 설치하고 설정하는지 방법을 설명하는 Google authenticatoren 게시글

외부 자료

 * 젠투 개발자 설명서에 있는 PAM 다루기 부분