PAM ( 장착형 인증모듈 )
- pluggable authentication module
- 리눅스 상에 인증방법을 제공하는 인증모듈 정책에 따라서 정책에 맞는 인증 방식을 제공
# 구성 파일 #
/etc/pam.d => 적재된 서비스 pam 설정파일
( 즉 PAM을 사용하는 응용프로그램에 해당하는 설정 파일 경로 파일이름은 프로그램 이름으로 되어있고 없으면
other가 자동으로 사용
ex) /etc/pam.d/sshd >> sshd 서비스 인증 설정 파일
# 실습 #
- 변경 전
[root@SEVAS210 pam.d]# cat passwd
#%PAM-1.0
[type] [control] [module_path(/lib64/security)] [modul_argument]
auth include system-auth
account include system-auth
password substack system-auth
-password optional pam_gnome_keyring.so
- 변경 후
[root@SEVAS210 pam.d]# cat passwd
#%PAM-1.0
auth include system-auth
account include system-auth
#password substack system-auth
password required pam_cracklib.so try_first_pass retry=3 type=SEVAS_LINUX
-password optional pam_gnome_keyring.so
***위같은 경우는 비번을 변경해도 적용이 안됨***
[root@SEVAS210 pam.d]# cat passwd
#%PAM-1.0
password required pam_cracklib.so try_first_pass retry=3 type=SEVAS_LINUX
auth include system-auth
account include system-auth
password substack system-auth
-password optional pam_gnome_keyring.so
** 위치를 바꿔준뒤에 주석을 풀어주면 적용이 됨****
PAM Type
[TYPE] PAM에 어떤 타입의 인증이 사용될것인지 선언
*** > 중요
1. auth *** : 사용자 인증에 대한 타입
2. account*** : 인증이후 계정관리 수행 (접속관리)
서비스에 대한 접근 허가/제한
3. session : 서비스 시행전과 직후에 필요한 작업
(mount/로그인/로그아웃,로그기록등등....)
4. password*** : 인증토큰 갱신시 필요, 주로 auth 모듈과 연결되서 사용됨
(패스워드 변경 모듈 결정)
PAM Control
[control] 모듈실행 결과 (성공/실패)에 대한 행동 지침
*** > 중요
1. required ***: 모듈 실패시 다른모듈 인증요청 수행하나 최종적으로 거부
(성공시에는 다음 모듈 호출)
모듈 실패 = 거부 모듈성공 = 다음모듈 호출
2. requisite *** : 모듈 실패시 즉시 실패 (성공시에는 다음 모듈 호출)
3. optional : 선택사항으로 모듈의 성공/실패가 불분명시 모듈의 결과에 따라 결정
4. sufficient *** :모듈 인증 성공시 즉시 인증 단 required의 실패 이후에 호출된 경우나 모듈 실패는 인증에 영향 X
5. include : 다른 PAM설정을 불러올때 적용
Module
[module PATH] 지정한 PAM 라이브러리를 호출 (/lib64/security)
1. env 환경변수 호출
2. unix.so 사용자에게 ID/Password 질의 응답내용 검증 (auth에서 사용)
3. permit.so 무조건 성공
4. deny.so 무조건 실패 (인증 마지막에 사용)
5. access.so access control table 사용 가능
사용자 계정/호스트/도메인을 통해 시스템 접근 허용(account에 사용)
6. limits.so 자원제한 (쓰기 어려워 잘안씀)
7. listfile.so 파일 리스트 확인
[module_argument]
1. debug 오류 발생시 syslog에 추가정보 제공
2. no_warn 응용프로그램 경고 메세지 X
3. use_first_pass 앞에 실행된 모듈로 PW정보를 받으나 틀린경우 재입력 요청 X (auth,password에서 사용)
4. try_first_pass 앞에 실행된 모듈로 PW정보를 받으나 틀린경우 재입력 요청 (auth,password 에서 사용)
추가적으로 try_first_pass retry=3 식으로 쓰임
5. use_uid 인증하는 UID가 아닌 현재 사용중이 UID로 대응
실습 1
useradd sevas2
passwd sevas2
ssh에 대한
cd /etc/pam.d
vi sshd
dnf install vsftpd
cat vsftpd > list 파일 확인 ( file=/etc/vsftpd/ftpusers )
상태 sense=deny
vi sshd
auth required pam_listfile.so item=user sense=deny file=/login/sevas onerr=succeed
mkdir /login
cat > /login/sevas
sevas
C^
sevas 접속 막힘 sevsa2는 접속 가능
실습 2
쉘로 시도
vi sshd
auth required pam_listfile.so item=shell sense=allow file=/login/sevas onerr=succeed
cat > /login/sevas
/bin/bash
sevas, sevas2 계정 모두 접속
실습 3
chsh sevas2
/bin/sh
sevas2 접속 안됨
실습 4
vi sshd에서 만들어둔 설정 전부다 주석처리
root인 경우 무조건 성공 로컬에서 주로 사용
vi sshd
sufficient : 무조건 ok
auth sufficient pam_rootok.so
root 비밀번호를 넣어도 무조건 ok
pam은 모든 서비스에 적용되는 인증 모듈
vi su도 auth sufficient pam_rootok.so 설정되어있다
주석 처리하면 관리자 ( root )도 비밀번호 입력하고 다른 계정 로그인해야한다
(su sevas)
if
조건식도 넣을 수 있다
조건식
vi sshd
auth required pam_succeed_if.so uid > 1000
설정해놓으면 root도 로그인 불가능 uid가 1000이상만 로그인
실습 5
복잡성
cd /etc/pam.d
vi system-auth
#password requisite pam_pwquality.so local_users_only
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=SEVAS_PASSWORD minlen=10 dcredit=-1 ucredit=-1 ocredit=-1
sevas로 접속 비밀번호 변경
비밀번호 10자리 , 대소문자 제외 기타문자 1개 이상, 숫자에 주어지는 크레디트값 1개 이상
sevas에서 위 설정같이 비밀번호 변경해야 성공됨
pam은 인증 모듈
예를 들어 생체 인증을 하고 싶으면 모듈을 만들어 pam에 넣는다 라고 생각 가능
'리눅스' 카테고리의 다른 글
리눅스_Selinux (0) | 2025.04.08 |
---|---|
리눅스 웹 문제 (리눅스 점검 문제) (1) | 2025.03.09 |
Promisc 모드 & 포트 미러링 (0) | 2025.02.03 |
Rocky & Kali 설치 초기 설정 (0) | 2025.01.28 |
리눅스 마운트 & 권한 계정 문제 (0) | 2025.01.27 |