본문 바로가기
IT/리눅스 이론

리눅스 pwquality.conf 패스워드 복잡성 보안 취약점 조치 가이드

by 꾸꾸웍스 2022. 9. 17.
반응형

AIX, SunOS, Linux, Unix를 포함한 OS별 리눅스 패스워드 복잡성 또는 리눅스 패스워드 설정에 관한 보안 취약점 조치 가이드입니다. centos 기준 pwquality.conf 파일을 수정하는 방법과 pwquality.conf에 대한 설명 및 옵션에 대한 내용입니다.

 

반응형
※ 목차 구성
1. 리눅스 패스워드 복잡성 보안 기준
2. 리눅스 패스워드 관리 방법
3. pwquality.conf 설명 및 옵션 설명
4. pwquality.conf 보안 취약점 조치

 

리눅스 패스워드 복잡성 보안 기준

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

패스워드 복잡성 보안 가이드 기준

  • 양호
    - 영문, 숫자, 특수문자가 혼합된 8자리 이상의 패스워드 설정
  • 취약
    - 영문, 숫자, 특수 문자가 혼합되지 않은 8자 미만의 패스워드 설정
  • 조치 방법
    - 사용자 계정과 유사하지 않은 8자 이상의 영문, 숫자, 특수문자 조합으로 암호 설정

 

리눅스 패스워드 관리 방법

부적절한 리눅스 패스워드 유형

  • 알기 쉬운 단어 또는 사전에 나오는 단어 조합
  • 길이가 짧거나 Null(공백)인 패스워드 조합
  • 키보드 자판에 나열을 한 경우
    ex) 1q2w3e4r5t, qwer, asdf 등
  • 사용자 계정 정보에서 유추가 가능한 단어들
    ex) 부서명, 계정명, 이니셜, root, rootroot, admin 등

리눅스 패스워드 관리 가이드

  • 영문, 숫자, 특수문자를 조합하여 8자 이상의 패스워드 설정
  • 각 시스템별로 패스워드를 다르게 사용 권고
  • 패스워드를 기록해 놓을 경우 변형하여 기록 권고
  • 가급적 자주 패스워드를 변경할 것(분기)
  • 최소 아래 2종류 이상을 조합하고, 최소 10자리 패스워드 길이로 구성
    - 영문 대문자(26개), 영문 소문자(26개), 숫자(10개), 특수문자(32개)

 

pwquality.conf 설명 및 옵션 설명

리눅스 패스워드 복잡성의 보안 취약점 가이드에 따라 리눅스 서버에 패스워드 복잡성을 설정해줘야 됩니다. 설정에 관한 파일은 pwquality.conf로 설정하며 centos 기준입니다.

pwquality.conf 설명

pwquality.conf란 pwquality.conf 파일에 내용을 수정하여 시스템 패스워드 복잡성에 대한 패스워드 최소 요구 조건 및 재시도 횟수, 패스워드 길이 등 여러 가지 품질요건을 설정할 수 있습니다. libpwquality 관련된 라이브러리를 파일을 ASCII 정렬 순서로 읽어 파일을 파싱 합니다. 따라서 이 라이브러리들이 패스워드를 검사하고 패스워드를 생성하는 유틸리티들에서 이 파일을 읽습니다.

pwquality.conf 옵션 설명

pwquality.conf 파일은 /etc/security 하위에 존재하며 절대 경로는 /etc/security/pwquality.conf입니다. AIX, SunOS, Linux, Unix 등 pwquality.conf 파일에 설정된 옵션의 값은 OS마다 다를 수 있습니다.

  • difok = 5
    - 이전 패스워드와 비교하여 새로운 패스워드에만 있는 문자 개수를 의미
    - 0을 입력 시 이전과 비교하는 유사성 검사를 끄고 이전 패스워드와 같은지 검사
  • minlen = 9
    - 새 패스워드 허용 가능한 최소 크기 및 길이를 의미
    - 6보다 작은 값으로 설정할 수 없음
  • dcredit = 1
    - 새로운 패스워드 설정 시 최대 숫자 개수를 요구하는 옵션
    - 값이 0 보다 작다면 최대가 아닌 최소를 요구하는 옵션
  • ucredit = 1
    - 새로운 패스워드 설정 시 최대 대문자 개수를 요구하는 옵션
    - 값이 0 보다 작다면 최대가 아닌 최소를 요구하는 옵션
  • lcredit = 1
    - 새로운 패스워드 설정 시 최대 소문자 개수를 요구하는 옵션
    - 값이 0 보다 작다면 최대가 아닌 최소를 요구하는 옵션
  • ocredit = 1
    - 새로운 패스워드 설정 시 최대 특수문자 개수를 요구하는 옵션
    - 값이 0 보다 작다면 최대가 아닌 최소를 요구하는 옵션
  • minclass = 0
    - 새로운 패스워드 설정 시 (숫자, 대문자, 소문자, 기타) 최소 종류를 요구하는 옵션
  • maxrepeat = 0
    - 새로운 패스워드 설정 시 연달아 나오는 같은 문자 최대 개수를 요구하는 옵션
    - 값이 0이면 검사하지 않음
  • maxclassrepeat = 0
    - 새로운 패스워드 설정 시 연달아 나오는 같은 종류의 문자 최대 개수를 요구하는 옵션
    - 값이 0이면 검사하지 않음
  • gecoscheck = 0
    - 사용자 항목 GECOS필드(//etc/passwd의 각 필드 항목)에 있는 3글자 넘는 단어가 새로운 패스워드에 있는지 검사
    - 값이 0이면 검사하지 않음
  • dictpath =
    - cracklib 사전들의 경로이며 cracklib 루틴을 호출해서 패스워드가 사전에 있는지 검사하는 옵션
300x250

 

pwquality.conf 보안 취약점 조치

리눅스 패스워드 복잡성, 최소 패스워드 길이 설정

pwquality.conf 파일로 보안 취약점 조치를 할 수 있는 부분은 리눅스 패스워드를 이전보다 복잡하게 만들고 패스워드 길이를 조치사항에 따라 설정할 수 있습니다. 리눅스 계정 패스워드 보안 권고 조치사항에 따르면 '계정과 유사하지 않은 8자 이상의 영문, 숫자, 특수문자의 조합으로 암호 설정'입니다. 따라서 위 pwquality.conf 옵션 설명 내용을 참고하여 pwquality.conf 파일의 주석을 풀고 값을 수정합니다.

pwquality.conf 파일 편집

  • minlen = 8
    새로운 패스워드 길이를 8글자로 설정
  • lcredit = -1
    값을 0보다 작은 -1로 설정하여 소문자 최소 1개로 설정
  • ucredit = -1
    값을 0보다 작은 -1로 설정하여 대문자 최소 1개로 설정
  • dcredit = -1
    값을 0보다 작은 -1로 설정하여 숫자 최소 1개로 설정
  • ocredit = -1
    값을 0보다 작은 -1로 설정하여 특수문자 최소 1개로 설정

 

이 내용을 가지고 pwquality.conf 파일의 옵션 값을 아래처럼 수정합니다. 아래 예시는 dcredit만 15번 줄 주석을 16번에 복사한 후 주석을 제거 후 옵션을 수정한 내용입니다(주석을 복사하는 이유는 백업 개념). 

 

[root@server ~ ] # vim /etc/security/pwquality.conf

...
13 # The maximum credit for having digits in the new password. If less than 0
14 # it is the minimum number of digits in the new password.
15 # dcredit = 1
16 dcredit = -1
...
변경된 패스워드 복잡성 정책 테스트

pwquality.conf 파일을 편집하고 저장 후 실제 사용자 계정의 비밀번호를 변경할 때 조건에 맞지 않으면 아래와 같은 메시지가 출력됩니다.

### 패스워드 복잡성 조건에 맞지 않는 경우
[root@server ~ ] # passwd ihlee
Changing password for user ihlee.
New password:
BAD PASSWORD: The password contains less than 1 uppercase letters
Retype new password:

### 패스워드 복잡성 조건 성공
[root@server ~ ] # passwd ihlee
Changing password for user ihlee.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

 

반응형
그리드형

댓글