[목차]

 

 

 

패스워드 복잡성(1.2)

  1. 취약점 분석/평가 방법 상세 가이드

  2. 취약점 점검 스크립트 제작

 

계정 잠금 임계값 설정(1.3)

  1. 취약점 분석/평가 방법 상세 가이드

  2. 취약점 점검 스크립트 제작

 

 

 

 


 

 

 

 

[패스워드 복잡성]

 

 

 

1. 취약점 분석/평가 방법 상세 가이드

 

1.2 패스워드 복잡성 설정

■ 점검 분류 항목: 계정 관리

■ 세부 점검 항목: 패스워드 복잡성 설정

■ 대상: 리눅스

■ 위험도: 

■ 관련 코드: U-02

 

(1) 취약점 개요

사용자 계정 및 일반 계정 모두 해당 암호를 유추하기 쉽게 설정할 경우 비인가자의 시스템 접근을 허용하게 하는 위험이 존재함 여러 문자를 혼합한 8자리 이상의 암호를 사용하게 하여 패스워드 복잡성을 높이면 비인가자에 의해 발생하는 침입 공격 발생률을 낮출 수 있음.

 

(2) 판단기준

양호: 영문 숫자 특수문자가 혼합된 8 글자 이상의 패스워드가 설정된 경우

취약: 영문 숫자 특수문자 혼합되지 않은 8 글자 미만의 패스워드가 설정된 경우

 

(3) 조치방법

계정과 유사하지 않은 8 글자 이상의 영문 숫자 특수문자의 조합으로 암호 설정

 

(4) 보안 설정 방법

<부적절한 패스워드 유형>

사전에 나오는 단어나 이들의 조합

길이가 너무 짧거나 공백(NULL)인 패스워드

키보드 자판의 일련의 나열 (예) abcd, qwert, etc

사용자 계정 정보에서 유추 가능한 단어들 (예) 지역명 부서명 계정명 사용자 이름의 이니셜

 

<패스워드 관리 방법>

영문, 숫자, 특수문자를 조합하여 계정명과 상이한 8자 이상의 패스워드 설정

※ 다음 각 목의 문자 종류 중 2종류 이상을 조합하여 최소 10자리 이상 또는, 3종류 이상을 조합하여 최소 8자리 이상의 길이로 구성

가. 영문 대문자(26개)

나. 영문 소문자(26개)

다. 숫자(10개)

라. 특수문자(32개)

시스템마다 상이한 패스워드 사용

패스워드를 기록해 놓을 경우 변형하여 기록

가급적 자주 패스워드를 변경할 것

 

(5) 조치시 영향

패스워드 변경 시 Web, Was, DB연동 구간에서 문제가 발생할 수 있으므로 연동 구간에 미칠 수 있는 영향을 고려하여 적용 필요

 

 

 

 

고객에게 취약점을 어떻게 이해시킬것인가?

 

패스워드가 복잡하게 구성되지 않으면, 쉽게 로컬/원격에서 패스워드 크랙툴에 의해 공격 당한다. 따라서 복잡한 암호를 사용할 수 있도록 유도한다. 문자(대문자/소문자), 숫자, 특수 문자, 공백 문자를 섞어서 사용하도록 한다. => Brute Force Attack, Directionary Attack

사이트를 참고하여 강력한 암호 클랙 시간 점검

https://howsecureismypassword.net/

http://www.passwordmeter.com/

 

 

 

 

 

관련문서 

 

[실습] 관리자 암호 복구 실습

* Debian 계열/RedHat 계열 암호 복구 하는 방법

* GRUB를 사용한 암호 복구(Single User Mode)

CD 부팅하여 암호 복구

 

[실습] GRUB 암호 설정

* GRUB 메뉴를 통해 암호 복구 방법 --- 방지 --> GRUB password

* CD을 이용한 암호 복구 방법 --- 방지 --> FirmWare password

* 물리적 보안(Physical Security)

 

[실습] PAM(Pluggable Athentication Module)

* 사용자 암호 정책

 

 

위 실습 내용은 이전 글들 참고!

 

 


 

 

(정리) 보안 정책

 

1. 패스워드(password) 관리 정책에 대한 경우

- 복잡한 암호를 사용해야 한다.(문자(대문자/소문자), 숫자, 특수문자, 공백문자)

- 암호의 최소 길이는 8글자 이상으로 한다.

- (예) 암호는 2개의 문자와 한개의 숫자 또는 특수문자가 포함되어야 한다.

암호의 길이는 8글자 이상으로 설정한다.

암호는 사용자 아이디가 포함되면 안된다.(동일하면 안된다.)

암호는 사용자 아이디의 Circular Shift 형태이면 안된다.

암호는 순서대로 되어 있으면 안된다.(예: 1234, abcd)

암호는 이전의 암호와 3글자 이상은 틀려야 한다.

- 관리자의 정책

 

 

(ㄱ) 암호를 정기적으로 변경하도록 유도

(/etc/login.defs, chage CMD, /etc/security/pwquality.conf)

# vi /etc/login.defs

PASS_MAX_DAYS 90

# chage -M 90 -W 7 user01

# authconfig --passminlen 12 \

--enablereqlower -—enablerequpper —enablereqdigit —enablereqother \

--update (12 –4 = 8글자 이상.)

 

 

(ㄴ) 암호를 사용자가 변경할수 없도록 설정(# chmod u-s /usr/bin/passwd)

# ls -l /usr/bin/passwd

-rwsr-xr-x 1 root root 23K Aug 11 2010 /usr/bin/passwd* (4755)

# chmod u-s /usr/bin/passwd

# ls -l /usr/bin/passwd

 

# telnet localhost

user01 사용자로 로그인

$ passwd

-> 자신의 암호를 변경할 수 있는가?

$ exit

# passwd user01

-> 관리자가 user01 사용자의 암호 변경이 가능한가?

# chmod 4755 /usr/bin/passwd

# ls -l /usr/bin/passwd

 

 

 


 

 

 

2. 취약점 점검 스크립트 제작

 

 

 

(스크립트 작성시 유의사항)

영문/숫자/특수문자가 포함된 8글자 이상의 암호여야 한다.

나올수 있는 종류와 범위가 넓은 경우에는 스크립트가 결과를 점검하도록 하는것 보다

출력 내용을 컨설턴트에게 보고하여 분석하도록 하고, 고객과 협의하도록 한다.

 

 

(스크립트 안에 들어가는 내용)

■ fuction.sh

.....

SCRIPTNAME() {

basename $0 | awk -F. '{print $1}' //프로그램 이름만 나온다.

}

 

[root@linux200 ~/scripts]# echo /etc/sysconfig/network-scripts/ifcfg-ens33

/etc/sysconfig/network-scripts/ifcfg-ens33

[root@linux200 ~/scripts]# basename /etc/sysconfig/network-scripts/ifcfg-ens33

ifcfg-ens33

[root@linux200 ~/scripts]#

[root@linux200 ~/scripts]# basename /etc/sysconfig/network-scripts/ifcfg-ens33 | awk -F- '{print $1}'

ifcfg

 

위의 내용을 function.sh 파일의 마지막 부분에 추가한다.

 

 

 

■ U-02.sh

#!/bin/bash

 

. function.sh

TMP1=`SCRIPTNAME`.log

> $TMP1

 

BAR

CODE [U-02] 패스워드 복잡성 검사

cat << EOF >> $RESULT

[양호]: 영문 숫자 특수문자가 혼합된 8 글자 이상의 패스워드가 설정된 경우.

[취약]: 영문 숫자 특수문자 혼합되지 않은 8 글자 미만의 패스워드가 설정된 경우.

EOF

BAR

INFO $TMP1 파일을 점검한다.

 

FILE1=/etc/pam.d/system-auth

PAM_MODULE=pam_cracklib.so

 

echo "다음은 패스워드 정책입니다." >> $TMP1

cat << EOF >> $TMP1

=========================================================================

try_first_pass : 사용자 암호 입력전 인증 모듈(NIS,NIS+,LDAP)에서 사용된 암호를 먼저 사용

retry : 패스워드 입력 실패 시 재시도 회수 지정

minlen : 크레디트를 더한 패스워드 최소 길이 지정

dcredit : 숫자에 주어지는 크레디트 값 지정

lcredit : 영어 소문자에 주어지는 크레디트 값 지정

ocredit : 숫자, 영어 대/소문자를 제외한 기타 문자 지정

minclass : 문자, 숫자, 특수문자 중 다른 클래스 사용 개수 지정

=========================================================================

EOF

 

LINE1=`cat $FILE1 | egrep -v '(^$|^#)' | grep $PAM_MODULE`

LINE2=`echo $LINE1 | cut -d ' ' -f 4-`

for VAR in `echo $LINE2`

do

CHECK1=`echo $VAR | awk -F= '{print $1}'`

CHECK2=`echo $VAR | awk -F= '{print $2}'`

case $CHECK1 in

try_first_pass) echo "try_first_passwd" >> $TMP1 ;;

retry) echo "retry : $CHECK2" >> $TMP1 ;;

minlen) echo "minlen : $CHECK2" >> $TMP1 ;;

ucredit) echo "ucredit : $CHECK2" >> $TMP1 ;;

lcredit) echo "lcredit : $CHECK2" >> $TMP1 ;;

dcredit) echo "dcredit : $CHECK2" >> $TMP1 ;;

ocredit) echo "ocredit : $CHECK2" >> $TMP1 ;;

minclass)echo "minclass: $CHECK2" >> $TMP1 ;;

*) echo 'Unkown keyword => $CHECK1 : $CHECK2' >> $TMP1;;

esac

done

cat $RESULT

echo ; echo

 

 


■ (CentOS 7.X) U-02.sh

#!/bin/bash 

. function.sh

TMP1=$(SCRIPTNAME).log
> $TMP1

BAR
CODE [U-02] 패스워드 복잡성 검사
cat << EOF >> $RESULT
[양호]: 영문 숫자 특수문자가 혼합된 8 글자 이상의 패스워드가 설정된 경우.
[취약]: 영문 숫자 특수문자 혼합되지 않은 8 글자 미만의 패스워드가 설정된 경우.
EOF
BAR

INFO $TMP1 파일을 점검한다
echo >> $TMP1
echo "다음은 /etc/security/pwquality.conf 파일을 해석할 때 사용하는 내용입니다"
echo "=============================================================" >> $TMP1
cat /etc/security/pwquality.conf | egrep -v '(^$|^#)' >> $TMP1
cat << EOF >> $TMP1
=============================================================
다음은 /etc/security/pwquality.conf 파일을 해석할 때 사용하는 내용입니다.

minlen     : 패스워드 최소 길이입니다.
minclass   : 패스워드 class 지정입니다.
lcredit    : 패스워드 소문자 포함 지정입니다.
ucredit    : 패스워드 대문자 포함 지정입니다.
dcredit    : 패스워드 숫자 포함 지정입니다.
ocredit    : 패스워드 특수문자 포함 지정입니다.
=============================================================
다음은 /etc/security/pwquality.conf 파일의 내용이 없으면,

1)  기본값을 사용하는 경우입니다.  이 경우, 패스워드 정책에 맞지 않습니다. 
      따라서, 반드시 정책을 변경할 것을 권장합니다.
2)  정책을 변경하는 경우에는 다음과 같은 명령어를 통해 설정할 수 있습니다.
    # authconfig --passminlen=8 --passminclass=3 
    --enablereqlower --disablerequpper --enablereqdigit 
    --enablereqother --update
=============================================================
EOF



PWQUALITY_CONF=/etc/security/pwquality.conf.copy
VALUE1=$(FindPatternReturnValue $PWQUALITY_CONF minlen)
if [ $VALUE1 = None ] ; then
	WARN '패스워드의 최소 길이 설정이 8 글자 미만으로 되어 있음!'
else
	if [ $VALUE1 -ge 12 ] ; then
		Ret1=$(IsFindPattern $PWQUALITY_CONF dcredit)
		Ret2=$(IsFindPattern $PWQUALITY_CONF ucredit)
		Ret3=$(IsFindPattern $PWQUALITY_CONF lcredit)
		Ret4=$(IsFindPattern $PWQUALITY_CONF ocredit)
		if [ $Ret1 -eq 0 -a $Ret2 -eq 0 -a $Ret3 -eq 0 -a $Ret4 -eq 0 ]	; then
			OK "영문 숫자 특수문가자 혼합된 8글자 이상의 패스워드를 사용하고 있습니다."
		else
			WARN "패스워드가 8글자 이상이지만 dcredit|ucredit|lcredit|ocredit 중 설정이 없는 것이 존재합니다."
		fi
	else
		WARN '패스워드의 최소 길이 설정이 8글자 미만으로 되어 있음'
	fi
fi

cat $RESULT

 

 

 


 

 

 

 

[계정 잠금 임계값 설정]

 

 

 

1. 취약점 분석/평가 방법 상세 가이드

 

1.3 계정 잠금 임계값 설정

■ 점검 분류 항목: 계정 관리

■ 세부 점검 항목: 계정 잠금 임계값 설정

■ 대상: 리눅스

■ 위험도: 

■ 관련 코드: U-03

 

 

(1) 취약점 개요

침입자에 의한 패스워드 *무작위 대입 공격(Brute Force Attack)이나 패스워드 추측 공격(Password Guessing) 발생 시 암호입력 실패 횟수를 적정하게 제한함으로써 자동공격을 차단하고 공격 시간을 지체시켜 패스워드 유출 위험을 줄일 수 있음.

무작위 대입 공격(Brute Force Attack): 컴퓨터로 암호를 해독하기 위해 가능한 모든 키를 하나하나 추론해 보는 시도를 말함.

 

 

(2) 판단기준

양호: 계정 잠금 임계값이 5 이하의 값으로 설정되어 있는 경우

취약: 계정 잠금 임계값이 설정되어 있지 않거나, 5 이하의 값으로 설정되지 않은 경우

 

 

(3) 조치방법

계정 잠금 임계값을 5 이하로 설정

 

 

(4) 보안 설정 방법

# 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

no_magic_root: root 사용자에게 패스워드 잠금 설정을 적용하지 않음

deny=5 : 5회 입력 실패시 패스워드 잠금

unlock_time : 계정 잠김 후 마지막 계정 실패 시간부터 설정된 시간이 지나면 자동 계정

잠김 해제(단위 : 초)

reset : 접속 시도 성공 시 실패한 횟수 초기화

 

 

(5) 조치시 영향

Trusted Mode로 전환 시 파일시스템 구조가 변경되어 운영 중인 서비스에 문제가 발생할 수 있으므로 충분한 테스트를 거친 후 Trusted Mode로의 전환이 필요함.

 

 

 

고객에게 취약점을 어떻게 이해시킬것인가?

(고객에게 설명)

무작위 대입법이나 패스워드 추측 공격 등

자동화된 툴을 통해 공격하는 방법의 위험을 줄일 수 있다.

xhydra 툴

 

 

 

 


 

 

 

 

2. 취약점 진단 스크립트 제작

 

 

 

(스크립트 작성시 참고 사항)

계정 임계값 설정이 5 이하로 되어 있으면서, 일정한 시간이 지나면 다시 풀어줘야 한다.

 

 

(스크립트 작성시 판단 근거)

/etc/pam.d/system-auth 파일안에 pam_tally.so 모듈을 사용하고 있어야 하고,

pam_tally.so 모듈의 deny 설정이 5이하로 설정 되어 있는가를 점검한다.

 

 

(스크립트 안에 들어갈 내용)

■ (CentOS 5.x) U-03.sh

#!/bin/bash

 

. function.sh

 

BAR

CODE [U-03] 계정 잠금 임계값 설정

cat << EOF >> $RESULT

[양호]: 계정 잠금 임계값이 5 이하의 값으로 설정되어 있는 경우

[취약]: 취약: 계정 잠금 임계값이 설정되어 있지 않거나, 5 이하의 값으로 설정되지 않은 경우

EOF

BAR

 

FILE1=/etc/pam.d/system-auth

PAM_MODULE=pam_tally.so

LINE1=`cat $FILE1 | egrep -v '(^#|^$)' | grep '^auth' | grep $PAM_MODULE`

if [ $? -ne 0 ] ; then

WARN 계정 임계값이 설정되어 있지 않습니다.

else

OK 계정 임계값이 설정되어 있습니다.

LINE2=`echo $LINE1 | cut -d ' ' -f 4-`

for VAR in `echo $LINE2`

do

CHECK1=`echo $VAR | awk -F= '{print $1}'`

CHECK2=`echo $VAR | awk -F= '{print $2}'`

case $CHECK1 in

deny) if [ $CHECK2 -lt 5 ] ; then

OK 계정임계값이 5이하로 설정되어 있습니다.

else

WARN 계정임계값이 5초과하여 설정되어 있습니다.

fi ;;

*) ;;

esac

done

fi

cat $RESULT

echo; echo



 

 

 

■ (CentOS 7.X) U-03.sh

 

PAM Module

* pam_tally.so deny=5 unlock_time=1800

* pam_tally2.so deny=5 unlock_time=1800

pam_faillock.so deny=5 unlock_time=1800 (7버전부터는 여기)

 

# cd /lib64/security 들어가 파일 있는지 점검.

# ls *tally*

# ls *faillock*

 

 

PAM File

# cd /etc/pam.d 들어가 파일 있는지 점검.

# find . -type f –exec grep –l pam_tally {} \;

# find . -type f –exec grep –l pam_tally2 {} \;

# find . -type f –exec grep –l pam_failock {} \;

 

* 콘솔로 로그인, su/sudo 전환, passwd CMD

=> /etc/pam.d/system-auth (system-auth-ac로 링크 걸려있다. 이게 원본이니

복사해 사용할땐 이걸 카피한 뒤 수정해 쓰자.)

 

* X-windows(GNOME, KDE) 로그인, ssh/vsftpd/smtp/pop3/imap 원격 로그인

=> /etc/pam.d/password-auth(패스워드 인증)

 

파일이 들어있는지 점검하고

양쪽에 모두 등록해야 한다.

 

 

PAM File 설정 방법

* /etc/pam.d/system-auth

#%PAM-1.0

# This file is auto-generated.

# User changes will be destroyed the next time authconfig is run.

auth required pam_env.so

auth required pam_env.so

auth required pam_faildelay.so delay=2000000 -> 이 줄 아래에 정의하면 된다.

auth required pam_tally2.so deny=5 unlock_time=1800

auth sufficient pam_unix.so nullok try_first_pass

auth requisite pam_succeed_if.so uid >= 1000 quiet_success

auth required pam_deny.so

 

 

account required pam_unix.so

account required pam_tally2.so

account sufficient pam_localuser.so

account sufficient pam_succeed_if.so uid < 1000 quiet

account required pam_permit.so

..... (중략) ....

 

* /etc/pam.d/password-auth

%PAM-1.0

# This file is auto-generated.

# User changes will be destroyed the next time authconfig is run.

auth required pam_env.so

auth required pam_tally2.so deny=5 unlock_time=1800

auth sufficient pam_unix.so nullok try_first_pass

auth requisite pam_succeed_if.so uid >= 1000 quiet_success

auth required pam_deny.so

 

account required pam_unix.so

account required pam_tally2.so

account sufficient pam_localuser.so

account sufficient pam_succeed_if.so uid < 1000 quiet

account required pam_permit.so

..... (중략) ....

 

 

 

* etc/pam.d/system-auth | /etc/pam.d/password-auth

 

#%PAM-1.0

# This file is auto-generated.

# User changes will be destroyed the next time authconfig is run.

auth required pam_faillock.so preauth silent audit deny=5 unlock_time=1800 (추가)

auth required pam_env.so

auth [default-die] pam_faillock.so authfail audit deny=5 unlock_time=1800 (추가)

auth required pam_faildelay.so delay=2000000

auth sufficient pam_unix.so nullok try_first_pass

auth requisite pam_succeed_if.so uid >= 1000 quiet_success

auth required pam_deny.so

 

account required pam_unix.so

account sufficient pam_localuser.so

account sufficient pam_succeed_if.so uid < 1000 quiet

account required pam_permit.so

account required pam_faillock.so (추가)

 

 

 

 

 

[원하는 부분 뽑아내는 실험]

 

 

1. 우선 테스트 파일 하나 생성

 

 

 

 

 

 

2. 이를 바탕으로 테스트 코드를 작성

test.sh

 

#!/bin/bash

egrep -v '^#|^$' test.txt | while read TYPE CONTROL PAM PAM_ARGS
do
	# echo $PAM_ARGS
	set $PAM_ARGS
	#echo $1 ; shift ;echo $1
	while [ $# -ge 1 ]
	do
		CHOICE=$(echo $* | awk '{print $1}') 
		if echo $CHOICE | egrep -q 'deny|unlock_time' ; then
			#case $CHOICE in
			#"echo $CHOICE | grep deny=") echo 'deny' ;;
			#'echo $CHOICE | grep unlock_time') echo "Unlock" ;;
			#*) echo "NONE" ;;
			#esac
			PARAMETER=$(echo $CHOICE | awk -F= '{print $1}')
			VALUE=$(echo $CHOICE | awk -F= '{print $2}')  # 값만 뽑아낸다
			# echo "$PARAMETER : $VALUE"	
			case $PARAMETER in
				'deny') echo $VALUE ;;
				'unlock_time') echo $VALUE ;;
				*) continue ;;
			esac
		fi
		shift
	done
done

 

 

3. 이걸 함수로 만들어 function.sh 파일에 추가

LOG=check.log
RESULT=result.log
> $LOG
> $RESULT

....중략......

PAM_FindPatternReturnValue() {
PAM_FILE=$1
PAM_MODULE=$2
PAM_FindPattern=$3
LINE=$(egrep -v '^#|^$' $PAM_FILE | grep $PAM_MODULE)
if [ -z "$LINE" ] ; then #내용이 없으면 (zero면) None을 출력
	ReturnValue=None
else
	PARAMS=$(echo $LINE | cut -d ' ' -f4-)
	# echo $PARAMS
	set $PARAMS
	while [ $# -ge 1 ]
	do
		CHOICE1=$(echo $* | awk '{print $1}' | awk -F= '{print $1}')
		CHOICE2=$(echo $* | awk '{print $1}' | awk -F= '{print $2}')
		# echo "$CHOICE1 : $CHOICE2"
		case $CHOICE1 in
			$PAM_FindPattern) ReturnValue=$CHOICE2 ;;
			*) : ;;		
		esac
		shift
	done
fi
echo $ReturnValue
}


: << EOF
PAM_FindPatternReturnValue() {
PAM_FILE=$1
egrep -v '^#|^$' $PAM_FILE \
	| egrep 'pam_faillock.so | pam_tally2.so' \
	| while read TYPE CONTROL PAM PAM_ARGS
do
	set $PAM_ARGS
	while [ $# -ge 1 ]
	do
		CHOICE=$(echo $* | awk '{print $1}') 
		if echo $CHOICE | egrep -q 'deny|unlock_time' ; then
			PARAMETER=$(echo $CHOICE | awk -F= '{print $1}')
			VALUE=$(echo $CHOICE | awk -F= '{print $2}')  # 값만 뽑아낸다
			case $PARAMETER in
				'deny') echo $VALUE ;;
				'unlock_time') echo $VALUE ;;
				*) continue ;;
			esac
		fi
		shift
	done
done
}
EOF

 

 

 

 

 

 

U-03.sh

#!/bin/bash

 

. function.sh

 

BAR

CODE [U-03] 계정 잠금 임계값 설정

cat << EOF >> $RESULT

[양호]: 계정 잠금 임계값이 5이하의 값으로 설정되어 있는 경우

[취약]: 계정 잠금 임계값이 설정되어 있지 않거나, 5이하의 값으로 설정되지 않은 경우

EOF

BAR

 

FILE1=/root/scripts/system-auth

PAM_MODULE=pam_tally2.so

LINE1=$(echo $(cat system-auth | egrep -v '(^$|^#)' | grep '^auth' | grep pam_tally2.so) | cut -d' ' -f4-)

 

if [ -z $LINE1 ]; then

WARN 임계값이 설정되어 있지 않습니다.

else

for i in `echo $LINE1`

do

KEY1=$(echo $i | awk -F= '{print $1}')

VALUE1=$(echo $i | awk -F= '{print $2}')

case $KEY1 in

deny) if [ $VALUE1 -le 5 ] ; then

OK 임계값이 5이하로 설정 되어 있습니다.

else

WARN 임계값이 6이상으로 설정되어 있습니다.

fi

;;

*) : ;;

esac

done

fi

 

cat $RESULT

echo ; echo

 

 

(CentOS 7.X)다른 예 - U-03.sh

#!/bin/bash

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

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

PAM_SYSTEM_AUTH=/etc/pam.d/system-auth
# PAM_PASSWORD_AUTH=/etc/pam.d/password-auth

Ret1=$(PAM_FindPatternReturnValue $PAM_SYSTEM_AUTH pam_tally2.so deny)
Ret2=$(PAM_FindPatternReturnValue $PAM_SYSTEM_AUTH pam_tally2.so unlock_time)

if [ "$Ret1" != None -a "$Ret2" != None ] ; then
	if [ $Ret1 -le 5 ] ; then
		OK "계정 잠금 임계값이 5 이하의 값으로 설정되어 있는 경우입니다."
	else
		WARN "계정 잠금 임계값이 설정되어 있지만, 5 이상의 값으로 설정되어 있습니다."
	fi
else
	WARN "계정 잠금 임계값이 설정되어 있지 않거나, 5 이하의 값으로 설정되지 않은 경우 입니다."
fi

cat $RESULT
echo ; echo

 

 


 

 

 

 

 

 

 

 

 

 

 

 

728x90

+ Recent posts