본문 바로가기
Hacking/infra 진단

[Linux] U-03 (상) 계정 잠금 임계값 설정

by 알거음슴 2021. 8. 17.
취약점 개요
점검 내용 사용자 계정 로그인 실패 시 계정잠금 임계값이 설정되어 있는지 점검
점검 목적 계정탈취 목적의 무작위 대입 공격 시 해당 계정을 잠금하여 인증 요청에 응답하는 리소스 낭비를 차단하고 대입 공격으로 인한 비밀번호 노출 공격을 무력화하기 위함
보안 위협 패스워드 탈취 공격(무작위 대입 공격, 사전 대입 공격, 추측 공격 등)의 인증 요청에 대해 설정된 패스워드와 일치 할 때까지 지속적으로 응답하여 해당 계정의 패스워드가 유출 될 수 있음
참고 ※ 사용자 로그인 실패 임계 값: 시스템에 로그인 시 몇 번의 로그인 실패에 로그인을 차
단할 것인지 결정하는 값
점검대상 및 판단 기준
대상 LINUX
판단기준 양호 : 계정 잠금 임계값이 10회 이하의 값으로 설정되어 있는 경우
취약 : 계정 잠금 임계값이 설정되어 있지 않거나, 10회 이하의 값으로 설정되지 않은 경우
조치 방법 계정 잠금 임계값을 10회 이하로 설정

 

점검 및 조치
점검 # cat /etc/pam.d/system-auth
auth required /lib/security/pam_tally.so deny=5
unlock_time=120 no_magic_root
account required /lib/security/pam_tally.so
no_magic_root reset
위에 제시한 설정이 해당 파일에 적용되지 않은 경우 아래의 보안설정방법에 따라 설정을 변경함
조치 Step 1) vi 편집기를 이용하여 “/etc/pam.d/system-auth” 파일 열기
Step 2) 아래와 같이 수정 또는, 신규 삽입
 auth required /lib/security/pam_tally.so deny=5 unlock_time=120
 no_magic_root
 account required /lib/security/pam_tally.so no_magic_root reset

 

점검 스크립트

#!/bin/bash

. function.sh

BAR
CODE [U-03] 계정 잠금 임계값 설정
cat << EOF >> $RESULT
[양호]: 계정 잠금 임계값이 5이하의 값으로 설정되어 있는 경우
[취약]: 계정 잠금 임계값이 설정되어 있지 않거나, 5이하의 값으로 설정되지 않은 경우
EOF
BAR

LOGFILE=LSC_03.sh
PAM_FILE1=/etc/pam.d/system-auth
PAM_MOD1=pam_faillock.so
PAM_MOD2=pam_tally2.so

CheckDenyValue() {
Value=$1
if [ $Value -le 5 ] ; then
    OK "계정 잠금 임계값이 5이하로 설정되어 있습니다."
else
    VULN "계정 잠금 임계값이 6이상으로 설정되어 있습니다."
fi
}

FIRSTLINE=$(egrep -v '^$|^#' $PAM_FILE1 | egrep "$PAM_MOD1|$PAM_MOD2" | grep '^auth')
SECONDLINE=$(echo $FIRSTLINE | cut -d' ' -f4-)

if [ -z "$SECONDLINE" ] ; then
    INFO "계정 잠금 임계값이 설정되어 있습니다."
else
    
    for i in $SECONDLINE
    do
        KEY=$(echo $i | awk -F= '{print $1}')
        VALUE=$(echo $i | awk -F= '{print $2}')
        case $KEY in
            'deny') CheckDenyValue $VALUE;;
            *) : ;;
        esac
    done
fi

INFO $LOGFILE "참고하세요."
cat << EOF > $LOGFILE
=======================================================
다음은 $PAM_FILE1 파일의 내용입니다.
=======================================================
EOF
FILECONTENTCOPY $PAM_FILE1 $LOGFILE

cat $RESULT