PAM (Pluggable Authentication Module)
: 사용자의 인증과 서비스에 대한 접근을 제어하는 모듈
: 사용자 인증에 대한 공유 라이브러리 패키지 제공
: 소프트웨어 개발과 안전한 권한 부여 및 인증체계를 분리하는 목적
: 대부분의 배포판 리눅스에 기본적으로 설치
: 특정 서비스에 대한 사용자/그룹 허가 목록 파일 및 거부 목록 파일. 비밀번호 길이 제한 등 설정에 사용
PAM 관련 파일
- /lib/security, /lib64/security
- /etc/pam.d
- /etc/pam.d/other
/lib/security, /lib64/security
: PAM에서 제공하는 라이브러리가 저장된 디렉터리
: .so 파일들을 내장
/etc/pam.d
: PAM을 이용하는 서비스가 설정된 디렉터리
/etc/pam.d/ohter
: PAM에 특별히 지정되지 않는 서비스에 대한 인증을 관리하는 디렉터리
PAM 설정 파일의 구성 (.so 파일)
- 기본 구성
type control module_name module-arguments
- type (PAM에 인증될 타입)
: account
> 사용자의 서비스 접근 허용 여부. 비밀번호 기간 만료 여부 검사
: auth
> 생체인증 등 다른 인증을 통해 사용자 검사
: password
> 서비스 접근을 위해 사용자 비밀번호 인증
: session
> 사용자의 인증 전후에 필요한 사항. 홈 디렉터리 마운트/언마운트, 로그인/로그아웃 제한 등
- control (PAM에 대한 통제)
: requisite
> 이 모듈을 이용하는 인증이 실패할 경우 즉시 거부
: required
> 인증 거부 전, 다른 모듈들에게 인증을 요구함에도 실패할 경우 거부
: sufficient
> 이전에 요청된 모듈이 실패하더라도 해당 모듈로 성공시 승인
: optional
> 모듈에 대한 성공/실패가 없을 경우 응용프로그램에게 보내는 결과로 결정
: include
> 해당 모듈 대신 사용할 PAM 서비스
- module_name (사용하는 모듈명. /lib/security에 있는 모듈명 기입)
- module-arguments (지정한 모듈이 사용하는 인수)
PAM의 주요 모듈
- pam_security.so
: 접속하는 계정이 root인 경우 해당 파일에 기록된 터미널을 통해서만 허가
: /etc/pam.d/login 및 /etc/pam.dremote 파일에 설정된 모듈
- pam_lisfile.so
: 임의의 파일에 대한 서비스 허가 및 거부 방법 제공
: 레드햇 계열에서 /etc/pam.d/vsftpd 파일에 설정된 ftp 사용자 거부 목록 파일로 사용된 모듈
- pam_nologin.so
: 해당 파일이 존재할 경우 root만 로그인 가능. 다른 사용자에 대해서는 에러 메시지와 함께 거부
: login, remote, sshd 등에 설정된 모듈
- pam_deny.so
: 접근을 무조건 거부
: other, system-auth 등에 설정된 모듈
- pam_cracklib.so
: 비밀번호를 설정한 정책과 비교
: password-auth, system-auth에 설정된 모듈
- pam_wheel.so
: root 권한을 얻을 수 있는 사용자를 wheel이라는 그룹에 포함
: /etc/pam.d/su에 설정할 경우 유용
- pam_rootok.so
: root에 대해 비밀번호 입력 없이 서비스 접근 허용
: su, chsh 등에 설정된 모듈
PAM 파일 예시
[root@mybestone /etc/pam.d]#cat /etc/pam.d/login
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_console.so
[root@mybestone /etc/pam.d]#cat other
%PAM-1.0
auth required /lib/security/pam_deny.so
account required /lib/security/pam_deny.so
password required /lib/security/pam_deny.so
session required /lib/security/pam_deny.so
[root@www root]# cat /etc/pam.d/ftp
#%PAM-1.0
auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc
/ftpusers onerr=succeed
auth required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_shells.so
account required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
Refference
'Certification > 리눅스마스터' 카테고리의 다른 글
리눅스 시스템 백업 (1) | 2022.10.13 |
---|---|
리눅스 ACL (Access Control List) 관리 (1) | 2022.10.13 |
리눅스 SSH 서버 관리 (0) | 2022.10.12 |
리눅스 시스템 보안 관리 (0) | 2022.10.12 |
리눅스 로그 확인 및 기록 (0) | 2022.10.12 |