계정 잠금 임계값 취약점 진단

2020. 4. 6. 20:04정보보안과정/인프라 취약점 진단

#!/bin/bash

function.sh
TMP1=`SCRIPTNAME`.log
> $TMP1

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

SYSTEMAUTHFILE=/etc/pam.d/system-auth
PASSWORDAUTHFILE=/etc/pam.d/password-auth
PAM_TALLY2=pam_tally2.so
PAM_FAILLOCK=pam_faillock.so
STATUS1='FALSE'
STATUS2='FALSE'


LINE1=$(egrep -v '^$|^#' $SYSTEMAUTHFILE | egrep 'pam_tally2|pam_faillock' | grep '^auth')
CUST_LINE1=$(echo $LINE1 | cut -d ' ' -f 4-)
echo $CUST_LINE1
if [ -z "$CUST_LINE1" ] ; then
    WARN [$SYSTEMAUTHFILE] 계정 임계값이 설정되어 있지 않습니다.
else
    INFO [$SYSTEMAUTHFILE] 계정 임계값이 설정 되어 있습니다.
    for i in $CUST_LINE1
    do
     KEY=$(echo $i | awk -F'=' '{print $1}')
     VALUE=$(echo $i | awk -F'=' '{print $2}')
     # echo "$KEY : $VALUE"
     case $KEY in
     'deny')
     if [ $VALUE -le 5 ] ; then
     OK [$SYSTEMAUTHFILE] 계정 임계값이 5이하로 설정 되어 있습니다.
     STATUS1='TRUE'
     else
     WARN [$SYSTEMAUTHFILE] 계정 임계값이 6이상으로 설정 되어 있습니다.
     fi
     INFO $TMP1 파일을 참고하십시오.
     cat << EOF >> $TMP1
========================================================================
1) 다음은 /etc/pam.d/system-auth 파일의 설정 내용입니다.

$LINE1
EOF
;;
*) : ;;
     esac
    done
fi

LINE2=$(egrep -v '^$|^#' $PASSWORDAUTHFILE | egrep 'pam_tally2|pam_faillock' | grep '^auth')
echo $LINE2
CUST_LINE2=$(echo $LINE2 | cut -d ' ' -f 4-)
echo $CUST_LINE2
if [ -z "$CUST_LINE2" ] ; then
    WARN [$PASSWORDAUTHFILE] 계정 임계값이 설정되어 있지 않습니다.
else
    INFO [$PASSWORDAUTHFILE] 계정 임계값이 설정 되어 있습니다.
    for i in $CUST_LINE2
    do
     KEY=$(echo $i | awk -F'=' '{print $1}')
     VALUE=$(echo $i | awk -F'=' '{print $2}')
     # echo "$KEY : $VALUE"
     case $KEY in
     'deny')
     if [ $VALUE -le 5 ] ; then
     OK [$PASSWORDAUTHFILE] 계정 임계값이 5이하로 설정 되어 있습니다.
     STATUS2='TRUE'
     else
     WARN [$PASSWORDAUTHFILE] 계정 임계값이 6이상으로 설정 되어 있습니다.
     fi
     INFO $TMP1 파일을 참고하십시오.
     cat << EOF >> $TMP1
========================================================================
2) 다음은 /etc/pam.d/password-auth 파일의 설정 내용입니다.

$LINE2
EOF
;;
*) : ;;
     esac
    done
fi


if [ $STATUS1 = 'TRUE' -a $STATUS2 = 'TRUE' ] ; then
OK [최종] : $SYSTEMAUTHFILE, $PASSWORDAUTHFILE 파일에 모두 설정이 잘 되어 있습니다.
else
WARN [최종] : $SYSTEMAUTHFILE, $PASSWORDAUTHFILE 파일에 설정이 잘못 되어 있습니다.
fi


cat $RESULT
echo; echo