PAM::Pluggable Authentication Modules

dobby·2024년 11월 6일

42경산

목록 보기
3/20

PAM (Pluggable Authentication Modules)은 리눅스 및 유닉스 시스템에서 인증 메커니즘을 처리하는 프레임워크입니다. PAM은 다양한 인증 방식(예: 비밀번호 인증, 바이오인증, 스마트카드 인증 등)을 모듈화하여, 시스템 관리자들이 인증 방법을 쉽게 설정하고 변경할 수 있도록 도와줍니다.

PAM의 주요 목적

PAM의 주요 목적은 시스템의 인증 절차모듈화하여, 인증 방식을 쉽게 확장하고 교체할 수 있게 만드는 것입니다. 이를 통해 여러 인증 방법을 하나의 공통된 시스템에서 관리할 수 있습니다.

PAM의 구성 요소

PAM은 각 인증 메커니즘을 모듈로 구현하며, 이러한 모듈들은 PAM 설정 파일을 통해 조합되어 사용됩니다. 이 모듈들은 특정 인증 프로세스를 수행하는 작은 단위로, 서로 독립적으로 동작할 수 있습니다.

  • 모듈: 실제 인증을 처리하는 컴포넌트 (예: pam_unix.so, pam_google_authenticator.so, pam_tally.so 등)
  • PAM 설정 파일: 각 서비스(로그인, SSH, sudo 등)에 대한 인증 절차를 정의하는 설정 파일들 (/etc/pam.d/ 디렉터리 내)

PAM 동작 방식

PAM은 각 서비스마다 개별적인 설정 파일을 두고 있으며, 이 설정 파일에서 어떤 모듈을 사용할지, 그리고 각 모듈이 어떤 방식으로 동작할지를 정의합니다. 이 설정은 /etc/pam.d/ 디렉터리에 위치합니다. 각 서비스(예: login, sshd, sudo 등)에 대해 해당하는 설정 파일이 있습니다.

PAM 모듈의 종류

PAM 모듈은 각기 다른 인증 방식 및 작업을 수행하는데 사용됩니다. 주요 모듈의 예시는 다음과 같습니다:

  • pam_unix.so: 전통적인 비밀번호 기반 인증을 처리하는 모듈입니다. 주로 /etc/passwd/etc/shadow 파일을 사용하여 사용자 인증을 수행합니다.
  • pam_pwquality.so: 비밀번호 품질 정책을 설정하는 모듈로, 비밀번호 강도를 검사하고 정책을 적용합니다. 예를 들어, 최소 길이, 문자 클래스 요구사항 등을 정의합니다.
  • pam_google_authenticator.so: Google Authenticator와 같은 2단계 인증을 처리하는 모듈입니다.
  • pam_tally.so: 로그인 실패 횟수를 기록하고, 일정 횟수 이상 실패 시 계정을 잠그는 등의 작업을 처리하는 모듈입니다.

PAM 설정 파일

PAM 설정 파일은 /etc/pam.d/ 디렉터리 내에 있습니다. 각 서비스에 대한 설정 파일이 있으며, 예를 들어 login, sshd, sudo 등 각각의 서비스에 맞는 설정 파일이 존재합니다.

기본적인 설정 형식:

PAM 설정 파일은 대체로 다음과 같은 형식으로 구성됩니다:

<type> <control_flag> <module_path> <arguments>
  • type: 이 항목은 인증 과정의 어느 단계에 해당하는지 지정합니다. 주요 항목은 다음과 같습니다:
    • auth: 인증 (Authentication) 관련 작업
    • account: 사용자 계정 관련 작업 (계정이 잠겼는지, 만료되었는지 확인)
    • password: 비밀번호 변경 관련 작업
    • session: 세션 관리 관련 작업 (예: 로그인 후 환경 설정)
  • control_flag: 해당 모듈이 인증 과정을 어떻게 처리할지 지정하는 플래그입니다. 주요 플래그는 다음과 같습니다:
    • required: 해당 모듈이 성공해야만 인증이 성공하는데 필요한 모듈입니다.
    • requisite: 해당 모듈이 실패하면 인증이 즉시 실패합니다.
    • sufficient: 해당 모듈이 성공하면 인증이 바로 성공합니다.
    • optional: 해당 모듈이 인증 성공 여부에 영향을 주지 않습니다.
  • module_path: 사용하는 PAM 모듈의 경로입니다. 예를 들어, /lib/security/pam_unix.so와 같은 형태로 모듈의 경로가 지정됩니다.
  • arguments: 해당 모듈에 전달할 인자들입니다. 예를 들어, minlen=8이나 maxretry=3 등이 있을 수 있습니다.

예시 - /etc/pam.d/common-password 설정

password requisite pam_pwquality.so retry=3 minlen=10 minclass=3
  • password: 이 설정은 비밀번호와 관련된 설정입니다.
  • requisite: pam_pwquality.so 모듈이 실패하면 인증 과정이 바로 실패하게 됩니다.
  • pam_pwquality.so: 비밀번호 품질을 검사하는 모듈입니다.
  • retry=3: 비밀번호를 세 번까지 다시 시도할 수 있습니다.
  • minlen=10: 비밀번호 최소 길이는 10자입니다.
  • minclass=3: 비밀번호에 소문자, 대문자, 숫자, 특수문자 중 3개 이상을 포함해야 합니다.

PAM의 장점

  1. 유연성: 다양한 인증 방법을 손쉽게 추가하거나 변경할 수 있습니다. 예를 들어, 기본적인 비밀번호 인증에서 2단계 인증, 바이오인증 등으로 손쉽게 확장할 수 있습니다.
  2. 모듈화: 각 인증 방식을 모듈로 구현하기 때문에 관리가 용이합니다. 각 모듈은 독립적으로 동작하며, 하나의 모듈이 실패하더라도 다른 모듈이 영향을 받지 않습니다.
  3. 통합 관리: 여러 서비스(SSH, sudo, login 등)에서 공통된 인증 메커니즘을 사용하므로, 일관된 정책을 적용할 수 있습니다.

PAM의 단점

  1. 복잡성: 다양한 설정 파일과 모듈들이 얽혀 있기 때문에, 잘못된 설정이 시스템의 인증 절차에 영향을 미칠 수 있습니다. 설정 파일을 잘못 구성하면 로그인 문제가 발생할 수 있습니다.
  2. 디버깅 어려움: PAM은 로그를 생성하기는 하지만, 디버깅이 어려운 경우가 많습니다. 따라서 잘못된 설정으로 문제가 발생했을 때 이를 추적하는 데 어려움이 있을 수 있습니다.

결론

PAM은 리눅스 및 유닉스 시스템에서 인증을 처리하는 매우 유연하고 강력한 프레임워크입니다. 다양한 인증 방식을 모듈화하여 관리할 수 있도록 도와주고, 시스템 관리자가 요구하는 대로 인증 방식을 쉽게 설정하고 조정할 수 있게 합니다.

profile
느리게 한걸음

0개의 댓글