내 잡다한 노트
PAM ( Pluggable Authentication Modules ) 본문
PAM은 리눅스에서 사용하는 인증 모듈로 서비스에 대한 사용자의 사용 권한을 제어하는 모듈이다.
PAM이 없을 때는 사용자를 인증하기 위해 응용프로그램을 활용해야 했는데, 응용프로그램은 /etc/passwd의 접근 권한을 가지고 있어야 해서 침해사고의 위험이 존재했다.
이를 해결하기 위해 PAM이 등장하게 됐다.
동작 원리
- 인증이 필요한 응용프로그램은 더 이상 passwd 파일을 열람하지 않고 PAM 모듈에 사용자 인증을 요청한다.
- PAM은 인증을 요청한 사용자의 정보를 가지고 결과를 도출하여 응용프로그램에 전달한다.
PAM의 구성 요소
PAM은 다음과 같은 주요 구성 요소로 이루어져 있습니다.
1. PAM 모듈
- 실제 인증 작업을 수행하는 소프트웨어.
- /lib/security/ 또는 /usr/lib/security/에 저장된 공유 라이브러리(.so 파일).
2. 설정 파일
- PAM의 동작 방식을 정의.
- 각 서비스에 대한 설정은 /etc/pam.d/ 디렉토리에 저장되며, 파일 이름은 서비스 이름과 동일.
- 예: SSH 서비스는 /etc/pam.d/sshd.
3. 애플리케이션
- PAM API를 호출하여 인증을 요청하는 프로그램.
- 예: sshd, sudo, login.
PAM 설정 파일 구조
PAM 설정 파일은 각 줄에 다음과 같은 형식으로 구성됩니다:
<모듈 유형> <제어 플래그> <PAM 모듈> <모듈 옵션>
1. 모듈 유형 (Module Type)
PAM은 4가지 주요 모듈 유형을 제공합니다:
- auth:
- 사용자 인증 처리.
- 예: 비밀번호 확인, 인증 토큰 생성.
- account:
- 계정 관련 검증.
- 예: 계정 만료 여부, 접근 제어.
- password:
- 비밀번호 관리.
- 예: 비밀번호 변경.
- session:
- 세션 관리.
- 예: 홈 디렉토리 생성, 로그 기록.
2. 제어 플래그 (Control Flag)
PAM 모듈의 결과를 처리하는 방식을 정의.
- required:
- 반드시 성공해야 하는 모듈. 실패해도 다음 모듈 실행.
- 모든 required 모듈이 성공해야 최종 성공.
- requisite:
- 반드시 성공해야 하는 모듈. 실패 시 즉시 종료.
- sufficient:
- 성공 시 최종 성공으로 간주. 이후 모듈 무시.
- optional:
- 선택적 모듈. 실패해도 인증에 큰 영향을 주지 않음.
3. PAM 모듈 (Module)
- PAM 설정에서 호출되는 공유 라이브러리.
- 예: pam_unix.so (로컬 사용자 인증), pam_ldap.so (LDAP 인증).
4. 모듈 옵션
- PAM 모듈 동작 방식을 설정하는 추가 매개변수.
- 예: nullok, try_first_pass, use_first_pass.
PAM의 장점
- 모듈화:
- 다양한 인증 방법을 플러그인 방식으로 추가 가능.
- 유연성:
- 애플리케이션과 독립적으로 인증 정책 관리.
- 중앙 집중 관리:
- 시스템 전체의 인증 설정을 중앙에서 관리 가능.
- 보안 강화:
- LDAP, Kerberos 등 외부 인증 메커니즘 통합으로 보안성 향상.
'DevOps > 리눅스' 카테고리의 다른 글
우분투 시스템 전역 환경변수 설정 (0) | 2024.12.10 |
---|---|
tmux (0) | 2024.11.30 |
Reverse DNS가 필요한 이 (0) | 2024.11.19 |
Bind에서 Zone (0) | 2024.11.19 |
LDAP을 사용할 때 쓰이는 파일들 (0) | 2024.11.18 |