본문 바로가기

리눅스

리눅스_PAM

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