본문 바로가기
Hacking/infra 진단

Linux infra 진단 스크립트 개발

by 알거음슴 2021. 8. 17.

개요

주요정보통신기반시설 취약점 분석 평가 상세 가이드는 정보통신기반 보호법 제 9조에 따라 주요정보통신기반시설로 신규 지정된 후 6개월 이내, 매년 취약점 분석 및 평가를 진행하기 위한 한국인터넷진흥원의 에서 제공하는 정부 가이드 파일이다.

취약점 분석할 때 기준점이 되며 또한 각 시스템의 대한 명령어 또는 메뉴 구성의 기술 등을 충분히 숙지해야만 문서를 통한 점검이 가능하며 변경사항이 필요하다면 수정 또한 가능하다.

 

해당 문서에서는 주요정보통신기반 취약점 분석 가이드의 구성요소는 이러하다.

1) Cent OS 7 ver 의 대한 점검

2) 2017년 개정된 주요정보통신기반 가이드

3) 수동 점검 및 쉘스크립트를 통한 자동 점검화

 

3가지 요소를 기준으로 점검을 진행하도록 한다.

 

공통 적용 사용자 함수

function.sh

#!/bin/bash
 
LOG=check.log
RESULT=result.log
> $LOG
> $RESULT
 
BAR() {
echo "========================================================================" >> $RESULT
}
 
NOTICE() {
echo '[ OK ] : 정상'
echo '[WARN] : 비정상'
echo '[INFO] : Information 파일을 보고, 고객과 상의'
}
 
OK() {
echo -e '\033[32m'"[ 양호 ] : $*"'\033[0m'
} >> $RESULT
 
WARN() {
echo -e '\033[31m'"[ 경고 ] : $*"'\033[0m'
} >> $RESULT
 
INFO() {
echo -e '\033[35m'"[ 정보 ] : $*"'\033[0m'
} >> $RESULT
 
CODE(){
echo -e '\033[36m'$*'\033[0m'
} >> $RESULT
 
VULN(){
echo -e '\033[31m'"[ 경고 ] : $*"'\033[0m'
} >> $RESULT
 
BLANKLINE(){
echo -e ''
} >> $RESULT
 
MAKE_LOGFILE(){
FILENAME=$(basename $(echo $0) | awk -F. '{print $1}').log
> "$FILENAME"
echo "$FILENAME"
}
 
SCRIPTNAME() {
basename $0 | awk -F. '{print $1}'
}
 
FindPattern(){
Filename=$1
FindPattern=$2
ReturnValue=$(egrep -v '^#|^$' $Filename | grep $FindPattern)
if [ -n "$ReturnValue" ] ; then
   echo -e $ReturnValue | awk -F= '{print $2}' # | sed -e 's/^[ \t]*//'
else
   echo None
fi
}
 
FindPattern2(){
Filename=$1
FindPattern=$2
FindPatternValue=$(egrep -v '^#|^$' $Filename | grep "^$FindPattern")
if [ -n "$FindPatternValue" ] ; then
   Return=$(echo $FindPatternValue | awk '{print $2}')
else
   Return=$(echo "None")
fi
echo $Return
}
 
IsFindPattern(){
if egrep -v '^#|^$' $1 | grep -q $2; then
   ReturnValue=$?
else
   ReturnValue=$?
fi
}
 
CheckPrintVulnerable(){
String1=$1
String2=$2
if [ $String1 = "vulnerbility" ] ; then
   VUL "$String2"
else
   OK "$String2"
fi
}
 
FILECONTENTCOPY() {
# $1 : source file
# $2 : desrination file
SrcFile=$1
DestFile=$2
egrep -v '^#|^$' $SrcFile >> $DestFile
}
 
ENHANCEDFILECONTENTCOPY() {
SrcFile=$1
DestFile=$2
SUBJECTFILENAME=$3
cat << EOF >> $DestFile
===============================================
$SUBJECTFILENAME 파일의 내용입니다.
===============================================
EOF
egrep -v '^#|^$' $SrcFile >> $DestFile
}