Better Technology, Better Tomorrow.

Cloud 기술팀 개인 포스팅 자료

Security

Enterprise Linux 8 보안취약점 점검 변경 부분 정리

ProLinux 2021. 5. 10. 10:13

2. 패스워드 복잡도

 

 


 

OS 8부터는 pam_cracklib 대신에 pam_pwquality 모듈이 적용됩니다.
아래 정책을 꼭 따를 필요는 없으며 필요한 정책만 적용할 것

 

설정 파일[수정 후 저장]

[root@localhost ~]# vi /etc/security/pwquality.conf

minlen = 8 [주석(#) 제거] - 최소 패스워드 길이 설정 [6자 이하는 설정 안 됨, 최소 8 이상 권장]

dcredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 숫자 수 [최소 1 이상 권장]

ucredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 대문자 수 [최소 1 이상 권장]

lcredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 소문자 수 [최소 1 이상 권장]

ocredit = 1 [주석(#) 제거, 0 → 1] - 최소 필요한 특수문자 수 [최소 1 이상 권장]

maxrepeat = 3  [주석(#) 제거, 0 → 3] - 최대 연속된 동일한 반복 수 [최소 3 이상 권장] (예 aaa,111 형태를 사용 못함)

maxclassrepeat = 3 [주석(#) 제거, 0 → 3] - 최대 연속 문자 반복 수 [최소 3 이상 권장] (예 abc,123 형태를 사용 못함)

usercheck = 1 [주석(#) 제거, 그대로] - 패스워드에 유저 ID가 포함되어 있는지 점검 [1 권장/0 체크 안 함]

(예 ID:LOVE PASS:LOVE123 형태를 사용 못함)

 

 

pwquality.conf 정보를 불러올 수 있게 PAM 모듈 추가 [이미 존재]

[ ROOT도 적용 시local_users_only → enforce_for_root 변경 ]

[root@localhost pam.d]# vi /etc/pam.d/system-auth

password requisite pam_pwquality.so try_first_pass local_users_only

 

 

 

[root@localhost pam.d]# vi /etc/pam.d/password-auth

password requisite pam_pwquality.so try_first_pass local_users_only

※ 이 설정은 ROOT 권한이 있는 사용자가 수정할 시에는 무시합니다.

일반계정 사용자가 패스워드가 만료 후 패스워드를 재설정했을 때 적용되는 정책입니다.

 


 

OS 8부터는 pam_tally2 더 이상 기본으로 사용되지 않으며 faillock으로 이용하게 됩니다.

동일하게 pam_faillock.so 모듈을 이용하며 일정 간격 동안 사용자별로 실패한 인증 시도 목록을 유지 관리하고 인증 실패가 연속적으로 거부될 경우 계정을 잠급니다.

 

 

설정 파일 [수정 후 저장](※ 이 줄의 순서는 매우 중요하므로 꼭 해당 라인 사이에 추가할 것)

[root@localhost pam.d]# vi /etc/pam.d/system-auth

# Generated by authselect on Mon Jun 15 04:15:03 2020
# Do not modify this file manually.

auth        required        pam_env.so

auth        required        pam_faillock.so preauth silent audit deny=5 unlock_time=600 [라인 추가]

auth        required        pam_faildelay.so delay=2000000

auth        sufficient        pam_fprintd.so

auth        [default=1 ignore=ignore success=ok]    pam_succeed_if.so uid >= 1000 quiet

auth        [default=1 ignore=ignore success=ok]    pam_localuser.so

auth        sufficient        pam_unix.so nullok try_first_pass

auth        [default=die]   pam_faillock.so authfail audit deny=5 unlock_time=600 [라인 추가]

auth        requisite         pam_succeed_if.so uid >= 1000 quiet_success

auth        sufficient        pam_sss.so forward_pass

auth        required         pam_deny.so

 

account     required        pam_unix.so

account     sufficient       pam_localuser.so

account     sufficient       pam_succeed_if.so uid < 1000 quiet

account     [default=bad success=ok user_unknown=ignore] pam_sss.so

account     required        pam_permit.so

account     required        pam_faillock.so [라인 추가]

..

 

※[옵션 설명]

audit - 사용자(일반계정) 감사를 활성화

deny - 실패 횟수를 의미하며 설정상 [=5]되어 있을 경우 5회 로그인 실패 시 계정 잠금

unlock_time - 계정이 잠길 시 유지되는 시간 [=600(10분)]초 단위이며 시간이 지나면 자동 해제됩니다. 설정하지 않으면 무조건 잠기게 되므로 [faillock] 명령어를 이용해 수동으로 해제

 

 

 

ROOT의 계정도 적용하고 싶을 경우는 아래의 옵션 추가

even_deny_root [예시]

auth        required        pam_faillock.so preauth silent audit deny=5 even_deny_root unlock_time=600

auth        [default=die]   pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=600

설정 파일 [수정 후 저장](동일)

[root@localhost pam.d]# vi /etc/pam.d/password-auth

# Generated by authselect on Mon Jun 15 04:15:03 2020
# Do not modify this file manually.

auth        required        pam_env.so

auth        required        pam_faillock.so preauth silent audit deny=5 unlock_time=600 [라인 추가]

auth        required        pam_faildelay.so delay=2000000

auth        sufficient        pam_fprintd.so

auth        [default=1 ignore=ignore success=ok]    pam_succeed_if.so uid >= 1000 quiet

auth        [default=1 ignore=ignore success=ok]    pam_localuser.so

auth        sufficient        pam_unix.so nullok try_first_pass

auth        [default=die]   pam_faillock.so authfail audit deny=5 unlock_time=600 [라인 추가]

auth        requisite         pam_succeed_if.so uid >= 1000 quiet_success

auth        sufficient        pam_sss.so forward_pass

auth        required         pam_deny.so

 

account     required        pam_unix.so

account     sufficient       pam_localuser.so

account     sufficient       pam_succeed_if.so uid < 1000 quiet

account     [default=bad success=ok user_unknown=ignore] pam_sss.so

account     required        pam_permit.so

account     required        pam_faillock.so [라인 추가]

..

faillock 명령어를 통해 로그인 실패 확인 여부

전체 사용자 확인

[root@localhost faillock]# faillock
test:
When                Type  Source                                           Valid
2020-06-16 02:02:14 RHOST 192.168.232.1                                        V
2020-06-16 02:02:19 RHOST 192.168.232.1                                        V
2020-06-16 02:02:37 RHOST 192.168.232.1                                        V
2020-06-16 02:05:17 RHOST 192.168.232.1                                        V
2020-06-16 02:05:25 RHOST 192.168.232.1                                        V

test2:
When                Type  Source                                           Valid
2020-06-16 02:08:00 RHOST 192.168.232.1                                        V

 

 

특정 사용자만 확인

[root@localhost faillock]# faillock --user test

수동 차단 해제

[root@localhost faillock]# faillock --user test --reset

로그인 한 번이라도 실패한 계정은 아래의 경로에 관리됨
[root@localhost faillock]# ls /var/run/faillock/
test

 


 

출처 : foxydog.tistory.com/11

 

'Security' 카테고리의 다른 글

Enterprise Linux 8에서의 PAM Module  (0) 2021.05.10
PAM 모듈 정리  (0) 2021.01.12
Linux 로그인 시 Login Incorrect가 반복되는 현상  (0) 2020.12.29
pam.d 모듈 설명  (0) 2020.12.17
OpenSSH 8.1 패치  (0) 2020.11.22