SK shieldus Rookies 16기

[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(48일차)

Challenge programmers 2024. 1. 9. 17:39

오늘 학습 주제

1. Web 구조 이해

2. Zeek

 

 

 

Web 구조 이해


- 3-Tier Web System Architecture -

 

     1                              2                                3

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

URI = 프로토콜://주소(또는 IP):포트번호/경로 또는 파일?파라미터=값

 

 
1 FrontServer
(Web Server)
• HTTP request를 받아 HTTP response를 보내는 서버

• Apache, IIS, Nginx 등의 미들웨어가 동작
2 Application Server • 업무처리 서버 (결제, 주문 등을 수행하는 프로그램 실행환경)

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

• PHP나 Perl 실행환경이 필요 시 mod_perl 또는 mod_php 등 설치
3 DB Server • 애플리케이션 실행 시 생성되는 데이터 관리 기능을 가진 미들웨어

• MySQL, PostgresSQL, Oracle Database

 

 

URL(Uniform Resource Locator)

URN(Uniform Resource Name)

 

 

- Proxy Server -

 

서버와 클라이언트간의 요청과 응답을 중계하는 역할로

트래픽 부하, 캐시, 보안 등 여러가지 목적으로 사용

기능
보안 •  실제 서버 또는 클라이언트의 IP를 숨김

•  프록시 서버의 IP만 공개함으로써 해킹 대비 가능
성능 •  캐싱 기능과 트래픽 분산으로 성능 향상을 가져올 수 있음

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

  실제 서버를 호출하지 않고 프록시 서버가 대신 응답을 주어 서버의 자원 사용을 줄임
트래픽 분산 •  일부 프록시 서버는 로드 밸런싱도 제공하여 여러 대의 분산된 서버가 있다면 서버의 트랙픽을 분산시킴

 

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

HTTP Proxy가 있는 경우 작업 지연이 낮음(캐시 서버 역할)

 

Multi-Layer Web Proxy

 

 

- HTTP 메시지 구조 -

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

클라이언트와 서버 사이에 이뤄지는 요청(request) / 응답(response) 프로토콜

현재 사용되는 버전은 1.0, 1.1, 2.0이 있으며

1.1을 가장 많이 사용

 

 

GET에서는 Body가 나오지 않지만

POST에서는 Body가 나온다

 

요청된 URL에 [ / ]만 있으면 index.html을 요청하는 것

 

서버에 동작을 부여하는 HTTP 메소드

서버 보안 점검의 시작 지점

 

HTTP Request: Get

요청 데이터의 인수를 URL로 전송

데이터가 주소 입력란에 표시되어 최소한의 보안도 유지되지 않아 취약

 

HTTP Request: Post

엔티티를 전송하기 위해 사용하며 URL에 요청 데이터를 기록하지 않고 헤더에 데이터를 전송하여

다른 사용자가 링크로 해당 페이지를 볼 수 없음

 

HTTP Request: Put

Post와 유사한 전송 구조로

Request 중에 포함된 엔티티를 Request URI로 지정한 곳에 보존하도록 요구

인증 기능 없이 누구든지 파일 업로드가 가능하여 보안에 취약하며홈페이지 변조에 많이 악용

URI에 지정된 자원을 서버에서 지우는 메소드

원격지 웹 서버에 파일을 삭제하기 위해 사용되며 PUT와는 반대 메소드

 

 

HTTP Request: Head

Get 방식과 동일

서버 측 데이터를 검색하고 요청하는데 사용

Body가 없으며 응답코드와 Head로만 응답하여 Resourece가 수정되었는지 확인

URI 유효성과 리소스 갱신 시간을 확인하는 목적을 사용

(웹 서버 정보확인, 헬스체크, 버전확인, 최종 수정일자 확인 등)

사내망 점검시 점검 대상에 포함

 

HTTP Request: Option

자원에 대한 요구/응답 관계와 관련된 선택 사항 정보를 요청할 때 사용

시스템에서 지원되는 메소드 종류를 확인 가능하며

웹서버에서 지원하는  HTTP 요청방식을 확인하고자 할 때 사용

 

 

웹 서버가 웹브라우저에서 보낸 내용을 받아 이를 다시 웹 브라우저로 되돌려주는 것

웹서버로 가는 네트워크 경로를 체크하는 메소드

 

 

- HTTP Response 코드 -

실행 결과 코드 내용 설명
100번대 정보 전송 HTTP 1.0에서 실험 용도로 사용
200번대 성공 클라이언트의 요구가 성공적으로 수신 및 처리
300번대 리다이렉션 해당 요구 사항을 처리하기 위해 사용자 에이전트가 수행해야 할 추가적인 동작이 있음
400번대 클라이언트 측 에러 클라이언트에 오류가 발생
(ex. 클라이언트가 서버에 보내는 요구 메시지를 완전치 처리 못함)
500번대 서버 측 에러 서버 자체에서 발생한 오류 상황이나 요구 사항을 제대로 처리 불가

 

 

HTTP Response: 2XX 성공 (Success)

 

 

 

HTTP Response: 3XX Redirection

3XX Response는 Request가 정상적으로 처리를 종료하기 위해

브라우저 측에서 특별한 처리를 수행해야 함을 나타냄

HTTP Response: 301 Moved Permanently

Request된 리소스에는 새로운 URI가 부여되어 있기 때문에

새로운 URI를 사용해야 한다는 것을 알림

 

HTTP Response: 302 Found

새로운 URI가 할당되어 있기 때문에 그 URI를 사용하도록 권고

301과 다르게 302는 일시적인 이동

 

 

 

HTTP Response: 4XX 클라이언트 에러

클라이언트가 원인으로 에러가 발생

 

HTTP Response: 400 Bad Request

Request 구문에 오류가 있음을 알림

400 오류 발생 시 request 내용을 재검토하여 다시 송신할 필요가 있음

 

HTTP Response: 401 Unauthorized송신한 request에 인증 정보가 필요함을 알림

 

HTTP Response: 403 Forbidden

403은 요청된 resource의 접근이 거부되었음을 알림

(파일 시스템의 권한이 부여되지 않았거나 엑세스 권한이 제한)

서버 측은 거부의 이유를 Body에 기재하여 알려준다

 

HTTP Response: 404 Not Found

Request한 Resource가 서버에 없음을 알림

 

 

 

HTTP Response: 5XX 서버 에러

서버가 원인으로 에러가 발생

 

HTTP Response: 500 Internal Server ErrorRequest 처리 도중에 오류가 발생했음을 알림웹 애플리케이션에 에러가 발생한 경우나 일시적인 경우도 있음

 

HTTP Response: 503 Service Unavaliable일시적으로 서버가 과부하 상태이거나 점검 중임을 알림

 

 

 

 

Zeek


- Zeek -

네트워크 침입탐지 시스템(NIDS)

네트워크를 모니터링할 수 있는 오픈 소스 프로그램IP 헤더와 TCP 헤더를 분석하여 로그 생성응용 프로토콜의 헤더를 분석하여 로그 생성

 

 

 

 

DNS


- DNS(Domain Name System) -

인터넷에서 사용되는 네트워크 주소를 사람이 이해하기 쉬운 도메인 이름으로 변환하거나

도메인 이름을 네트워크 주소로 변환하는 시스템

일반적으로 2개의 DNS 서버를 운영(기본 DNS, 보조 DNS)

 

 

- DNS 구조 및 프로세스-

 

 

- DNS Name Resolution-

 

사용자가 이해하기 쉬운 도메인 이름을 해당 도메인에 대응하는 IP 주소로 변환하거나

IP 주소를 도메인 이름으로 변환하는 과정

로컬 캐시 검색, 로컬 DNS 서버, 루트 DNS 서버Top-Level DNS 서버 순으로 쿼리를 보내 도메인에 대응하는 IP 주소 검색UDP로 운영

 

 

 

Master Name Server

특정 도메인(내부 서버)에 대한 정보를 관리하면서

해당 도메인에 대한 질의만 응답하는 서버

(내부 서버들의 IP만 기록)

 

Cache Name Server(Local Name Server)

외부 사이트들의 주소들을 등록(Name Resolution이 진행된 사이트들에 한정)

 

Slave Name Server

Master Name Server에 문제 발생 시 사용Master Name Server에 있는 정보를 저장TCP로 네트워크 운영

 

 

- DNS Server 설치 영역 -

DNS 서버는 내부망 사용자가 사용하는 서버와외부망에서 사용하는 서버가 존재

 

 

- DNS 53 UDP/TCP -

DNS는 UDP 또는 TCP를 사용하며포트번호는 53 을 사용응답 메시지의 크기가 512 byte보다 작으면 UDP응답 메시지의 크기가 512 byte보다 크면 TCP대부분의 패킷은 UDP로 사용