[LINUX/UNIX] PAM - 스팸 말고 팸!


플러그형 인증 모듈

PAM?


환경 : centos 8

리눅스에는 PAM이라는 인증 모듈을 사용한다. 각 프로그램이 사용할 인증 모듈과 설정을 /etc/pam.d/라는 디렉터리에 저장하면 각 프로그램에서 인증을 수행할 때, 해당 파일에 지정된 설정대로 진행할 수 있다.

간단히 PAM 파일 하나를 까보면

sshd PAM

sshd의 PAM 설정

크게 3개의 열로 구분되어 있고, 몇몇 줄에는 전달인자로 보이는 close, revoke 등이 있다.

타입 (type)


맨 첫줄에 나오는 타입은 쉽게 말해서 대상이다. 후술할 ‘모듈’을 어떤 '대상'에 적용할지 설정하는 것이다. PAM에는 총 4가지의 대상이 있다.

auth패스워드 입력 등 접근자가 사용자가 맞는지에 대해
account해당 사용자가 사용하고자 하는 서비스에 접근이 가능한지에 대해
password패스워드 갱신, 정책 등 패스워드가 유효한지에 대해
session사용자가 인증을 받기 전,후 실행되어야 하는 것들에 대해



처리 방식 (control flag)


control flag는 쉽게 말해서 처리 방식이다. 선술된 ‘대상’에 모듈 인증이 성공/실패하였을 때, 어떻게 처리할지에 대한 설정이다.


타입모듈 인증 성공시모듈 인증 실패시
requisite다음 모듈 실행즉시 실패 반환
required최종 인증 결과 성공최종 인증 결과 실패
sufficient즉시 성공 반환다음 모듈 실행
optional인증 결과에 반영되지 않지만, 다른 모듈의 결과가 없다면 해당 모듈의 결과를 반환다음 모듈 실행
include다른 PAM 모듈 호출해당 PAM 모듈 실행



PAM 모듈 (module)


PAM 모듈은 /usr/lib/security, /usr/lib64/security 등 주로 security 디렉터리에 위치한다. 종류도 많고 중간중간 추가적으로 설치도 가능하기 때문에 주요 모듈만 간략히 알아보도록 하자.


pam_permit/pam_deny항상 성공/실패를 반환
pam_rootokroot의 접근은 암호 없이 허용
pam_unix, pam_pwdb암호를 확인/변경할 때 사용하는 모듈
pam_securetty/etc/securetty에 나열되지 않은 터미널은 접근을 차단

같은 모듈일지라도 모듈이 인증을 수행하는 대상(타입)에 따라 약간씩 동작이 달라지고 전달 인자도 달라진다.

이 세가지의 사항이 합쳐저 하나의 라인이 되고, 모든 라인의 검사가 수행되면 최종적으로 서비스에 접근을할지말지 결정된다.




© 2020. by azza999

Powered by aiden