PAM (Pluggable Authentication Modules)은 리눅스 및 유닉스 시스템에서 인증 메커니즘을 처리하는 프레임워크입니다. PAM은 다양한 인증 방식(예: 비밀번호 인증, 바이오인증, 스마트카드 인증 등)을 모듈화하여, 시스템 관리자들이 인증 방법을 쉽게 설정하고 변경할 수 있도록 도와줍니다.
PAM의 주요 목적은 시스템의 인증 절차를 모듈화하여, 인증 방식을 쉽게 확장하고 교체할 수 있게 만드는 것입니다. 이를 통해 여러 인증 방법을 하나의 공통된 시스템에서 관리할 수 있습니다.
PAM은 각 인증 메커니즘을 모듈로 구현하며, 이러한 모듈들은 PAM 설정 파일을 통해 조합되어 사용됩니다. 이 모듈들은 특정 인증 프로세스를 수행하는 작은 단위로, 서로 독립적으로 동작할 수 있습니다.
pam_unix.so, pam_google_authenticator.so, pam_tally.so 등)/etc/pam.d/ 디렉터리 내)PAM은 각 서비스마다 개별적인 설정 파일을 두고 있으며, 이 설정 파일에서 어떤 모듈을 사용할지, 그리고 각 모듈이 어떤 방식으로 동작할지를 정의합니다. 이 설정은 /etc/pam.d/ 디렉터리에 위치합니다. 각 서비스(예: login, sshd, sudo 등)에 대해 해당하는 설정 파일이 있습니다.
PAM 모듈은 각기 다른 인증 방식 및 작업을 수행하는데 사용됩니다. 주요 모듈의 예시는 다음과 같습니다:
/etc/passwd와 /etc/shadow 파일을 사용하여 사용자 인증을 수행합니다.PAM 설정 파일은 /etc/pam.d/ 디렉터리 내에 있습니다. 각 서비스에 대한 설정 파일이 있으며, 예를 들어 login, sshd, sudo 등 각각의 서비스에 맞는 설정 파일이 존재합니다.
PAM 설정 파일은 대체로 다음과 같은 형식으로 구성됩니다:
<type> <control_flag> <module_path> <arguments>
auth: 인증 (Authentication) 관련 작업account: 사용자 계정 관련 작업 (계정이 잠겼는지, 만료되었는지 확인)password: 비밀번호 변경 관련 작업session: 세션 관리 관련 작업 (예: 로그인 후 환경 설정)required: 해당 모듈이 성공해야만 인증이 성공하는데 필요한 모듈입니다.requisite: 해당 모듈이 실패하면 인증이 즉시 실패합니다.sufficient: 해당 모듈이 성공하면 인증이 바로 성공합니다.optional: 해당 모듈이 인증 성공 여부에 영향을 주지 않습니다./lib/security/pam_unix.so와 같은 형태로 모듈의 경로가 지정됩니다.minlen=8이나 maxretry=3 등이 있을 수 있습니다./etc/pam.d/common-password 설정password requisite pam_pwquality.so retry=3 minlen=10 minclass=3
pam_pwquality.so 모듈이 실패하면 인증 과정이 바로 실패하게 됩니다.PAM은 리눅스 및 유닉스 시스템에서 인증을 처리하는 매우 유연하고 강력한 프레임워크입니다. 다양한 인증 방식을 모듈화하여 관리할 수 있도록 도와주고, 시스템 관리자가 요구하는 대로 인증 방식을 쉽게 설정하고 조정할 수 있게 합니다.