리눅스 PAM

정의
리눅스 PAM(Pluggable Authentication Modules)은 리눅스 및 유닉스 계열 운영체제에서 인증, 계정 관리, 비밀번호 관리, 세션 관리 등의 보안 관련 기능을 모듈화하여 구현할 수 있게 해 주는 프레임워크이다. PAM은 응용 프로그램이 직접 인증 로직을 구현하는 대신, 표준화된 인터페이스를 통해 다양한 인증 모듈을 동적으로 연결하고 조합할 수 있도록 설계되었다.

개요
PAM은 1995년 Sun Microsystems가 제안한 OpenPAM 프로젝트를 기반으로 발전했으며, 현재는 Linux-PAM(일반적으로 “Linux PAM”이라고 불림) 프로젝트가 주요 구현체를 제공한다. 시스템 관리자는 /etc/pam.d/ 디렉터리 아래에 각 서비스(예: login, sshd, sudo 등)별 PAM 설정 파일을 배치함으로써, 해당 서비스가 사용할 인증 흐름을 정의한다. 각 설정 파일은 auth, account, password, session 네 가지 관리 유형으로 구분된 모듈 스택을 기술한다.

어원/유래
Pluggable은 “플러그‑인 방식으로 교체·추가 가능함”을 의미하고, Authentication은 “인증”을 뜻한다. 따라서 Pluggable Authentication Modules는 “플러그‑인 방식 인증 모듈”이라는 의미이다. “PAM”이라는 약어는 위와 같은 의미에서 유래했으며, Linux 환경에서의 구현은 “Linux‑PAM”이라는 프로젝트 명으로 알려져 있다.

특징

구분 내용
모듈화 인증 로직을 별도 .so 파일 형태의 모듈로 구현하여 필요에 따라 추가·제거·교체 가능
유연한 정책 설정 서비스별로 서로 다른 인증 정책을 정의할 수 있으며, 하나의 모듈을 여러 서비스에서 재사용 가능
표준 인터페이스 pam_start, pam_authenticate, pam_acct_mgmt, pam_setcred, pam_open_session, pam_close_session 등 표준 API 제공
다양한 인증 수단 지원 로컬 비밀번호, LDAP, Kerberos, 스마트카드, 2단계 인증(OTP) 등 다양한 백엔드와 연동
보안 강화 인증 단계별로 제어가 가능해 로그인 시도 제한, 계정 잠금, 비밀번호 정책 적용 등을 체계적으로 관리 가능
오픈소스 Linux‑PAM은 GPL 라이선스로 배포되며, 소스 코드는 공개되어 있다.

관련 항목

  • Linux‑PAM – PAM 프레임워크의 대표적인 오픈소스 구현체
  • PAM 모듈pam_unix.so, pam_ldap.so, pam_krb5.so 등 다양한 인증 백엔드를 제공하는 개별 모듈
  • /etc/pam.d/ – 서비스별 PAM 설정 파일이 위치하는 디렉터리
  • SSSD (System Security Services Daemon) – LDAP, Kerberos 등과 연계해 PAM과 함께 사용되는 인증/디렉터리 서비스
  • SELinux (Security-Enhanced Linux) – 시스템 보안 정책을 강화하는 다른 보안 프레임워크와 PAM이 상호 보완적으로 동작할 수 있음

※ 본 내용은 공개된 문서와 표준 사양을 기반으로 작성되었으며, 최신 배포판에서의 구체적인 구현 방식은 배포판마다 차이가 있을 수 있다.

둘러보기

더 찾아볼 만한 주제