패스워드 복잡성 설정

리눅스 보안 취약점 가이드 중 패스워드 복잡성의 권고사항은 root를 포함한 모든 사용자 계정 암호를 쉽게 설정할 경우 시스템에 접근을 허용하게 하는 위험이 존재하기 때문에 사용자 패스워드 설정 시 영문(대문자, 소문자), 숫자, 특수문자가 혼합된 일정 길이 이상(최소 8자리)으로 패스워드를 설정하여 패스워드 복잡성을 높인다면 시스템에 침입 공격 발생률을 낮출 수가 있습니다.

점검 내용
  • 시스템 정책에 사용자 계정(root 및 일반계정 모두 해당) 패스워드 복잡성 관련 설정이 되어 있는지 점검
점검 목적
  • 패스워드 복잡성 관련 정책이 설정되어 있는지 점검하여 비인가자의 공격(무작위 대입 공격, 사전 대입 공격 등)에 대비가 되어 있는지 확인하기 위함
보안 위협
  • 복잡성 설정이 되어있지 않은 패스워드는 사회공학적인 유추가 가능 할 수 있으며 암호화된 패스워드 해시값을 무작위 대입공격, 사전대입 공격 등으로 단시간에 패스워드 크렉이 가능함
점검 대상
  • Linux : Rocky 9
판단 기준
  • 양호 : 패스워드 최소길이 8자리 이상, 영문·숫자·특수문자 최소 입력 기능이 설정된 경우
  • 취약 : 패스워드 최소길이 8자리 이상, 영문·숫자·특수문자 최소 입력 기능이 설정되지 않은 경우
조치 방법
  1. 관련 패키지가 설치되어 있는지 확인
    [root@rocky9u2 ~]# dnf list installed libpwquality | cut -d" " -f 1
    Installed libpwquality.x86_64
  2. 패스워드 복잡성 설정 파일 확인
    “/etc/security/pwquality.conf” 파일은 Linux 시스템에서 비밀번호 정책을 구성하는 데 사용되는 파일 중 하나로 pam_pwquality 모듈에 의해 사용되며, 사용자의 비밀번호에 대한 요구 사항을 지정하는 데에 활용됩니다.
    [root@rocky9u2 ~]# cat /etc/security/pwquality.conf | grep -v "^#"
    difok = 5 minlen = 8 dcredit = -1 ucredit = -1 lcredit = -1 ocredit = -1 maxrepeat = 2 gecoscheck = 1
    • difok = 5
      – 이전 패스워드와 비교하여 새로운 패스워드에만 있는 문자 개수(5)를 의미
      – 0을 입력 시 이전과 비교하는 유사성 검사를 끄고 이전 패스워드와 같은지 검사
    • minlen = 8
      – 새 패스워드 허용 가능한 최소 길이(8)를 의미
      – 6보다 작은 값으로 설정할 수 없음
    • dcredit = -1
      – 새로운 패스워드 설정 시 최대 숫자 개수를 요구하는 옵션
      – 값이 0 보다 작다면 최대가 아닌 최소를 요구하는 옵션
    • ucredit = -1
      – 새로운 패스워드 설정 시 최대 대문자 개수를 요구하는 옵션
      – 값이 0 보다 작다면 최대가 아닌 최소를 요구하는 옵션
    • lcredit = -1
      – 새로운 패스워드 설정 시 최대 소문자 개수를 요구하는 옵션
      – 값이 0 보다 작다면 최대가 아닌 최소를 요구하는 옵션
    • ocredit = -1
      – 새로운 패스워드 설정 시 최대 특수문자 개수를 요구하는 옵션
      – 값이 0 보다 작다면 최대가 아닌 최소를 요구하는 옵션
    • maxrepeat = 2
      – 새로운 패스워드 설정 시 연달아 나오는 같은 문자 최대 개수(2)를 요구하는 옵션
      – 값이 0이면 검사하지 않음
    • gecoscheck = 1
      – GECOS필드(/etc/passwd 파일의 5번째 필드 사용자 항목)에 있는 3글자 넘는 단어가 새로운 패스워드에 있는지 검사
      – 값이 0이면 검사하지 않음
       
  3. 모든 사용자가 다음 로그인할 때 비밀번호 변경하도록 비밀번호 만료 설정
    #!/bin/bash
    
    for user in $(awk -F: '$3 >= 1000 {print $1}' /etc/passwd); do
        chage -d 0 $user
    done
    
  4. 사용자가 로그인을 하면 아래와 같이 비밀번호를 변경해야 합니다.
    You are required to change your password immediately (administrator enforced).
    Activate the web console with: systemctl enable --now cockpit.socket
    
    Last login: Thu Nov  9 10:19:34 2023
    WARNING: Your password has expired.
    You must change your password now and login again!
    Changing password for user archer.
    Current password: 
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    
◁ root 계정 원격접속 제한 | 계정 잠금 임계값 설정 ▷