2022. 11. 29. 16:32ㆍ리눅스(Linux)
Linux Authentication Module
-인증모듈 : PAM (Pluggable Authentication Modules)
-모듈사용시 주의할 점 항상 Test 환경에서 실행 후 실제 적용 할 것(다시 재 설정하기 어려움)
Linux PAM
-사용자 인증의 핵심, 인증형태, 자원 접근 등의 선택형 라이브러리
-모듈의 종류가 다양하며 착탈식 인증 모듈
-Telnet, SSH 등의 서비스 인증 부분에 접근 통제 설정 가능하다
-PAM 활용 한 su의 접근 통제 설정 가능
$ PAM 동작순서
1. 프로그램이 사용자 인증 필요시 PAM 라이브러리 호출
2. 라이브러리가 호출되면 프로그램의 PAM 설정 파일을 참조
3. 참조 한 파일에서 모듈을 수행
4. 결과 값은 프로그램으로 반환되어 인증여부를 최종결정
$ PAM 라이브러리 관련 경로
# /etc/pam.d
- PAM 라이브러리를 이용하는 응용프로그램의 설정파일 위치
- 파일명은 서비스 이름으로 되어 있다.
# /usr/lib64/security
- PAM 라이브러리가 제공하는 인증 모듈들
- 다양한 인증 작업 모듈, 라이브러리(*.so)로 구현되어 있음
# /etc/security
- PAM모듈 실행에 필요한 설정 파일
- 파일명은 해당 서비스명.conf
$ PAM 구성파일 작성방법
- [type] [control] [module-path] [module-arguments]
Type : PAM에게 어떤 타입의 인증이 사용될 것인지 지정
- auth : 사용자 인증에 사용, 올바른 패스워드인지 확인 절차를 가짐
- account : 사용자가 패스워드 변경할 수 있는 모듈 지정
- session : 로그인 전 후 수행되는 일을 지정 (EX:로그)
Control : PAM에서 사용되는 모듈의 결과에 따라 동작 지정
- required (리큐어드)
성공 값 반환 시 성공 후 Pass, 실패 시 마지막까지 다 실행 후 실패(실패가 나도 뒤의 자료도 보겠다.)
대부분의 실패 확인 작업은 required 설정을 한다.
특정 인증절차 부분에서 어떠한 부분에서 인증을 실패했는지 찾기위한 것
예를 들어 IP입력 후 ID 입력에서 실패인지 IP입력부터가 실패인지 확인 한다.
최초 실패 시 이후 결과에서 성공이 발생하더라도 무조건 실패로 처리 된다.
- requisite(리큐지트) : 성공 값 반환 시 성공 후 Pass, 실패시 곧바로 실패 (계정이 없으면 바로 실패)
- sufficient(서피전트) : 성공 값 반환 시 곧바로 성공, 단 위에서 required 실패시 실패(우선순위가 제일 낫다)
Module-path : 사용할 모듈의 위치
-기본 Default 경로는 /usr/lib64/security로 사용된다. (PAM 모듈의 이름만 넣어도 실행)
Module-arguments : 모듈에게 전달되는 인수
(옵션이므로 선택적 사용이 가능, if문과 비슷한 역할을 하는 옵션을 주로 사용)
- no_warn : 경고 메시지 표시 안 함
- use_first_pass : 패스워드를 요구하지 않음, 패스워드가 없다면 인증 받지 못함 (패스워드 오류 시 종료)
- try_first_pass : 입력받은 패스워드로 인증을 시도, 없다면 사용자에게 물어봄(패스워드 오류 시 다시 입력)
pam_rootok.so
- root 계정에서 su user(일반사용자) 접근할 때 암호 기입 안하고 바로 접속가능해짐
- sufficient 대신 required 옵션일 경우 root계정에서만 su 접근 가능
- requisite 옵션은 root 계정 외 다른계정 su접근은 인증 시도도 안함
auth sufficient pam_rootok.so
- 관리자 권한이라면 모두 성공
- ex) su user(일반 사용자) 바로 접속이 가능
auth substack system-auth
- system-auth : password 인증
auth sufficient pam_wheel.so trust use_uid
- wheel, 관리자들을 모아놓은 그룹, wheel 그룹의 구성원인지 확인하는 설정
- trust 권한 상승 옵션
$ System-Auth
pam_env.so : 환경변수 검증작업을 진행(정상 일 경우 성공, 이상하면 실패)
pam_faildelay.so : 인증 실패시 딜레이값 설정
pam_fprintd.so : 이전에 리눅스 유닉스 시스템에서 사용하던 인증방식
pam_unix.so : 현재 Linux System에서 핵심적으로 사용하는 인증 모듈
$ 동작순서
1. 특정 사용자 P/W 입력 시 /etc/passwd 파일에서 P/W 필드 X값 확인
2. /etc/shadow 파일로 이동 후 솔트 값 확인 후 해시함수를 이용한 해시값 생성
3. 생성된 해시값과 실제 저장된 해시값이 일치하는지 확인
4. 해시값이 일치 할 경우 성공, 일치 하지 않을 경우 실패
5. /var/log/secure에 인증결과를 로그로 기록(해당 인증 모듈 사용여부도 확인이 가능)
- nullok [ID/PW Null값 허용]
- try_first_pass [패스워드 재시도 횟수 지정, 현재 횟수 지정이 안되어 있으므로 재시도 불가
- EX: try_first_pass retry=3 [재시도 횟수를 3회 지정 하는 옵션]
pam_succeed_if.so
- 어떠한 조건식을 지정하기 위해 사용 (if 문 사용 형식과 유사)
pam_deny.so
- 모두 거부 처리
# vi /etc/pam.d/system-auth
8 auth sufficient pam_succeed_if.so user != root quiet_success
- 루트계정이 아닐 경우 성공후 종료, 실패면 pass
- 일반계정이 접속시도를하는게 root가아니면 sufficient하고 로그기록을 남긴다.
9 auth sufficient pam_succeed_if.so user = itbank use_uid
- 인증 사용자가 itbank이면 성공후 종료, 실패면 pass
- (itbank → root 전환가능, user1 → root 전환 불가능)
10 auth requisite pam_succeed_if.so uid >= 1000 quiet_success
- uid가 1000이상인 계정이 root로 접속하면 requisite 이 후 밑으로 내려가서 deny를함.
11 auth required pam_deny.so
ex) user(인증한 계정) > = itbank use_uid (인증을 시도)
$ sudo 권한 설정
- 일반사용자 계정에서 명령문 앞에 sudo를 넣어 root 계정권한으로 실행
itbank 계정에 sudo 권한 설정
pam_tally2.so deny=3 unlock time=120
- 3번이상 인증 실패시 계정을 120초간 잠근다
# pam_tally2
Login Failures Latest failure From
itbank 4 06/22/22 13:52:57 192.168.1.1
- 잠긴 계정을 확인
# pam_tally2 -u itbank --reset=0
Login Failures Latest failure From
itbank 4 06/22/22 13:52:57 192.168.1.1
- 잠긴계정을 즉시 해제
$ ssh 접근제어
pam_access.so
- ssh 접근제어(/etc/security/access.conf) 설정
/etc/security/access.conf
- 접근제어 명시
- user1 에 대한 ssh접근을 막아버림
pam_time.so
- ssh 시간설정 접근제어
/etc/security/time.conf
- 접근제어 명시
sshd;*;itbank;Wk0900-2200
- 아침 9시부터 22시까지 접근 허용
sshd;*;itbank;!Wk0900-2200
- ! 가 붙으면 차단
# vi /etc/pam.d/system-auth
18 password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=12
- 일반사용자 패스워드 변경시 3번의 기회를 제공
- 일반사용자 패스워드 최소길이 12글자
12#$qwER → 총 8글자 + (숫자(1) + 특수문자(1), 영문자(1), 대문자(1))
총글자 + 썼던 문자기호 점수 합산해서 12글자 맞춰야함
숫자 dcredit=1
소문자 lcredit=1
대문자 ucredit=1
특수문자 ocredit=1
- 최대점수 값을 지정 할 수 있다. (EX : ocredit=3)
- 특수문자 3개 사용 시 최대 3글자의 보너스를 받는다.
- -1 설정 시 필수 사용옵션이 된다.
'리눅스(Linux)' 카테고리의 다른 글
[Centos 7] DNS ( Domain Name System ) (0) | 2022.11.29 |
---|---|
[Centos 7] PAM (Pluggable Authentication Modules) 실습 (0) | 2022.11.29 |
[Centos 7] Linux Backup 실습 (Tar, xfsdump, xfsrestore, dd, TimeShift, Rsync) (0) | 2022.11.29 |
[Centos 7] Linux Backup 관리(Tar, xfsdump, xfsrestore, dd, TimeShift, Rsync) (0) | 2022.11.29 |
[Centos 7] NFS (Network File System) (0) | 2022.11.28 |