[System] PAM, /etc/pam.d, 인증 시스템

공부한 내용 정리하는 공간입니다.

틀린 내용이 있을 수 있습니다.

모든 지적, 첨언 환영합니다.

PAM (Pluggable Authentication Modules)

리눅스 및 유닉스에서 인증을 관리하는 모듈화된 시스템

다양한 인증 방식을 통합적으로 관리

중앙 집중형 인증 시스템

PAM 설정 파일 안에 적힌 모듈 파일은 해당되는 인증 정책 설정 파일의 정책을 따름

    >PAM과 관련된 라이브러리 : /lib64/security

    >라이브러리 안에 모듈 파일 존재


/etc/pam.d

PAM을 이용하는 서비스 디렉터리

여러가지 서비스별 PAM 설정 파일 존재

첫 줄부터 순서대로 모듈 실행

PAM 설정 파일 구조
type control module name module arquments

 

 


type

Account (계정 확인 정책) : 사용자 계정 확인

    >접근 권한, 계정 활성화/비활성화 여부, 패스워드 만료 여부, 접속 시간 확인 등

Auth (비밀번호 확인 정책) : 패스워드 유효성 확인

    >패스워드 진위 여부 확인 등

Password (패스워드 정책) : 패스워드 복잡도 등

session : 로그인/로그아웃 시 수행할 작업

 


control

PAM이 해야 할 일

module의 결과값(True/False)을 받아서 수행

required (필수) 인증 성공 다음 모듈 실행, 다른 모듈이 False가 아니면 최종 성공
인증 실패 다음 모듈 실행, 다른 모듈 실행 후 최종 결과를 실패로 반환
requisite (필요) 인증 성공 다음 모듈 실행
인증 실패 즉시 최종 결과를 실패로 반환 (다른 인증 실행 X)
sufficient (충분) 인증 성공 즉시 최종 결과를 성공으로 반환 (다른 인증 실행 X)
인증 실패 다음 모듈 실행
optional   최종 결과에 반영되지 않음

 


module name

사용하는 모듈명

절대경로나 /lib/security에 있는 모듈명 

 


module arguments

모듈이 사용하는 인수

여러 인수를 사용하는 경우에는 공백으로 구분

 

ex1) root로 콘솔 로그인 금지 설정

cd /etc/pam.d
cat gdm-password

/etc/pam.d/gdm-password 첫 줄에 내용 추가

    >gdm(gnome disply manager)에서 사용자 로그인 인증을 관리하는 PAM 설정 파일

    >gnome : linux GUI

auth	required	pam_succed_if.so	uid >= 1000

패스워드 유효성을 확인하는 정책 

모듈은 uid가 1000 이상 (일반 사용자) 일 경우에 True를 반환

uid가 1000 미만 (root, 시스템 계정) 일 경우에 False를 반환

    >pam_succed_if.so : 사용자의 특정 조건 (/etc/passwd, /etc/group 등) 을 검사

control이 required이기 때문에 False가 반환되면 이후 모듈을 진행하지만 최종 결과는 인증 실패로 반환됨

설정 이유 : 공격자가 root 계정 정보만 알면 접속이 가능하기 때문

    >금지하면 root 계정 정보와 일반 사용자의 계정 정보도 알아내서 '일반 사용자 로그인>root 로그인'으로 두 단계를 거쳐야하기 때문에 보다 안전

 

ex2) 명령어 su 사용 시 wheel 그룹 멤버는 패스워드 없이 로그인

cd /etc/pam.d
cat su

/etc/pam.d/su 첫 줄에 내용 추가

auth	sufficient	pam_wheel.so	trust use_uid

패스워드 유효성을 확인하는 정책

모듈은 su 명령을 실행한 사용자의 UID가 wheel 그룹에 속해 있을 경우에 추가적인 비밀번호 입력 없이 True를 반환

su 명령을 실행한 사용자 의 UID가 wheel 그룹에 속해 있지 않을 경우에 False를 반환

    >pam_wheel.so : 사용자의 그룹 (/etc/group) 을 검사

control이 sufficient이기 때문에 True가 반환되면 즉시 최종 결과를 인증 성공으로 반환

False가 반환되면 다음 모듈 실행

 

ex3) 원격 접속 사용 시간 제한

nano /etc/security/time.conf

/etc/security/time.conf에 내용 추가

    >/etc/security/time.conf : 사용자 인증 제한 시간 지정

    >제한 설정 저장

sshd; *; gildong; !Wd0930-1730
sshd; *; root; !Wd0930-1730

gildong, root는 주중 09:30~17:30에는 SSH 로그인을 할 수 없음

cd /etc/pam.d
cat sshd

/etc/pam.d/sshd 첫 줄에 내용 추가

account	   required	   pam_time.so

사용자 계정을 확인하는 정책

모듈은 /etc/security/time.conf에서 정의한 제한 설정을 확인하여 True/False를 반환

    >pam_time.so : etc/security/time.conf 검사

control이 required이기 때문에 False가 반환되면 이후 모듈을 진행하지만 최종 결과는 인증 실패로 반환됨