1. 파일 포맷 변경
파일 내부의 구분자를 공백에서 , 으로 변경하자. 변경 후 smaba를 통해 윈도우에서 .csv 형식으로 열어서 확인하자.
#!/bin/bash
TXT=/share/output.txt
CSV=/share/output.csv
cat $InputFile | while read ID NAME EMAIL PHONE ADDR
do
echo "$ID,$NAME,$EMAIL,$PHONE,$ADDR" >> $CSV
done
2. 서버 취약점 점검
1) 서버 시스템의 정보 확인
끝나고 해요
2) root 이외의 UID 0번으로 부여된 사용자의 유무 파악.
UID=0 인 사용자가 있을경우 해당 사용자는 root 의 권한을 갖게된다. 해당 사용자들은 서버내 취약성을 띄고 있기에 제어할 수 있는 프로그램을 개발할 수 있어야 한다.
#!/bin/bash
. /root/bin/functions2.sh # WARN, OK 의 색상표현이 담긴 파일
#PASSWD=/etc/passwd # 실제 /etc/passwd 파일로 진행하지 않는다.
PASSWD=/root/bin/passwd
TMP1=/tmp/tmp1
cat << EOF
=======================================================
[U-1] root 이외의 UID가 '0' 금지
=======================================================
1. 판단 근거
[ 양호 ] root 이외의 UID가 '0' 없는 경우
[ 취약 ] root 이외의 UID가 '0' 존재하는 경우
=======================================================
EOF
echo "2. Inspection Results"
awk -F: '$3 == "0" {print $1 "\t : UID = " $3}' $PASSWD >$TMP1
LINECOUNT=$(wc -l < $TMP1)
if [ $LINECOUNT -ge 2 ] ; then
WARN "root 이외의 UID가 '0'인 사용자가 존재하지 않습니다."
else
OK "root 이외의 UID가 '0'인 사용자가 존재합니다."
fi
echo "======================================================="
echo "3. Reference content "
cat $TMP1
echo "======================================================="
3) root 계정 원격 접속 제한.
/etc/securetty 파일이 존재하며, pts 라인이 없는 경우 정상으로 출력한다. 텔넷서비스의 동작유무도 확인할수 있도록 해보자.
#!/bin/bash
. /root/bin/functions2.sh # INFO, WARN, OK 의 색상표현이 담긴 파일
#SECURETTY=/etc/securetty # 원본 파일은 수정하지 않는다.
SECURETTY=/root/bin/securetty
TMP1=/tmp/tmp1
cat << EOF
=======================================================
[U-2] root 계정 원격 접속 제한
=======================================================
1. 판단 근거
[ 양호 ] root 계정이 원격에서 접속할 수 없습니다.
[ 취약 ] root 계정이 원격에서 접속할 수 있습니다.
=======================================================
EOF
echo "2. 점검 결과 "
# (1) telnet service check
TELNET=$(systemctl is-active telnet.socket)
if [ $TELNET = active ] ; then
INFO "telnet 서비스가 on 되어 있습니다."
# (2) /etc/securetty exist check
if [ -f $SECURETTY ] ; then
OK "$SECURETTY 파일이 존재합니다. "
# (3) /etc/securetty pts check
if grep 'pts/' $SECURETTY > TMP1 ; then
WARN "root 계정이 원격에서 접속할 수 있습니다."
else
OK "root 계정이 원격에서 접속할 수 없습니다."
fi
else
INFO "$SECURETTY 파일이 존재하지 않아서 root 사용자 접근 가능합니다. "
fi
else
OK "telnet 서비스가 off 되어 있습니다."
fi
echo "======================================================="
echo "3. 참고 내용 "
echo "============/etc/securetty 파일의 출력내용.==============="
cat $TMP1
echo "======================================================="
'모의해킹 침해대응 과정 > 본 과정' 카테고리의 다른 글
네트워크 이론_2 /day 32-33 (0) | 2021.05.11 |
---|---|
네트워크 이론_1 / day31 (0) | 2021.05.10 |
쉘 프로그래밍(bash)_2 / day30 (0) | 2021.05.07 |
쉘 프로그래밍(bash)_1 / day29 (0) | 2021.05.06 |
쉘 스크립트(bash)_2 / day29 (0) | 2021.05.04 |