티스토리 뷰

echo : 주어진 문자열을, 문자열 사이에 포함된 공백과 줄 마지막에 개행 문자를 포함하여 표준출력으로 출력하는 명령

  사용법 ) echo [옵션] … [문자열]

  옵션 ) –n : 마지막에 따라오는 개행 문자를 출력하지 않음

           -e : 문자열에서 역슬래시(\)와 조합되는 escape sequence를 인용부호(“)로 묶어 인식

  ex ) echo "###Start Check List `date`“

 

cat : 파일 이름을 인자로 받아서 파일내용 출력

  사용법 ) cat [옵션] [파일명]

  옵션 ) -b: 줄번호를 화면 왼쪽에 나타낸다. 비어있는 행은 제외

           -e: 제어 문자를 ^형태로 출력하면서 각 행의 끝에 $를 추가한다.

           -n: 줄번호를 화면 왼쪽에 나타낸다. 비어있는 행도 포함

           -s: 연속되는 2개 이상의 빈 행을 한 행으로 출력한다.

           -v: tab과 행 바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다.

           -E: 행마다 끝에 $ 문자를 출력한다.

           -T: (tab) 문자를 출력한다.

           -A: -vET 옵션을 사용한 것과 같은 효과를 본다.

 

grep :  입력되는 파일에서 주어진 패턴 목록과 매칭되는 라인을 검색한 다음, 검색된 라인을 복사해서 표준출력하는 명령

  사용법 ) grep [옵션] [패턴] [파일명]

  옵션 ) -b : 검색된 라인에 블록 번호를 붙여서 출력

            -h : 파일명 출력하지 않음

            - i : 패턴에서 사용되는 문자열에서 대소문자를 모두 검색

            - n : 매칭된 라인을 출력할 때 파일 상의 라인 번호 함께 출력

 

wc : (word count) 사용자가 지정한 파일의 행, 단어, 문자 수를 세는 명령

사용법 ) wc [옵션] [파일명]

옵션 ) –l : , -w : 단어, -c : 문자

 

awk : 데이터를 조작하고, 리포트를 생성하기위해 사용하는 명령

사용법 & 옵션 ) –F [필드구분자] : 필드구분자를 지정할 때 사용, 기본 필드구분자는 공백

     -f [파일명] : 스크립트 파일을 불러옴

 

cut : 파일에서 필드를 구분한다.

사용법 ) cut [옵션] [파일명]

옵션 ) –c 문자 위치 : 잘라낼 곳의 글자 위치 지정

        -f 필드 : 잘라낼 필드를 정한다

        -d 구분자 : 필드를 구분하는 문자를 지정, 디폴트는 탭 문자

 

find : 디스크에 저장된 파일, 디렉토리 검색

사용법 ) find [옵션] [파일명]

옵션 ) –name : 찾을 파일 이름, -size : 찾을 파일 사이즈, -empty : 빈 파일 검색 

 

ls : 디렉토리 내 내용 확인

사용법 ) ls [옵션]

옵션 ) –l : 권한, 포함된 파일 수 , 소유자, 그룹, 파일크기, 수정일자, 파일이름의 자세한 내용 출력

         -s : 파일 크기순 출력, -r : 거꾸로 출력, -R : 하위 디렉토리까지 출력

 

#!/bin/sh

C_FILE=`hostname`"_"`date +%m%d`.txt

echo > $C_FILE 2>&1

echo "###Start Check List `date`"
echo "###Start Check List `date`" >> $C_FILE 2>&1

echo
echo
echo "### U-01.계정관리 > 1.1 root 계정 원격 접속 제한 확인"
echo "### U-01.계정관리 > 1.1 root 계정 원격 접속 제한 확인" >> $C_FILE 2>&1
echo
echo

if [ `cat /etc/securetty | grep -i "pts" | wc -l` -gt 0 ]
	then	  
		echo "/etc/securetty에서 pts/*를 지우세요.[취약]"
		echo "/etc/securetty에서 pts/*를 지우세요.[취약]" >> $C_FILE 2>&1
	else
		echo "/etc/securetty에 pts/*가 없습니다. [양호]"
		echo "/etc/securetty에 pts/*가 없습니다. [양호]" >> $C_FILE 2>&1	
fi	


echo
echo
echo "### U-02.계정관리 > 1.2 패스워드 복잡성 설정 확인"
echo "### U-02.계정관리 > 1.2 패스워드 복잡성 설정 확인" >> $C_FILE 2>&1
echo 

echo "###패스워드 최소길이 8자 이상 확인"
echo "###패스워드 최소길이 8자 이상 확인" >> $C_FILE 2>&1
echo 


if [ `cat /etc/login.defs | grep "PASS_MIN_LEN" | grep -v "#"  | awk '{print $2}'` -gt 7 ]
	then
		echo "비밀번호 최소 길이가 8자 이상입니다[양호]"
		echo "비밀번호 최소 길이가 8자 이상입니다[양호]" >> $C_FILE 2>&1
	else
		echo "/etc/login.def에서 비밀번호 최소길이를 8자이상으로 바꿔주세요[취약]"
		echo "/etc/login.def에서 비밀번호 최소길이를 8자이상으로 바꿔주세요[취약]" >> $C_FILE 2>&1
fi

echo
echo "###패스워드 사용기간 만료 경고 7일 확인"
echo "###패스워드 사용기간 만료 경고 7일 확인" >> $C_FILE 2>&1
echo
	
if [ `cat /etc/login.defs | grep "PASS_WARN_AGE" | grep -v "#"  | awk '{print $2}'` -eq 7 ]
	then
		echo "패스워드 사용기간 만료 경고 7일입니다[양호]"
		echo "패스워드 사용기간 만료 경고 7일입니다[양호]" >> $C_FILE 2>&1
	else
		echo "패스워드 사용기간 만료 경고 7일이 아닙니다[취약]"
		echo "패스워드 사용기간 만료 경고 7일이 아닙니다[취약]" >> $C_FILE 2>&1
		
fi

echo
echo "###패스워드 최대 사용 기간 확인"
echo "###패스워드 최대 사용 기간 확인" >> $C_FILE 2>&1
echo

if [ `cat /etc/login.defs | grep "PASS_MAX_DAYS" | grep -v "#"  | awk '{print $2}'` -le 60 ]
	then
		echo "패스워드 최대 사용 기간이 60일 이하입니다[양호]"
		echo "패스워드 최대 사용 기간이 60일 이하입니다[양호]" >> $C_FILE 2>&1
	else
		echo "패스워드 최대 사용 기간이 60일 이하로 바꿔주세요[취약]"
		echo "패스워드 최대 사용 기간이 60일 이하로 바꿔주세요[취약]" >> $C_FILE 2>&1
fi

echo
echo "패스워드 최소 사용기간 확인"
echo "패스워드 최소 사용기간 확인" >> $C_FILE 2>&1
echo

if [ `cat /etc/login.defs | grep "PASS_MIN_DAYS" | grep -v "#"  | awk '{print $2}'` -ge 1 ]
	then
		echo "패스워드 최소 사용기간 1일 이상입니다[양호]"
		echo "패스워드 최소 사용기간 1일 이상입니다[양호]" >> $C_FILE 2>&1
		
	else
		
		echo "패스워드 최소 사용기간 0일입니다[취약]"
		echo "패스워드 최소 사용기간 0일입니다[취약]" >> $C_FILE 2>&1
fi
echo
echo
echo "### U-03.계정관리 > 계정 잠금 임계값 설정"
echo "### U-03.계정관리 > 계정 잠금 임계값 설정" >> $C_FILE 2>&1
echo
echo
echo
#if [ `cat /etc/pam.d/system-auth | grep "PASS_MAX_DAYS" | grep -v "#"  | awk '{print $2}'` -eq 0]
#	then
#fi


echo "### U-04.계정관리 > 패스워드 파일 보호"
echo "### U-04.계정관리 > 패스워드 파일 보호" >> $C_FILE 2>&1
echo 

if [ `ls /etc | grep -x "shadow" |wc -l ` -eq 1 ]
	then
		echo "/etc/shadow가 존재합니다"
fi

if [ `cat /etc/passwd | cut -d ":" -f 2 | grep -v "x" | wc -l` -gt 0 ]
	then
		echo "/etc/shadow 파일 내 두 번째 필드가 \"x\"가 아닙니다[취약]"
		echo "/etc/shadow 파일 내 두 번째 필드가 \"x\"가 아닙니다[취약]" >> $C_FILE 2>&1
	else 
		echo "/etc/shadow 파일 내 두 번째 필드가 \"x\"입니다[양호]"		
		echo "/etc/shadow 파일 내 두 번째 필드가 \"x\"입니다[양호]" >> $C_FILE 2>&1
fi

echo
echo
echo "### U-05. 파일 및 디렉토리 관리 > root홈, 패스 디렉터리 권한 및 패스 설정" 
echo "### U-05. 파일 및 디렉토리 관리 > root홈, 패스 디렉터리 권한 및 패스 설정" >> $C_FILE 2>&1
echo

if [ `echo $PATH | grep ".:" | wc -l` -ge 1 ]
	then 
		echo "PATH에서 .:가 있습니다[취약]"
		echo "PATH에서 .:가 있습니다[취약]" >> $C_FILE 2>&1
	else
		echo "[양호]"
fi

echo
echo
echo "### U-06. 파일 및 디렉토리 관리 > 파일 및 디렉터리 소유자 설정"
echo "### U-06. 파일 및 디렉토리 관리 > 파일 및 디렉터리 소유자 설정" >> $C_FILE 2>&1
echo

if [ `find -nouser -print | grep -v "find" | wc -l` -gt 0 ]
	then
		echo "소유자가 없는 파일 또는 디렉토리가 존재합니다[취약]"
		echo "소유자가 없는 파일 또는 디렉토리가 존재합니다[취약]" >> $C_FILE 2>&1
	else
		echo "[양호]"
fi	

echo
if [ `find -nogroup -print | grep -v "find" | wc -l` -gt 0 ]
	then	
		echo "소유그룹이 없는 파일 또는 디렉토리가 존재합니다[취약]" 
		echo "소유그룹이 없는 파일 또는 디렉토리가 존재합니다[취약]" >> $C_FILE 2>&1
	else
		echo "[양호]"
fi

echo
echo
echo "### U-07. 파일 및 디렉토리 관리 > /etc/passwd 파일 소유자 및 권한 설정"
echo "### U-07. 파일 및 디렉토리 관리 > /etc/passwd 파일 소유자 및 권한 설정" >> $C_FILE 2>&1

echo "/etc/passwd 소유자 확인"

if [ `ls -l /etc/passwd | awk '{print $3}'| grep "root"  | wc -l` -eq 1 ]
	then
		echo "[양호]"
	else
		echo "[취약]"
fi

echo "/etc/passwd 권한 확인"

if [ `ls -l /etc/passwd | awk '{print $1}'| grep  "\-rw\-r\-\-r\-\-." | wc -l` -eq 1 ]
	then
		echo "[양호]"
	else
		echo "[취약]"
fi

echo
echo
echo "### U-08. 파일 및 디렉토리 관리 > /etc/shadow 파일 소유자 및 권한 설정"
echo

echo "/etc/shadow 소유자 확인"

if [ `ls -l /etc/shadow | awk '{print $3}'| grep "root"  | wc -l` -eq 1 ]
        then
                echo "[양호]"
        else
                echo "[취약]"
fi

echo "/etc/passwd 권한 확인"

if [ `ls -l /etc/shadow | awk '{print $1}'| grep  "\-r\-\-\-\-\-\-\-\-." | wc -l` -eq 1 ]
        then
                echo "[양호]"
        else
                echo "[취약]"
fi

echo
echo
echo "### U-09. 파일 및 디렉토리 관리 > /etc/hosts 파일 소유자 및 권한 설정"
echo

echo "/etc/hosts 소유자 확인"

if [ `ls -l /etc/hosts | awk '{print $3}'| grep "root"  | wc -l` -eq 1 ]
        then
                echo "[양호]"
        else
                echo "[취약]"
fi

echo "/etc/hosts 권한 확인"

if [ `ls -l /etc/hosts | awk '{print $1}'| grep  "\-rw\-\-\-\-\-\-\-." | wc -l` -eq 1 ]
        then
                echo "[양호]"
        else
                echo "[취약]"
fi

echo
echo
echo "### U-10. 파일 및 디렉토리 관리 > /etc/xinetd.conf 파일 소유자 및 권한 설정"
echo

echo "/etc/xinetd.conf 소유자 확인"

if [ `ls -l /etc/xinetd.conf | awk '{print $3}'| grep "root"  | wc -l` -eq 1 ]
        then
                echo "[양호]"
        else
                echo "[취약]"
fi

echo "/etc/xinetd.conf 권한 확인"

if [ `ls -l /etc/xinetd.conf | awk '{print $1}'| grep  "\-rw\-\-\-\-\-\-\-." | wc -l` -eq 1 ]
        then
                echo "[양호]"
        else
                echo "[취약]"
fi

echo
echo
echo "### U-11. 파일 및 디렉토리 관리 > /etc/rsyslog.conf 파일 소유자 및 권한 설정"
echo

echo "/etc/rsyslog.conf 소유자 확인"

if [ `ls -l /etc/rsyslog.conf | awk '{print $3}'| grep "root"  | wc -l` -eq 1 ]
        then
                echo "[양호]"
        else
                echo "[취약]"
fi

echo "/etc/rsyslog.conf 권한 확인"

if [ `ls -l /etc/rsyslog.conf | awk '{print $1}'| grep  "\-rw\-r\-\-r\-\-." | wc -l` -eq 1 ]
        then
                echo "[양호]"
        else
                echo "[취약]"
fi

echo
echo
echo "### U-12. 파일 및 디렉토리 관리 > /etc/services 파일 소유자 및 권한 설정"
echo

echo "/etc/services 소유자 확인"

if [ `ls -l /etc/services | awk '{print $3}'| grep "root"  | wc -l` -eq 1 ]
        then
                echo "[양호]"
        else
                echo "[취약]"
fi

echo "/etc/services 권한 확인"

if [ `ls -l /etc/services | awk '{print $1}'| grep  "\-rw\-r\-\-r\-\-." | wc -l` -eq 1 ]
        then
                echo "[양호]"
        else
                echo "[취약]"
fi

echo
echo
echo "### U-13 파일 및 디렉토리 관리 > SUID, SGID, Sticky bit 설정 및 권한 설정"
echo

if [ `find / -ls | awk '{print $3}' | grep -i "s" | grep -v '^s' | wc -l` -gt 0]
	then 
		echo "[취약]"
	else
		echo "[양호]"
fi


echo
echo
echo "### U-14 파일 및 디렉토리 관리 > 사용자, 시스템 시작파일 및 환경파일 소유자 및 권한 설정"
echo 

echo
echo
echo "### U-15 파일 및 디렉토리 관리 world writable 파일 점검"
echo 

#echo `find / -type f -perm -2 -exec ls -l {} \;`

echo
echo
echo "### U-16 파일 및 디렉토리 관리 /dev에 존재하지 않는 devicw 파일 점검"
echo
# 직접 눈으로 찾아야 할 필요가 보임.

echo
echo "### U-17 파일 및 디렉토리 관리 > $HOME/.rhosts, hosts.equiv 사용 금지"
#파일이 존재하지 않음.
echo
echo
echo "### U-18 파일 및 디렉토리 관리 > 접속 IP 및 포트 제한"
echo
if [ `iptables -L | grep "anywhere" | wc -l` -gt 0 ]
	then
		echo "iptables를 확인하세요 [취약]"
	else
		echo "[양호]"
fi
		

 

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함