PAM (Pluggable Authentication Modules)은 리눅스 및 유닉스 시스템에서 다양한 인증 방법을 관리하고 확장할 수 있게 도와주는 보안 인증 시스템입니다. PAM을 사용하면 시스템의 인증 방식(예: 로그인, sudo, SSH 접속 등)을 모듈 방식으로 쉽게 교체하거나 추가할 수 있습니다. 이는 시스템 관리자가 보안 정책을 유연하게 설정하고 유지할 수 있도록 합니다.

PAM의 정의

  • PAM은 “Pluggable Authentication Modules”의 약자로, 다양한 인증 방식을 플러그인 형식으로 시스템에 통합하여 인증 메커니즘을 표준화하는 시스템입니다.
  • PAM을 사용하면 시스템 관리자가 인증 방식을 쉽게 변경하고, 여러 인증 메커니즘을 동시에 사용할 수 있게 됩니다.
  • PAM은 인증, 계정 관리, 세션 관리, 비밀번호 관리 등을 위한 모듈로 구성됩니다.

PAM의 구성 요소

PAM은 기본적으로 모듈, 파일, 구성의 세 가지 주요 요소로 구성됩니다.

  1. 모듈: 인증 방식에 따라 다양한 기능을 수행하는 동적 라이브러리입니다. 예를 들어, /etc/pam.d 디렉토리 내에 있는 여러 설정 파일을 통해 다양한 인증 모듈을 사용할 수 있습니다.
  2. 파일: PAM 설정 파일은 보통 /etc/pam.d/ 디렉토리에 위치하며, 각 서비스(로그인, SSH, su 등)에 대해 인증 방식을 정의합니다. 이 파일들은 각 서비스의 인증 프로세스를 제어합니다.
  3. 구성: PAM 설정은 각 인증 모듈을 어떻게 사용할지에 대한 규칙을 정의합니다. 설정 파일에 규칙을 설정하여 시스템에서 어떤 방식으로 인증을 처리할지 결정합니다.

PAM의 주요 인증 모듈 유형

PAM은 다양한 인증 모듈을 통해 인증 절차를 제어하며, 주로 아래와 같은 모듈들이 사용됩니다:

  1. auth (인증):
    • 인증을 처리하는 모듈입니다. 예를 들어, 비밀번호 인증이나 생체 인증을 처리하는 모듈입니다.
    • 예: pam_unix.so (유닉스 표준 인증), pam_google_authenticator.so (2단계 인증).
  2. account (계정 관리):
    • 계정의 유효성 및 권한을 관리하는 모듈입니다. 사용자가 시스템에 로그인할 수 있는지, 계정이 잠겨 있는지 등을 관리합니다.
    • 예: pam_tally.so (로그인 실패 횟수 체크), pam_nologin.so (사용자가 로그인할 수 있는지 체크).
  3. password (비밀번호 관리):
    • 비밀번호 변경을 처리하는 모듈입니다. 비밀번호 정책을 설정하거나 비밀번호 변경을 허용합니다.
    • 예: pam_unix.so (표준 비밀번호 변경), pam_pwquality.so (비밀번호 복잡성 요구사항 설정).
  4. session (세션 관리):
    • 사용자가 로그인한 후 세션을 관리하는 모듈입니다. 예를 들어, 세션 기록, 환경 설정 등을 처리합니다.
    • 예: pam_limits.so (세션 리소스 제한), pam_mkhomedir.so (홈 디렉토리 자동 생성).

PAM 설정 파일 사용법

PAM 설정 파일은 /etc/pam.d/ 디렉토리에 위치하고, 각 서비스마다 별도의 파일이 있습니다. 예를 들어:

  • /etc/pam.d/sshd: SSH 로그인에 대한 PAM 설정
  • /etc/pam.d/sudo: sudo 사용에 대한 PAM 설정
  • /etc/pam.d/login: 일반 로그인에 대한 PAM 설정

각 파일에서 설정은 다음과 같은 형식으로 이루어집니다:

<모듈 유형> <모듈 경로> <설정 옵션> <설정 값>

예를 들어, SSH에 대한 기본 PAM 설정을 살펴보면:

auth 

required 

pam_unix.so

account

required 

pam_unix.so

password

required 

pam_unix.so

session

required 

pam_unix.so

PAM 사용 예시

  1. SSH 로그인 시 비밀번호 인증 설정
    • /etc/pam.d/sshd 파일에서 pam_unix.so 모듈을 사용하여 기본적인 비밀번호 인증을 설정합니다.
  2. 2단계 인증 추가
    • Google Authenticator와 같은 2단계 인증을 추가하려면, pam_google_authenticator.so 모듈을 auth 항목에 추가하여 설정할 수 있습니다.
    예시 auth required pam_google_authenticator.so
  3. 로그인 실패 시 계정 잠금 설정
    • 로그인 실패 횟수를 추적하고, 특정 횟수 이상 실패하면 계정을 잠글 수 있습니다. pam_tally.so 모듈을 사용하여 이를 설정할 수 있습니다.
    예시: auth required pam_tally.so onerr=fail deny=3 unlock_time=900

PAM 모듈의 예시

  • pam_unix.so: 기본 유닉스 계정 인증을 수행.
  • pam_google_authenticator.so: Google Authenticator를 통한 2단계 인증.
  • pam_tally.so: 로그인 실패 횟수 추적 및 계정 잠금.
  • pam_ldap.so: LDAP 서버를 통해 사용자 인증.
  • pam_securetty.so: 특정 터미널에서만 루트 로그인 허용.
  • pam_access.so: 사용자의 접근 제어를 위한 모듈.

결론

PAM은 리눅스 및 유닉스 시스템에서 인증 시스템을 유연하고 확장 가능하게 만들어주는 핵심 기능입니다. 다양한 인증 방식, 계정 관리, 세션 관리 등을 모듈화하여 시스템에 쉽게 추가하거나 변경할 수 있습니다. PAM 설정 파일을 잘 관리하면 시스템 보안을 강화하고, 인증 절차를 쉽게 조정할 수 있습니다.

zerg96

Recent Posts

재택근무 종말이 온다? AI 감시 소프트웨어가 사무실을 부활시키는 진짜 이유

AI 감시 소프트웨어가 재택근무 시대를 끝내고 있다. 직원의 키스트로크·화면·표정까지 추적하는 기술의 실체와, 한국 직장인이 알아야…

1시간 ago

정보보안기사 실기 합격을 가르는 10문제, 로그 분석부터 RSA 계산까지 풀이 포함

정보보안기사 실기는 개념을 아는 것보다 로그를 읽고, 규칙을 쓰고, 계산하는 힘에서 점수가 갈립니다. 이번 글은…

2시간 ago

호르무즈에서 2주간 선박 24척 피격, 원유 수송은 전쟁 전보다 43% 줄었다

호르무즈 해협 뉴스는 이제 '또 공격이 있었다'보다 '얼마나 늘었나'를 봐야 합니다. 이투데이가 FT와 영국해사무역기구(UKMTO) 등을…

2시간 ago

추석 연휴에 뚫린 은행들, 해외 법인 보안망까지 다시 짜는 이유

이번 추석 연휴, 은행들은 쉬지 못했습니다. 연휴 기간 금융권에서 대규모 개인정보 유출 사고가 터졌기 때문입니다.…

5시간 ago

서울 집값은 11% 올랐는데 거래는 17% 줄었다, 토허제 1년의 역설

"집 못 팔게 막으면 값이 내려가겠지." 서울 전역이 토지거래허가구역으로 묶이던 1년 전, 이런 기대가 있었습니다.…

5시간 ago

코스피 5연속 급락 뒤 2% 반등, 외국인·기관이 받쳤고 코스닥은 제자리

다섯 거래일 연속 밀린 코스피가 오늘 아침 크게 반등했습니다. 오전 9시 12분 기준 6,165.02로 전…

5시간 ago