메뉴 닫기

PAM

PAM (Pluggable Authentication Modules)

목차

 

Who?

– 클라우드를 통해 서버 구축 및 실행을 진행하다가 PAM 에 막혀서 버벅여 본 적이 있다.
– 비밀번호 안전성 검토를 확인하려고 수정했다가 인프라에 접근을 하지 못한 적이 있다.
– 그 외 인프라 보안의 MAC 접근 통제에 대해서 알아보고 싶다.
 

1. 그래서 PAM이 뭔데?

PAM (Pluggable Authentication Modules) : 리눅스 시스템에서 어플리케이션, 응용 프로그램, 서비스에 대한 사용자의 사용 권한을 제어하는 모듈.

기존에는 각 응용 프로그램에서 지원하는 사용자 인증 시스템을 사용하였는데, 다음과 같은 문제점을 보유하고 있었다. 시스템에 저장된 사용자 정보로 인증할 경우 /etc/passwd 같은 파일에 대한 접근 권한을 가지고 있어야 하므로 해당 프로그램에 취약점이 존재할 때 침해사고 발생 우려가 있었다. 

위 문제를 해결하기 위한 PAM의 동작 원리는 신뢰할 수 있는 제 3자의 역할을 모듈이 맡아 인증을 도와주는 것으로, 응용 프로그램에서 PAM 모듈로 인증 요청을 하고 모듈에서는 인증 결과를 전송하여 사용자의 인증을 확인한다.

 특징이자 장점으로 소프트웨어의 개발과 인증 및 권한 부여를 분리하므로, 개발 시간을 줄이며, 시스템 운영자가 서비스의 인증을 제어하여 더욱 안전한 시스템 운영을 도모할 수 있다.

 

2. PAM은 어디에 있어?

PAM의 구현은 리눅스 시스템에서 지원되며, 유관 파일은 다음과 같다.
  • /etc/pam.conf : PAM 모듈 기본 설정 파일
  • /etc/pam.d/* : 각 서비스별 개별 설정 파일
  • /usr/lib/pam.d 
  • /usr/lib/x86-64-linux-gnu/security : 전 두 폴더는 pam 모듈을 가지고 있음
  •  

security

– /etc/p@m.conf

pamconf

– /etc/p@m.d 내부 : 정책 관리

 

– /usr/lib/x86-64-linux-gnu/security 내부 : 모듈
 

3. 그거 어떻게 쓰는 건데?

(1) 알아두면 좋은 키워드 1 – Module type

모듈 키워드 : 적용할 모듈에 대한 키워드. 모듈 호출 방식에 따라 달라짐
  • account
    • 계정 관리
    • 계정이 현재 조건에 부합하는지 검사
    • 계정에 대한 접근 통제 및 정책 관리
  • auth(orization)
    • 인증 관리
    • 사용자에게 요청한 정보가 맞는지 검사
  • password
    • 비밀번호 관리 모듈
    • 비밀번호 기한, 갱신을 조건에 따라 검사
  • session
    • 행위 관리 모듈
    • 인증을 제외하고 수행하는 일을 정의하는 모듈
 

(2) 알아두면 좋은 키워드 2 – Control Flag

 관리하는 동작 정의에 관한 키워드. 해당 조건 충족 시 성공, 실패에 따라 반응이 나뉘어진다.

  • required
    • 인증 결과 관계 없이 -> 다음 인증 실행
    • 인증 성공 시, 모듈 인증 성공
    • 인증 실패 시, 모듈 인증 실패
  • requisite
    • 인증 결과 실패 -> 인증 종료
    • 인증 성공 시, 다음 인증 모듈 실행
    • 인증 실패 시, 인증 실패 반
  •  sufficient
    • 인증 결과 성공 -> 인증 종료
    • 인증 성공 시, 인증 성공 반환
    • 인증 실패 시, 다음 인증 모듈 실행
  •  optional
    • 선택 사항
    • 인증 결과에 반영되지 않음
    • 다른 모듈에서 명확히 성공, 실패가 반환되지 않았다면 이 결과를 반환
  • include
    •  다른 설정 파일 참조

(3) 알아두면 좋은 키워드 3 – Module Name

  • pam_tally2.so
    • 비밀번호 복잡성 설정 모듈
    • CentOS7, Rocky 8, Ubuntu 20 까지 지원했던 모듈
    • 현재 사용하지 않음
  • pam_faillock.so
    • 비밀번호 복잡성 설정 모듈
    • Rocky 9, Ubuntu 22 부터 지원하는 모듈
  • pam_rootok
    • root 계정은 추가 인증 없이 무조건 허용하는 모듈
    • 기존 no_magic_root 인자와 동일한 사용 방법
    • 권장하지 않음
  • pam_securetty
    • root 계정은 /etc/securetty 파일을 참고하여 특정 서비스에 대한 root 접근을 허용하는 모듈
    • root 이외의 계정은 항상 인증 성공을 반환
    •  

4. PAM으로 뭐 해볼까?

자주 사용하는 모듈로는 다음과 같다.
  • pam_tally -> pam_faillock
  • pam_wheel
  • pam_unix
  • pam_cracklib, pam_ pwquality
  • 그 외
이 중 비밀번호 변경 절차를 통해 Faillock, pwquality 의 사용방법을 알아보도록 하자.
 
passwd를 통해서 비밀번호를 변경하는 법은 다 알기 때문에, 비밀번호 변경 시 어떻게 pam 설정이 적용되는 지 다시 한번 해당 과정을 통해서 확인해보도록 하자. 도움을 줄 계정명은 test173.
“`
passwd test173
“`
 
passwd의 설정 파일 역시 /etc/pam.d 하위에 존재하며 설정을 확인시 다음과 같습니다.

 
다른 설정인 common-password의 내용입니다.
 
 
 해당 내용을 첫줄부터 마지막까지 확인했을 때 적용되는 모듈에 대한 주석과 모듈의 상세 옵션을 확인할 수 있습니다.
 
  • password 
 
 
 
 
 
 
 

6. 출처 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x