[Centos 7] PAM (Pluggable Authentication Modules) 실습

2022. 11. 29. 16:44리눅스(Linux)

$ pam 인증 모듈 종합 실습 

   - 리눅스 시스템 스냅샷 초기설정으로 변경 후 작업을 진행

 

1. root로 접근하려면 먼저 itbank 계정으로만 로그인 후 su로 전환 할 수 있다, 다른 사용자는 root 접근이 안 되나, 다른 계정간 su는 허용되어야 한다.
2. root 계정은 콘솔( gdm-password ), 원격이든 직접적으로 로그인 할 수 없다.
3. 원격(sshd)에서 itbank 계정으로 접속할 경우 특정 대역에서 접속해야만 한다.
4. itbank는 평일 10시부터 20시까지는 제한 그 외의 시간에는 sshd를 사용할 수 있다.
5. 최소 암호 길이 : 14, 패스워드 입력 재시도 4, 특수문자 2 Credit
6. 계정 잠금 임계값 : 5, 잠금 기간 : 10분

 

$ 1번 실습

   - root로 접근하려면 먼저 itbank 계정으로만 로그인 후 su로 전환 할 수 있다, 다른 사용자는 root 접근이 안 되나, 다른 계정간 su는 허용되어야 한다.

# vi /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_fprintd.so
auth required pam_unix.so nullok try_first_pass
auth sufficient pam_succeed_if.so user = itbank use_uid quiet
auth sufficient pam_succeed_if.so user != root quiet
auth requisite pam_succeed_if.so uid >= 1000 quiet
auth required pam_deny.so
   - 리눅스 사용자 인증 부분을 Sufficient에서 required로 변경
   - succeed_if 모듈을 이용하여 조건을 추가
   - 현재 인증을 시도하는 계정이 itbank 계정일 경우 바로 성공
   - 현재 인증을 성공 한 계정이 root 계정이 아니라면 바로 성공
   - itbank 계정에서 root 계정으로 전환이 가능
   - user1 계정에서 root 계정으로 전환이 불가능
   - 일반 사용자간 계정전환은 가능

$ 2번 실습

   - root 계정은 콘솔( gdm-password ), 원격이든 직접적으로 로그인 할 수 없다.

# vi /etc/pam.d/sshd
#%PAM-1.0
auth required pam_sepermit.so
auth include password-auth
account required pam_access.so
account required pam_nologin.so
account include password-auth

# vi /etc/pam.d/gdm-password
auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
auth substack password-auth
auth optional pam_gnome_keyring.so
account required pam_access.so
account required pam_nologin.so
account include password-auth
[root@localhost ~]# vi /etc/security/access.conf
- : root : ALL
   - root 계정의 모든 곳에서의 접근을 허용하지 않겠다.

   - root 계정으로 접속이 불가능 한 것을 확인

 

$ 3번 실습

   - 원격(sshd)에서 itbank 계정으로 접속할 경우 특정 대역에서 접속해야만 한다.

# vi /etc/security/access.conf
+ : itbank : 192.168.1.0/24
- : root : ALL
- : itbank : ALL
   - itbank 계정은 192.168.1.0/24 네트워크에서는 접속이 가능
   - 그 외의 다른 네트워크에서는 접속이 불가능 하도록 설정

# vi /etc/pam.d/sshd
#%PAM-1.0
auth required pam_sepermit.so
auth include password-auth
account required pam_access.so
account required pam_nologin.so
account include password-auth
   - SSH 서비스 라이브러리에 이미 pam_access.so 모듈이 추가되어 있으므로 확인만 진행 한다.
   - 192.168.1.0/24 네트워크에서는 접속이 가능 한 것을 확인

$ 4번 실습

   - itbank는 평일 10시부터 20시까지는 제한, 그외 시간에는 sshd를 사용할 수 있다.

# vi /etc/pam.d/sshd
#%PAM-1.0
auth required pam_sepermit.so
auth include password-auth
account required pam_time.so
account required pam_access.so
account required pam_nologin.so
account include password-auth
   - sshd 라이브러리에 pam_time.so 모듈 추가

# vi /etc/security/time.conf
sshd;*;itbank;!Wk1000-2000
   - 평일 10시부터 오후 20시까지는 ssh 접속이 제한 되는 것을 확인

$ 5번 실습

   - 최소 암호 길이 : 14, 패스워드 입력 재시도 4, 특수문자 2 Credit

# vi /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_fprintd.so
auth required pam_unix.so nullok try_first_pass
auth sufficient pam_succeed_if.so user = whitehacker use_uid quiet
auth sufficient pam_succeed_if.so user != root quiet
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=4 minlen=14 ocredit=2
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
   - user1 계정으로 로그인 하여 패스워드 변경 테스트를 진행
   - "Qwer!234%" 사용

   - 패스워드 변경작업이 정상적으로 잘 수행되는 것을 확인 

   - 9글자 + 숫자 1 + 소문자 1 + 대문자 1 + 특수문자 2 = 14글자 완성

 

$ 6번 실습

   - 계정 잠금 임계값 : 5, 잠금 기간 : 10분

# vi /etc/pam.d/sshd
#%PAM-1.0
auth required pam_tally2.so deny=5 unlock time=600
auth required pam_sepermit.so
auth include password-auth
   - sshd 라이브러리에 pam_tally2.so 모듈 추가 후 5번의 인증 실패 시 10분동안 계정잠김 상태가 되도록 설정값 입력
   - password-auth 보다 앞쪽으로 설정, 만약 뒤쪽에 설정 되어있을 경우 패스워드값 입력이 
   정상적으로 들어오면 그자리에서 즉시 성공이 된다.

   - user1 계정의 패스워드 입력 시 여러 번 틀려준다.

# pam_tally2
Login Failures Latest failure From
user1 6 01/29/19 13:03:16 192.168.1.1

   - 정상적인 패스워드 값을 입력하여도 로그인이 되지 않는것을 확인 할 수 있다.

# pam_tally2 -u user1 --reset=0
   - 패스워드 입력 횟수 초기화 후 다시 접속을 시도

   - 패스워드 입력 실패 횟수 초기화 후 접속이 잘 되는 것을 확인