SK shieldus Rookies/클라우드 기반 시스템 운영ㆍ구축 실무

Web 구조, HTTP 메시지 구조 (미완)

su. 2024. 1. 9. 13:57
[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합보안 과정
클라우드기반 시스템 운영 구축 실무 #05

 

학습 내용

1)  3-Tier 웹 시스템 구조
2)  Proxy Server
3)  HTTP 메시지 구조

 

 

 

실습 사전 준비

-  '03.시스템 네트워크 보안'에서 사용한 Kali, Metasploitable 가상머신

-  각각 192.168.10.50 / 192.168.10.60으로 세팅한다

 

[Kali]

Network Connections > Wired connection 1 > IPv4 Settings

Method: Manual

Address: 192.168.10.50 / Netmask: 24 / Gateway: 192.168.10.2

 

[Metasploitable]

sudo su -

msfadmin

cd /etc/network

ls

nano interfaces

192.168.10.20 ➞ 192.168.10.60 으로 수정

 

# 서버 내렸다 올리기

ifdown eth0

ifup eth0

ifconfig

 

 

 

1)  3-Tier 웹 시스템 구조

  웹 서버 (Web Server/Front Server)

    •  가장 앞에서 HTTP request를 받아 HTTP response를 보내는 서버
    •  Apache, IIS, Nginx 등의 미들웨어가 동작한다

  웹 애플리케이션 서버 (WAS, Web Application Server)

    •  웹 서버와 연동하여 사용자 컴퓨터나 장치에 웹 애플리케이션을 실행할 수 있는 환경 제공

    •  사용자 요청에 따라 다른, 동적 환경을 구성한다

    •  업무 처리 서버 (결제, 주문 등을 수행하는 프로그램 실행환경)

    •  Apache Tomcat, WebSphere Application 미들웨어로 구현

    •  PHP나 Perl 실행환경 필요 시 mod_perl 또는 mod_php 등을 설치

  데이터베이스 서버 (DB Server)

    •  애플리케이션 실행 시 생성되는 데이터를 관리하는 미들웨어
    •  MySQL, PostgresSQL, Oracle Database

 

❶                                                                   ❷                ❸ DB(get) 질의 조건

http://www.google.co.kr:80/sport/guest.php?who=anony&type=human

(1) URL                                       (2) 요청 URI

[프로토콜]://[host주소(or IP)]:[Port번호]/[경로or파일]?[파라미터=값]

 

URL(Uniform Resource Locator)

URI(Uniform Resource Name)

:  둘 다 전체 주소를 나타내기도 한다.

 

 

2)  Proxy Server

  :  서버와 클라이언트 간의 요청과 응답을 중계하는 역할을 수행하는 서버(프로그램)

❶  보안 목적

    -  클라이언트 또는 서버의 실제 IP를 숨긴다 (Forward Proxy / Reverse Proxy)

        *  접근 차단된 사이트 우회 접속 가능

        *  프록시 서버의 IP만 공개함으로써 해킹 대비 가능

❷  성능 목적

    -  캐싱 기능과 트래픽 분산으로 성능 향상을 가져올 수 있다

        캐싱 기능 : 자주 사용되는 동일한 요청을 캐싱하여 재활용하는 방식

        *  트래픽 분산: 일부 프록시 서버는 로드 밴런싱도 제공,

                                  여러 대의 서버가 있다면 서버의 트래픽을 분산시킨다

    -  실제 서버를 호출하지 않고 프록시 서버가 대신 응답을 주어 서버의 자원 사용을 줄인다

❸  HTTP 메시지 구조 파악 목적

    -  burpsuite

 

❶  보안 목적

•  Forward Proxy

 

  ①  Client의 안전을 보장

     -  Client는 Proxy 서버를 통해 서비스 제공 서버를 호출하므로

     -  서비스 제공 서버는 Client의 IP 주소를 알 수 없다.

  ②  접근 차단된 사이트에 우회 접속

     -  국가/지역별 사용하는 IP가 다르다.

     -  차단된 A 국가 IP로 접속하려면,

          그 사이트로 접근이 허가된 B 국가의 Proxy 서버를 통해 우회 접속할 수 있다.

     -  응답이 B 국가로부터 오니 방화벽이 차단하지 않는다.

 

•  Reverse Proxy

 

내부 서버의 안전을 보장

     -  Client는 Proxy 서버를 호출해 서비스 제공 서버에 접속하므로

     -  Client는 서비스 제공 서버의 IP 주소를 알 수 없다.

 

❷  성능 목적

•  HTTP Proxy가 없는 경우 작업 지연 발생

•  HTTP Proxy가 있는 경우 작업 지연이 적음

 

❸  HTTP 메시지 구조 파악 목적

(실습)  가상머신에서 proxy로 웹 구조 파악하기

 

[Kali]

시작메뉴 > 03. > burpsuite > Proxy > Options

•  Proxy Listeners 설정

  -  Specific address: 192.168.10.50

  -  bind to port: 8080

•  Intercept Client Requests / Intercept Server Responses 설정

 

 

[Metasploitable] - Client

①  프록시 사용 설정

Firefox > 메뉴 > Settings > Network Settings

•  Manual proxy configuration

  -  192.168.10.50 / port: 8080

 

 

②  http://192.168.10.60 접속

 

[Kali]

burpsuite에 기록이 남는 것 확인 - http 패킷 내용을 모두 볼 수 있다

 

 

 

3)  HTTP 메시지 구조

❶  HTTP Protocol

❷  HTTP 메시지

❸  HTTP Reqest Method

❹  HTTP Response 코드

 

❶  HTTP Protocol

•  WWW 상에서 HTML 문서를 주고받는 응용 계층 프로토콜

•  클라이언트와 서버 사이에 이뤄지는 요청(request) / 응답 (response) 프로토콜
•  TCP 계열로 80번 포트 사용
•  웹에서 텍스트, 그래픽, 애니메이션을 보거나 사운드 재생 기능
•  무상태(stateless) 프로토콜

    -  클라이언트 상태를 보존하지 않으며 

    -  이전 요청과 무관하게  각각의 요청을 독립적인 트랜잭션으로 취급한다

•  현재 인터넷에서 사용되는 HTTP 버전은 HTTP/1.0, HTTP/1.1, HTTP/2.0
    -  1997년 1월에 공개된 HTTP/1.1 버전이 현재 가장 많이 사용된다

웹 문서 전송 시 전송 속도가 텍스트는 빠르고, 이미지는 느리다.
따라서 서버는 텍스트를 먼저 전송하고, 그 다음 이미지를 전송하게 된다.
이 때 HTTP 1.1은 텍스트/이미지에 대한 연결을 따로 설정하지 않고 연속해서 전송한다.

 

 

❷  HTTP 메시지

①  Request 메시지   : Client ➞ Server 요청

②  Response 메시지: Server Client 응답

HTTP Request HTTP Response
요청 라인 전송 함수 요청 URL HTTP 버전 상태 라인 HTTP 버전 응답 코드 처리 상태
GET / HTTP/1.1 HTTP/1.1 200 OK
요청 헤더 Client PC 웹 브라우저 정보, 시스템 정보 응답 헤더 응답 서버의 정보
공백 라인   공백 라인  
메시지 본문 전송함수에 따라 있거나 없음
GET: X, POST: O
메시지 본문 응답 코드에 따라 웹페이지 또는 정보

 

 

①  HTTP Request 메시지

 

요청 헤더: Client PC 웹 브라우저 정보, 시스템 정보

 

Accept MIME-type으로 Client가 이해할 수 있는 Content-Type을 나타낸다
Accept-Encoding Client가 이해할 수 있는 컨텐츠 인코딩을 나타낸다
Cookie 이전 상태가 있는 경우, 서버가 클라이언트의 상태를 기억하게 해준다
Host 요청 전송 대상 서버의 호스트 이름 (+포트 번호)을 지정한다
Connection 네트워크 연결 관리에 대한 지시 (keep-alive: 연결 유지)
Accept-Language Client가 이해할 수 있는 언어를 나타낸다  
User-Agent 브라우저나 기타 클라이언트의 소프트웨어 정보
 

*  MIME-type (Multipurpose Internet Mail Extensions)

    구조: [type] / [subtype]

      ex) text/html, text/css, text/javascript, text/plain, image/jpeg

            application/zip, application/x-dosexec(실행파일)

            multipart/form-data(브라우저에서 서버로 완성된 HTML Form을 전송 시)

 

 

②  HTTP Response 메시지

 

 

 

 

❸  HTTP Reqest Method

 

 

 

 

❹  HTTP Response 코드