본문 바로가기
Hacking/infra 진단

[Linux] U-02 (상) 패스워드 복잡성 설정

by 알거음슴 2021. 8. 17.
취약점 개요
점검 내용 시스템 정책에 사용자 계정(root 및 일반계정 모두 해당) 패스워드 복잡성 관련 설정이 되어 있는지 점검
점검 목적 시스템 정책에 사용자 계정(root 및 일반계정 모두 해당) 패스워드 복잡성 관련 설정이 되어 있는지 점검
보안 위협 복잡성 설정이 되어있지 않은 패스워드는 사회공학적인 유추가 가능 할 수 있으며 암호화된 패스워드 해시값을 무작위 대입공격, 사전대입 공격 등으로 단시간에 패스워드 크렉이 가능함
참고 ※ 패스워드 복잡성: 사용자 패스워드 설정 시 영문(대문자, 소문자), 숫자, 특수문자가 혼
합된 일정 길이 이상으로 패스워드를 설정하는 방법
점검대상 및 판단 기준
대상 LINUX
판단기준 양호 : 패스워드 최소길이 8자리 이상, 영문·숫자·특수문자 최소 입력 기능이 설정된 경우
취약 : 패스워드 최소길이 8자리 이상, 영문·숫자·특수문자 최소 입력 기능이 설정된 경우
조치 방법 계정과 유사하지 않은 8자 이상의 영문, 숫자, 특수문자의 조합으로 암호 설정 및 패스워드 복잡성 옵션 설정

 

점검 및 조치
점검 /etc/security/pwquality.conf
OS별 점검 파일을 열어 패스워드 복잡도 관련 설정 확인 후 아래의 보안설정방법에 따라 설정을 변경함(최소길이, 특수문자, 숫자 포함 등 설정)
조치 < 부적절한 패스워드 유형 >
1. 사전에 나오는 단어나 이들의 조합
2. 길이가 너무 짧거나, NULL(공백)인 패스워드
3. 키보드 자판의 일련의 나열 () abcd, qwert, etc
4. 사용자 계정 정보에서 유추 가능한 단어들
 () 지역명, 부서명, 계정명, 사용자 이름의 이니셜, root, rootroot, root123, admin
 
< 패스워드 관리 방법 >
1. 영문, 숫자, 특수문자를 조합하여 계정명과 상이한 8자 이상의 패스워드 설정
※ 다음 각 목의 문자 종류 중 2종류 이상을 조합하여 최소 10자리 이상 또는, 3종류 이상을
 조합하여 최소 8자리 이상의 길이로 구성
 . 영문 대문자(26)
 . 영문 소문자(26)
 . 숫자(10)
 . 특수문자(32)
2. 시스템마다 상이한 패스워드 사용
3. 패스워드를 기록해 놓을 경우 변형하여 기록
 
< 패스워드 설정 파일 정리 >
Step 1) 패스워드 복잡성 설정 파일 확인
 #/etc/security/pwquality.conf 파일 수정
※ 다음 라인에 패스워드 정책을 설정함
- 패스워드 정책 설정 예시

 

점검 스크립트

#!/bin/bash

. function.sh

BAR
CODE [U-02] 패스워드 복잡성 설정
cat << EOF >> $RESULT
[양호]: 패스워드 최소길이 8자리 이상, 영문·숫자·특수문자 최소 입력 기능이 설정된 경우
[취약]: 패스워드 최소길이 8자리 이상, 영문·숫자·특수문자 최소 입력 기능이 설정되지 않은 경우
EOF
BAR

FILENAME=/etc/security/pwquality.conf
MINLEN=$(cat $FILENAME | grep "minlen" | awk '{print $3}')

if [ $MINLEN -ge 8 ] ; then
   INFO "패스워드 최소길이가 8자리 이상입니다."
   CHECK=$(cat $FILENAME | grep 'credit =' | awk '{print $3}' | grep 0 | wc -l)
   if [ $CHECK -ge 2 ] ; then
      VULN "패스워드 최소길이 8자리 이상, 영문·숫자·특수문자 최소 입력 기능이 설정 되지않은 경우"
   else
      OK "패스워드 최소길이 8자리 이상, 영문·숫자·특수문자 최소 입력 기능이 설정된 경우"
   fi
else
   VULN "패스워드 최소 길이가 8자리 이하입니다."
fi

cat $RESULT