티스토리 뷰
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
- bootstrap 변경
- package
- timedelta
- 객체지향
- 동적함수
- html
- magic function
- python #dataType #ControlStatement #function #lambda
- python #데이터타입 #data_type
- OOP
- DateUtil
- list comprehension
- 입출력
- while
- relativedelta
- information hiding
- python
- Module
- 정보은닉
- Lambda Expression
- setter
- jQuery예제
- lambda
- namespace
- first class
- constructor
- jQuery method
- spring
- framework
- variable
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |