내 잡다한 노트

PAM ( Pluggable Authentication Modules ) 본문

DevOps/리눅스

PAM ( Pluggable Authentication Modules )

peanutwalnut 2024. 11. 19. 13:07

 

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의 장점

  1. 모듈화:
    • 다양한 인증 방법을 플러그인 방식으로 추가 가능.
  2. 유연성:
    • 애플리케이션과 독립적으로 인증 정책 관리.
  3. 중앙 집중 관리:
    • 시스템 전체의 인증 설정을 중앙에서 관리 가능.
  4. 보안 강화:
    • 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