-
PAM (Pluggable Authentication Modules)System 2024. 8. 19. 15:08
리눅스 시스템에서 사용하는 ‘인증 모듈(Pluggable Authentication Modules)’로써 응용 프로그램(서비스)에 대한 사용자의 사용 권한을 제어하는 모듈이다.
응용프로그램 자체적으로 사용자 인증하는 과정
- User → su root → su 명령어 파일
- su 명령어 파일 → root 정보 확인 → passwd 파일
- passwd파일 → 정보 확인 결과 반환 → su 명령어 파일
- su 명령어 파일 → su 명령어 결과 반환 → User
PAM 모듈을 통한 사용자 인증 과정
- User → su root → su 명령어 파일
- su 명령어 파일 → root 정보 확인 → PAM 모듈
- PAM 모듈 → 정보 확인 결과 반환 → su 명령어 파일
- su 명령어 파일 → su 명령어 결과 반환 → User
응용프로그램이 자체적으로 사용자 인증을 거치게 되면
- 응용프로그램이 직접 /etc/passwd에 접근할 수 있는 권한이 필요
- 따라서 침해 사고의 위험 존재
따라서 PAM 인증 모듈이 그 자리를 대신하여 인증 과정을 수행 함
→ 개발 간소화, passwd 파일 열람 X, 시스템 운영자의 응용프로그램 인증 동작 제어
→ Why? PAM 모듈 자체적으로 인증 조건을 명시하면 됨
출처: IGLOO PAM 기본 구조는 다음과 같다
Module Type + Control Flag + Moduls Name 및 Module Arguments
해당 구조를 가지고 PAM 인증 수행
출처 : IGLOO Control Flag 확인
예시 1
auth required pam_succed_if.so user=honeypunch quiet auth usfficient pam_unix.so try_first_pass
auth requisite pam_succed_if.so user=honeypunch quiet auth usfficient pam_unix.so try_first_pass
required 는 인증 성공 여부와 상관없이 다음 인증 모듈 수행
requisite 는 인증 실패 시 인증 결과 반환
따라서 1번 항목은 honeypunch 계정이 아니여도 비밀번호를 요구하지만, 2번 항목은 해당 계정이 아닐 시 인증 종료
예시 2
auth required pam_succed_if.so user=honeypunch quiet auth sufficient pam_unix.so try_first_pass
auth sufficient pam_rootok.so auth required pam_succed_if.so user=honeypunch quiet
1번 항목은 honeypunch 계정에 대해서 인증 성공 여부 결정
2번 항목은 root계정 확인 후 honeypunch 계정인지 확인
순서에 따라 다른 결과를 불러올 수 있다.
즉, 1번 항목은 root 계정으로 su를 진행해도 통과가 되지 않는다 ⇒ required 후 sufficient의 module_name이 try_first_pass 이므로 처음에 넣은 비밀번호로 인증을 한번 더 수행
⇒ 즉, root 계정 이여도 honeypunch의 비밀번호로 인증을 수행
2번 항목은 root 계정인지 확인 후 honeypunch 계정인지 확인
⇒ root 계정이 아니어도 sufficient control flag로 인하여 인증 실패여도 다음 인증 모듈 실행
⇒ 계정 확인 가능
결론
- PAM은 기존의 응용프로그램의 인증 과정에서 벗어나고자 새로운 모듈 사용
- PAM 사용 시 /etc/passwd 접근을 하지 않고 인증 가능
- PAM 인증 설정 시 Control Flag와 순서에 따라 기능이 완전히 달라질 수 있음
출처
https://www.igloo.co.kr/security-information/리눅스-pam-모듈의-이해/
'System' 카테고리의 다른 글
/etc/passwd & /etc/shadow (0) 2024.08.19 su root / sudo su 차이 (0) 2024.08.19