Linux_System

[Linux]PAM

Galahaad 2023. 1. 12. 18:28

PAM(Pluggable Authentication Module)

PAM/etc/pam.d에 있는 모듈별 파일로 인증을 관리하는데,

/etc/crond, /etc/ssh/sshd_conf ... 등의 해당 패키지의 기본 설정파일에서 각각 해당 모듈에 대한 사용자 인증을 설정할 수 있지만

PAM을 통하여 접근 인증을 하게되면, 기존의 서비스 마다 인증을 해야하는 방식 보다는

효율적이며 인증요청 시 서비스가 직접 인증을 하는 것이 아닌,

PAM을 통해 인증을 받기 때문에 정책 설정이 용이하며 일관성 있는 인증 관리가 가능하다는 점이 존재한다.

 

 

● PAM의 형태

cat -n /etc/pam.d/

모든 서비스가 PAM 을 사용할 수 있는 것은 아니며,

Linux PAM API로 개발된 라이브러리를 사용하는 서비스여야 PAM 사용이 가능하다.

 

cat -n /etc/ssh/sshd_config

현재 ssh 서비스는 'UsePAM yes' 상태로 인증에 관한 통제를 PAM을 통하여 하고있는 것을 알 수 있다.

 

cat -n /etc/pam.d/sshd

설정파일의 세 가지 항목으로

[auth type] [control flag] [module] 있으며,

 

▶︎ auth type : 사용자 인증, 사용자를 룰에 의해 관리할 때 사용하며

▶︎ control flag : 모듈의 성공 및 실패 시, '최종 성공' '다음 룰 진행' '최종 실패' 여부를 정함

▶︎ module : 룰에서 사용될 모듈을 지정

 

ls /lib64/security OR ls /lib/security

PAM 이 Default로 참조하는 모듈이 있는 장소이다.

참조해야 할 모듈이 해당 경로에 있는 것이 아니라면,

링크를 걸어주거나 절대경로 값을 입력해야한다.

 

 

● wheel 그룹만 su command 사용이 가능하게끔 통제

vim /etc/pam.d/su

주석처리 되어있는 빨간색 박스부분의 룰을 주석 해제하여 활성화 후 저장해준다.

해당 PAM 모듈(pam_wheel.so)의 인자(argument)로는 현재 사용중인 유저의 UID이다.

인증을 시도한 유저의 UID가 wheel 그룹에 포함 되어있지 않으면, 최종실패라는 결과를 도출하는 것

 

grep wheel /etc/group

wheel 그룹에 'fedora', 'park' 유저만 가입되어 있는 것을 확인

 

(좌) User : 'abc' / (우) User : 'park'

그림으로도 확인이 가능하듯, wheel 그룹에 소속되어 있지 않은 abc유저의 경우

기존 root의 패스워드를 알고있다면 사용이 가능했을 'su' 커맨드인데

PAM 모듈을 통한 인증 때문에 접근거부 된 것을 확인