본문 바로가기

리눅스

[보안취약점] 리눅스 패스워드 복잡성 설정

728x90

리눅스 패스워드 복잡성 설정

점검 내용 : 시스템 정책에 사용자 계정(root 및 일반계정 모두 해당) 패스워드 복잡성 관련 설정이 되어 있는지 점검

판단 기준 : 패스워드 최소 길이 8자리 이상, 영문, 숫자, 특수문자 최소 입력 기능이 설정된 경우

패스워드 관리 방법

1. 영문, 숫자, 특수문자를 조합하여 계정명과 상이한 8자 이상의 패스워드 설정

* 다음 각 목의 문자 종류 중 2종류 이상을 조합하여 최소 10자리 이상 또는 3종류 이상을 조합하여 최소 8자리 이상의 길이로 구성

  가. 영문 대문자(26개)

  나. 영문 소문자(26개)

  다. 숫자(10개)

  라. 특수문자(32개)

2. 시스템마다 상이한 패스워드 사용

3. 패스워드를 기록해 놓을 경우 변형하여 기록

점검 및 조치 방법

* 각 변수에 대한 설명 / 각 항목에서 -1 값은 반드시 해당하는 문자를 포함시켜야 함.

권장 값 기능 설명
lcredit = -1 최소 소문자 요구 최소 소문자 1자 이상 요구
ucredit = -1 최소 대문자 요구 최소 대문자 1자 이상 요구
dcredit = -1 최소 숫자 요구 최소 숫자 1자 이상 요구
ocredit = -1 최소 특수문자 요구 최소 특수문자 1자 이상 요구
minlen = 8 최소 패스워드 길이 설정 최소 8자리 이상 설정
difok=N 기존 패스워드와 비교 기본값 10(50%)

system-auth 설정

password requisite pam_pwquality.so try_first_pass retry=3 minlen=8 lcredit=1 ucredit=-1 dcredit=1 ocredit=1
  • try_first_pass: 사용자가 처음 입력한 비밀번호를 먼저 시도합니다.
  • retry=3: 비밀번호 입력 실패 시 세 번까지 재시도합니다.
  • minlen=8: 비밀번호 최소 길이를 8자로 설정합니다.
  • lcredit=1: 비밀번호에 소문자(알파벳 소문자)를 최소 1개 이상 포함해야 합니다.
  • ucredit=-1: 대문자(알파벳 대문자)를 비밀번호에 포함할 필요는 없습니다.
  • dcredit=1: 숫자(숫자)를 비밀번호에 최소 1개 이상 포함해야 합니다.
  • ocredit=1: 특수 문자를 비밀번호에 최소 1개 이상 포함해야 합니다.
728x90

 

system-auth 설정 파일을 편집하여 설정

vim /etc/pam.d/system-auth
###기존 설정
#password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so try_first_pass use_authtok nullok sha512 shadow
password    required      pam_deny.so

###설정 편집
password    requisite     pam_pwquality.so try_first_pass retry=3 minlen=8 lcredit=1 ucredit=-1 dcredit=1 ocredit=1

authconfig 명령어로 설정

authconfig 명령어가 없다면 authconfig 패키지를 설치합니다.

yum install -y authconfig
sudo authconfig --passminlen=8 --passminclass=3 --passmaxrepeat=2 --passmaxclassrepeat=2 --enablereqlower --enablereqdigit --enablereqother --update
  • --passminlen=8: 패스워드의 최소 길이를 8로 설정합니다.
  • --passminclass=3: 패스워드에 포함되어야 하는 최소 문자 클래스 수를 3으로 설정합니다. 문자 클래스는 대문자, 소문자, 숫자, 특수문자 등을 의미합니다.
  • --passmaxrepeat=2: 패스워드에서 연속으로 반복 가능한 문자 또는 숫자의 최대 횟수를 2로 설정합니다.
  • --passmaxclassrepeat=2: 패스워드에서 연속으로 반복 가능한 문자 클래스의 최대 횟수를 2로 설정합니다.
  • --enablereqlower: 패스워드에 소문자가 필요함을 나타냅니다.
  • --enablereqdigit: 패스워드에 숫자가 필요함을 나타냅니다.
  • --enablereqother: 패스워드에 특수문자 등 다른 문자가 필요함을 나타냅니다.
  • --update: 변경된 설정을 시스템에 적용합니다.
sudo authconfig --passminlen=8 --passcomplexity=digits+lower+others --passtries=3 --update
  • --passminlen=8: 패스워드의 최소 길이를 8로 설정합니다.
  • --passcomplexity=digits+lower+upper+others: 숫자, 소문자, 대문자, 특수문자가 각각 최소 1개 이상 포함되어야 함을 나타냅니다. --passtries=3: 패스워드 입력 실패 횟수에 대한 재시도 횟수를 3으로 설정합니다.
  • --update: 변경된 설정을 시스템에 적용합니다.

변경된 내용 확인

cat /etc/security/pwquality.conf
$ cat /etc/security/pwquality.conf
...
# Path to the cracklib dictionaries. Default is to use the cracklib default.
# dictpath =
minlen = 8
minclass = 3
maxrepeat = 2
maxclassrepeat = 2
lcredit = -1
ucredit = 0
dcredit = -1
ocredit = -1

 

주요정보통신기반시설_기술적_취약점_분석ㆍ평가_방법_상세가이드.pdf
18.66MB

 

- 참고사이트

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system-level_authentication_guide/authconfig-pwd

https://www.krcert.or.kr/data/guideView.do?bulletin_writing_sequence=35988 

 

728x90