PAM (Pluggable Authentication Modules) » 이력 » 버전 2
이태훈, 2022/08/02 07:57
| 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 | |=. requisite|=. 인증 결과가 실패일 경우, 인증 종료(인증 성공은 결과에 미반영)| |
||
| 36 | |=. required|=. 인증 결과와 관계없이 다음 인증 실행(인증 실패 시 실패, 인증 성공 시 성공)| |
||
| 37 | |=. sufficient|=. 인증 결과가 성공일 경우, 인증 종료(인증 실패는 결과에 미반영)| |
||
| 38 | |=. optional|=. 최종 인증 결과에 반영되지 않음. 단, 다른 인증 모듈의 명확한 성공/실패가 없다면 이 모듈의 결과를 반환| |
||
| 39 | |=. include|=. argument에 지정된 또 다른 설정 파일의 내용이나 지침을 포함 시킴| |
||
| 40 | |||
| 41 | h3. 3. Module-Name |
||
| 42 | |||
| 43 | * 사용하고자 하는 모둘의 경로와 이름을 지정하는 필드이며 PAM 모둘은 대부분 /lib/security 또는 /etc/pam.d 디렉토리에 위치한다. |
||
| 44 | |||
| 45 | |_. Module 이름|_. 설명| |
||
| 46 | |=. 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 | |||
| 51 | h3. 4. module-arguments |
||
| 52 | |||
| 53 | * 모듈에 전달되는 인수를 나타낸다. 각각의 모듈은 각각의 인수를 가지고 있다. 모듈마다 인수가 필요할 수도 필요 없을 수도 있다. |
||
| 54 | |||
| 55 | |_. Arguments 이름|_. 설명| |
||
| 56 | |=. Debug|=. 시스템 로그 파일에 디버그 정보를 남기도록 지정 |
||
| 57 | |=. No_warn|=. 모듈이 경고 메시지를 보내지 않도록 지정 |
||
| 58 | |=. Use_first_pass|=. 사용자에게 password입력을 요구하지 않도록 지정하는 인수. 이전 모듈에서 입력받은 password가 존재하지 않을 경우, 인증 실패 반환 |
||
| 59 | |=. Try_first_pass|=. 이전 모듈에서 입력받은 password로 인증을 시도하며, 이전에 입력받은 password가 존재하지 않을 경우 사용자에게 입력을 요구 |