PAM (Pluggable Authentication Modules)
목차
- PAM 개요
- 프로그램 구성
- PAM 사용법
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 모듈을 가지고 있음
– /etc/p@m.conf
– /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