[Linux]PAM
PAM(Pluggable Authentication Module)
PAM은 /etc/pam.d에 있는 모듈별 파일로 인증을 관리하는데,
/etc/crond, /etc/ssh/sshd_conf ... 등의 해당 패키지의 기본 설정파일에서 각각 해당 모듈에 대한 사용자 인증을 설정할 수 있지만
PAM을 통하여 접근 인증을 하게되면, 기존의 서비스 마다 인증을 해야하는 방식 보다는
효율적이며 인증요청 시 서비스가 직접 인증을 하는 것이 아닌,
PAM을 통해 인증을 받기 때문에 정책 설정이 용이하며 일관성 있는 인증 관리가 가능하다는 점이 존재한다.
● PAM의 형태
모든 서비스가 PAM 을 사용할 수 있는 것은 아니며,
Linux PAM API로 개발된 라이브러리를 사용하는 서비스여야 PAM 사용이 가능하다.
현재 ssh 서비스는 'UsePAM yes' 상태로 인증에 관한 통제를 PAM을 통하여 하고있는 것을 알 수 있다.
설정파일의 세 가지 항목으로
[auth type] [control flag] [module] 있으며,
▶︎ auth type : 사용자 인증, 사용자를 룰에 의해 관리할 때 사용하며
▶︎ control flag : 모듈의 성공 및 실패 시, '최종 성공' '다음 룰 진행' '최종 실패' 여부를 정함
▶︎ module : 룰에서 사용될 모듈을 지정
PAM 이 Default로 참조하는 모듈이 있는 장소이다.
참조해야 할 모듈이 해당 경로에 있는 것이 아니라면,
링크를 걸어주거나 절대경로 값을 입력해야한다.
● wheel 그룹만 su command 사용이 가능하게끔 통제
주석처리 되어있는 빨간색 박스부분의 룰을 주석 해제하여 활성화 후 저장해준다.
해당 PAM 모듈(pam_wheel.so)의 인자(argument)로는 현재 사용중인 유저의 UID이다.
인증을 시도한 유저의 UID가 wheel 그룹에 포함 되어있지 않으면, 최종실패라는 결과를 도출하는 것
wheel 그룹에 'fedora', 'park' 유저만 가입되어 있는 것을 확인
그림으로도 확인이 가능하듯, wheel 그룹에 소속되어 있지 않은 abc유저의 경우
기존 root의 패스워드를 알고있다면 사용이 가능했을 'su' 커맨드인데
PAM 모듈을 통한 인증 때문에 접근거부 된 것을 확인