본문 바로가기

Linux Unix/Command

[ Linux ] PAM - 사용자 인증 프로세스를 관리하기

반응형

PAM(Pluggable Authentication Modules)는 리눅스 시스템에서 인증 프로세스를 확장하고 모듈화하기 위한 프레임워크로, 인증 정책을 관리하기 쉽게 만들어줍니다. PAM의 주요 기능은 사용자 인증을 유연하게 설정할 수 있도록 하는 것입니다.

PAM 사용법에 대한 기본 개념과 설정 방법을 설명하겠습니다.

1. PAM 구성 파일 이해하기

PAM은 /etc/pam.d/ 디렉토리 안에 있는 설정 파일로 구성됩니다. 각 서비스마다 하나의 PAM 구성 파일이 존재하며, 예를 들어, sshd/etc/pam.d/sshd 파일을 사용하여 SSH 접근에 대한 인증을 설정합니다.
'/etc/pam.d/sshd' 파일은 '/etc/pam.d/password-auth' 파일을 사용하고 있음으로 'password-auth' 파일을 편집해서 보안을 설정합니다.

구성 파일의 각 줄은 하나의 PAM 규칙을 정의하며, 다음과 같은 형식을 가집니다:

<module_type> <control_flag> <module_path> <module_options>
  • module_type: PAM 모듈 유형으로, 인증 흐름에서 어떤 역할을 할지 정의합니다.
    • auth: 사용자 인증과 관련된 모듈입니다.
    • account: 사용자 계정의 접근 권한을 제어합니다.
    • password: 패스워드 변경을 관리합니다.
    • session: 세션 설정과 관련된 작업을 수행합니다.
  • control_flag: 인증 실패 시의 동작을 설정합니다.
    • required: 실패 시 인증이 종료되지 않고 다른 모듈이 실행됩니다. 모든 required 모듈이 성공해야 전체 인증이 성공합니다.
    • requisite: 실패 시 즉시 인증이 종료됩니다.
    • sufficient: 성공 시 나머지 모듈을 건너뛰고 인증이 성공합니다.
    • optional: 선택 사항으로, 성공 여부가 인증 결과에 큰 영향을 미치지 않습니다.
  • module_path: PAM 모듈의 경로입니다. 예를 들어 /lib/security/pam_unix.so는 표준 UNIX 인증 모듈입니다.
  • module_options: 모듈의 옵션으로, 모듈에 따라 달라집니다.

2. PAM 설정 예시

예를 들어, SSH 로그인에 PAM 설정을 적용하려면 /etc/pam.d/sshd 파일을 편집합니다.

# /etc/pam.d/sshd 파일 예시
auth       required   pam_sepermit.so
auth       include    password-auth
account    required   pam_nologin.so
account    include    password-auth
password   include    password-auth
session    required   pam_selinux.so close
session    required   pam_loginuid.so
session    optional   pam_keyinit.so force revoke
session    include    password-auth

이 예시에서는 password-auth 모듈을 가져와서 여러 auth, account, session 유형의 모듈과 함께 사용합니다.

3. PAM 모듈 예시

자주 사용되는 PAM 모듈은 다음과 같습니다.

  • pam_unix.so: 전통적인 Unix 인증 (패스워드 인증).
  • pam_faillock.so: 로그인 시도 실패 횟수를 추적하고, 특정 횟수 이상 실패 시 계정을 잠급니다.
  • pam_limits.so: 시스템 자원 제한을 설정합니다.
  • pam_succeed_if.so: 특정 조건이 맞을 때만 인증을 통과시키도록 설정할 수 있습니다.

4. PAM 구성 파일 수정 시 주의사항

PAM 설정을 잘못하면 시스템 접근이 불가능해질 수 있으므로, 설정 전 백업을 권장합니다. PAM 설정을 변경한 후에는, 새 터미널에서 로그인 테스트를 진행하여 설정에 문제가 없는지 확인하는 것이 좋습니다.

예시: SSH 실패 시도 제한하기

SSH 접근에서 로그인 실패 횟수를 제한하려면, /etc/pam.d/sshdpam_faillock.so 모듈을 추가합니다.

auth required pam_faillock.so deny=5 unlock_time=300

이 설정은 로그인 실패가 5회 이상이면 계정을 잠그고, 300초 후에 잠금이 해제됩니다.

PAM은 시스템 전반의 인증 설정을 유연하게 관리할 수 있게 해주므로, 각 모듈의 문서를 참조하여 필요한 인증 정책을 적용할 수 있습니다.

반응형