프로젝트

일반

사용자정보

PAM (Pluggable Authentication Modules) » 이력 » 버전 3

이태훈, 2022/08/02 07:59

1 1 이태훈
h1. PAM (Pluggable Authentication Modules)
2
3
 * Linux 시스템 내에서 사용되는 각종 어플리케이션 인증을 위해 제공되는 다양한 인증용 라이브러리들
4
 * 프로그램 개발 시 인증모듈을 별도 개발하지 않고 플러그인 방식을 PAM을 사용함으로써 인증 방식 및 정책의 유연성과 중앙 통제가 가능
5
6
h2. 1) PAM 인증 절차
7
8
 * 각 프로그램이 인증이 필요한 부분에서 PAM 라이브러리를 호출하도록 함
9
 * 해당 프로그램의 PAM 설정파일을 참조해 등록된 여러 PAM 모듈을 수행하고 그 결과를 반환
10
 * 인증 여부 결정
11
 * /etc/pam.d : PAM 라이브러리를 이용하는 프로그램들의 설절파일들이 들어있는 디렉토리
12
 * /lib/security : PAM 라이브러리가 제공하는 인증 모듈들이 들어있는 디렉토리
13
 * /etc/security : PAM 모듈 실행에 필요한 추가 설정 파일들이 들어있는 디렉토리
14
15
h2. 2) PAM 설정 파일
16
17
|_. Module-Type|_. Control-Flag|_. Module-Name|_. Module-Arguments|
18
19
h3. 1. Module-Type
20
21
* 모듈 타입 필드는 PAM에 어떤 종류의 인증을 사용할 것인가를 지정하는 필드로 아래와 같이 4종류의 타입을 설정할 수 있다.
22
23
|_. 모듈 타입 이름|_. 설명|
24
|_. auth|=. 사용자에게 비밀번호를 요청하고 입력 받은 정보가 맞는지 검사하는 모듈|
25
|_. account|=. 계정에 대한 접근 통제 및 계정 정책을 관리하는 하는 모듈|
26
|_. password|=. 사용자가 인증 정보(password)를 변경할 수 있도록 비밀번호 갱신을 관리하는 모듈|
27 2 이태훈
|_. session|=. 사용자가 인증을 받기 전/후에 수행해야 할 일을 정의하는 모듈|
28 1 이태훈
29
h3. 2. Control-Flag
30
31
* PAM에서 사용되는 모듈들이 결과에 따라 어떤 동작을 해야하는지 결정하는 필드이다.
32
* 5개의 Control-Flag중 'Required'의 경우, 해당 모듈의 결과와 상관없이 다음 모듈을 실행시킨다. 심지어 다음에 실행된 모듈의 결과보다 더 높은 우선순위를 가지므로 'Required'에서 실패가 되면 최종 인증결과는 실패가 된다.
33
34
|_. Flag 이름|_. 설명|
35 3 이태훈
|_. requisite|=. 인증 결과가 실패일 경우, 인증 종료(인증 성공은 결과에 미반영)|
36
|_. required|=. 인증 결과와 관계없이 다음 인증 실행(인증 실패 시 실패, 인증 성공 시 성공)|
37
|_. sufficient|=. 인증 결과가 성공일 경우, 인증 종료(인증 실패는 결과에 미반영)|
38
|_. optional|=. 최종 인증 결과에 반영되지 않음. 단, 다른 인증 모듈의 명확한 성공/실패가 없다면 이 모듈의 결과를 반환|
39
|_. include|=. argument에 지정된 또 다른 설정 파일의 내용이나 지침을 포함 시킴|
40 1 이태훈
41
h3. 3. Module-Name
42
43
* 사용하고자 하는 모둘의 경로와 이름을 지정하는 필드이며 PAM 모둘은 대부분 /lib/security 또는 /etc/pam.d 디렉토리에 위치한다.
44
45
|_. Module 이름|_. 설명|
46 3 이태훈
|_. pam_rootok|=. root 계정인 경우, 추가 인증 없이 무조건 해용하는 모듈|
47
|_. pam_wheel.so|=. SU명령어 사용 인증에 사용되며 특정 그룹(wheel)에 대한 인증을 제어하는 모듈|
48
|_. pam_succeed_if.so|=. 인수로 주어진 조건에 따라 인증을 제어하는 모듈|
49
|_. pam_securetty.so|=. root 계정인 경우만 적용되는 모듈로써 /etc/securetty 파일을 참고하여 해당 파일에 root가 있으면 특정 서비스에 대한 root 접근을 허용하는 모듈(root 이외의 계정은 항상 인증 성공)|
50 1 이태훈
51
h3. 4. module-arguments
52
53
* 모듈에 전달되는 인수를 나타낸다. 각각의 모듈은 각각의 인수를 가지고 있다. 모듈마다 인수가 필요할 수도 필요 없을 수도 있다.
54
55
|_. Arguments 이름|_. 설명|
56 3 이태훈
|_. Debug|=. 시스템 로그 파일에 디버그 정보를 남기도록 지정|
57
|_. No_warn|=. 모듈이 경고 메시지를 보내지 않도록 지정|
58
|_. Use_first_pass|=. 사용자에게 password입력을 요구하지 않도록 지정하는 인수. 이전 모듈에서 입력받은 password가 존재하지 않을 경우, 인증 실패 반환|
59
|_. Try_first_pass|=. 이전 모듈에서 입력받은 password로 인증을 시도하며, 이전에 입력받은 password가 존재하지 않을 경우 사용자에게 입력을 요구|