혜랑's STORY

[Network Security Study] 3주차 이론 본문

무지성 공부방/Network Security

[Network Security Study] 3주차 이론

hyerang0125 2022. 5. 6. 19:46

도메인 / DNS 서버

1. 도메인(domain)

- ip란, 인터넷에 연결되어 있는 장치(컴퓨터, 스마트폰, 타블릿, 서버 등등)들은 각각의 장치를 식별할 수 있는 주소를 가지고 있는데 이를 ip라고 한다. ex) 115.68.24.88, 192.168.0.1

- ip는 사람이 이해하고 기억하기 어렵기 때문에 이를 위해서 각 ip에 이름을 부여할 수 있게 했는데, 이것을 도메인이라 부른다.

  • opentitorials.org -> 115.68.24.88
  • naver.com -> 220.95.233.172
  • daum.net -> 114.108.157.19

- 도메인의 구성요소; 컴퓨터의 이름과 최상위 도메인으로 구성되어 있다.

  • opentutorials.org
    • opentutorials : 컴퓨터의 이름
    • org : 최상위 도메인 - 비영리단체
  • daum.co.kr
    • daum : 컴퓨터의 이름
    • co : 국가 형태의 최상위 도메인을 의미
    • kr : 대한민국의 NIC에서 관리하는 도메인을 의미

- 도메인은 장치를 식별하기 위한 주소로 URL은 도메인 + 주소로 이루어져있다.

2. DNS 서버(Domain Name Service Server)

- DNS는 사람이 읽을 수 있는 도메인 이름(ex : www.amazom.com)을 머신이 이 읽을 수 있는 IP 주소(ex : 192.0.2.44)로 변환한다.

- 다시 말해 인터넷의 DNS 시스템은 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부 같은 기능을 한다. (DNS 서버는 이름을 IP 주소로 변환하여 도메인 이름을 웹브라우저에 입력할 때 최종 사용자를 어떤 서버에 연결할 것인지를 제어하는데 이때 요청을 쿼리하고 한다.)

- DNS 서비스 유형

  • 신뢰할 수 있는 DNS : 개발자가 퍼블릭 DNS 이름을 관리하는 데 사용하는 업데이트 메커니즘을 제공한다. 이 메커니즘을 통해 DNS 시스템은 DNS 쿼리에 응답하고 도메인 이름을 IP 주소로 변환한다. 신뢰할 수 있는 DNS는 도메인에 대해 최종 권한이 있으며 재귀적 DNS 서버에 IP 주소 정보를 제공한다.
  • 재귀적 DNS : 클라이언트는 신뢰할 수 있는 DNS 서비스에 직접 쿼리를 수행하지 않고 해석기 또는 재귀적 DNS 서비스라고 알려진 다른 유형의 DNS 서비스에 연결하는 경우가 일반적이다. DNS 레코드를 소유하고 있지 않지만 사용자를 대신해서 DNS 절보를 가져올 수 있는 중간자 역할을 한다.

 

쿠키와 세션

1. 쿠키(Cookie)

- HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다. 

- HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있다.

- 특징

  • 이름, 값, 만료일(저장기간), 경로 정보로 구성되어 있다.
  • 클라이언트에 총 300개의 쿠키를 저장할 수 있다.
  • 하나의 도메인 당 20개의 쿠키를 가질 수 있다.
  • 하나의 쿠키는 4KB(=4096byte)까지 저장 가능하다.

- 동작 순서

  1. 클라이언트가 페이지를 요청한다.(사용자가 웹사이트에 접근)
  2. 웹 서버는 쿠키를 생성한다.
  3. 생성한 쿠키에 정보를 담아 HTTP 화면을 돌려줄 떄, 같이 클라이언트에게 돌려준다.
  4. 넘겨받은 쿠키는 클라이언트가 가지고 있다가(로컬 PC에 저장) 다시 서버에 요청할 때 요청과 함께 쿠키를 전송한다.
  5. 동일 사이트 재방문 시 클라이언트의 PC에 해당 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송한다.

2. 세션(Session)

- 일정 시간 동안 같은 브라우저로부터 들어오는 일련의 요구를 하나의 상태를 유지하는 기술

- 이때 일정 시간이란 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 말한다.

- 즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라 한다.

- 특징

  • 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장한다.
  • 웹 서버의 저장되는 쿠키(= 세션 쿠키)
  • 브라우저를 닫거나 서버에서 세션을 삭제했을 때만 삭제되므로 쿠키보다 비교적 보안이 좋다.
  • 저장 데이터에 제한이 없다.
  • 각 클라이언트에 고유 세션 아이디를 부여하고, 세션 아이디로 클라이언트를 구분해 각 요구에 맞는 서비스를 제공한다.

- 동작 순서

  1. 클라이언트가 페이지에 요청한다.
  2. 서버는 접근한 클라이언트의 Request-Header 필드인 Cookie를 확인하여 클라이언트가 해당 session-id를 보냈는지 확인한다.
  3. session-id가 존재하지 않는다면 서버는 session-id를 생성해 클라이언트에게 돌려준다.
  4. 서버에서 클라이언트로 돌려준 session-id를 사용해 서버에 저장한다.
  5. 클라이언트는 재접속시 이 쿠키를 이용해 session-id 값을 서버에 전달한다.

쿠키와 세션의 차이점

- 쿠키는 서버의 자원을 전혀 사용하지 않으며, 세션은 서버의 자원을 사용한다.

- 쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 request에서 스니핑 당할 우려가 있어 보안에 취약하지만, 세션은 쿠키를 이용해서 session-id만 저장하고 그것으로 구분하여 서버에서 처리하기 때문에 보안성이 높다.

- 쿠키는 쿠키에 정보가 담겨있기 떄문에 서버에 요청 시 속도가 빠르고, 세션은 정보가 서버에 있기 때문에 처리가 요구되어 비교적 느리다.

 

URI / URL / URN

1. URI(Uniform Resource Identifier)

- 인터넷에 있는 자원을 나타내는 유일한 주소이다.

- URI의 하위 개념으로 URL과 URN이 있다. 

2. URL(Uniform REsource Locator)

- 네트워크 상에서 리소스(웹 페이지, 이미지, 동영상 등의 파일)가 위치한 정보를 나타낸다.

- HTTP 프로토콜 뿐만아니라 FRP, SMTP 등 다른 프로토콜에서도 사용할 수 있다.

- 웹 상의 주소를 나타내는 문자열이기 때문에 더 효율적으로 리소스에 접근하기 위해 클린한 URL 작성을 위한 방법론이다.

- 구조

scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
  • scheme: 사용할 프로토콜을 의미하며 웹에서는 http 또는 https를 사용한다.
  • user, password: 서버에 있는 데이터에 접근하기 위한 사용자의 이름과 비밀번호
  • host, port: 접근할 서버의 호스트명과 포트번호
  • path: 접근할 서버의 경로에 대한 상세 정보
  • query: 접근할 대상에 전달하는 추가적인 파라미터
  • fragment: 메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보

3. URN(Uniform Resource Name)

- URI의 포맷 중 하나로 이름으로 리소스를 특정하는 URI이다.

- http와 같은 프로토콜을 제외하고 리소스의 name을 가리키는데 사용한다.

- URN에는 리소스 접근 방법과 웹 상의 위치가 표기되지 않는다. (실제 자원을 찾기 위해서는 URN을 URL로 변환하여 사용)

URL과 URN의 차이점

  • URL은 어떻게 리소스를 얻을 것이고 어디에서 가져와야하는지 명시하는 URI이다.
  • URN은 리소스를 어떻게 접근할 것인지 명시하지 않고 경로와 리소스 자체를 특정하는 것을 목표로하는 URI이다.

 

FTP / HTTP / HTTPS

1. FTP

- 클라이언트와 서버칸에 컴퓨터가 파일을 전송하기 위해 사용되는 프로토콜

  • FTP 클라이언트 : 서버 모델 아키텍처를 기반으로 하며 클라이언트와 서버간에 별도의 제어 및 데이터 연결을 사용
  • FTP 사용자 : 일반적으로 사용자 이름과 암호의 형태로 된 텍스트 로그인 프로토콜을 사용하여 자신을 인증할 수 있지만 서버가 허용하도록 구성되어 있으면 익명으로 연결할 수 있다.

- 동작 방식

-> FTP 서비스를 제공하는 서버와 접속하는 클라이언트 사이에 두 개의 연결이 생성된다. 하나는 데이터 전송을 제어하기 위한 신호를 주고 받기 위한 연결(네트워크 21번 포트), 다른 하나는 실제 데이터 전송에 사용된다.(네트워크 20번 포트)

-> FTP 서버에 접속할 때 입력하는 사용자 계정 및 암호 등의 저보나 파일 전송 명령 및 결과 등은 데이터 제어용 연결에서 이후 실제 파일 송수신 작업은 데이터 전송 연결에서 처리한다.

-> FTP 클라이언트 프로그램은 여러 파일을 연속으로 송수신해야 하기에 서버와의 지속적인 응답 메시지 전송을 통해 연결 세션을 유지한다.

2. HTTP

- 클라이언트/서버 모델에서 클라이언트는 서버에 URI를 통해 자원을 요청하고 서버는 클라이언트 요청한 자원에 응답하는 프로토콜로 작동한다.

- 일반적으로 클라이언트라고 하면 보통 웹 브라우저이고 웹 사이트를 호스팅하는 컴퓨터에서 실행되는 응용 프로그램이 서버가 된다.

- 클라이언트는 HTTP 요청 메시지를 서버에 전송하면, 서버는 HTML과 같은 자원을 제공하는 방식으로 클라이언트에 응답하게 된다. 응답에는 요청에 대한 완료 상태 정보가 포함되며 메시지 본문에 요청된 내용이 포함될 수도 있다.

- 요청 메소드

  • GET: URI에 해당하는 자료 전송을 요청한다.
  • HEAD: GET과 같은 요청이지만 자료에 대한 정보만을 받는다.
  • POST: 서버에 정보를 제출한다.
  • PUT: POST처럼 서버에 정보를 제출하는 것은 같지만 주로 리소스의 정보를 갱신할 때 사용한다.
  • DELETE: 웹 리소스를 제거한다.
  • OPTION: 식별된 리소스에서 사용 가능한 요청 메소드가 무엇이 있는지 질의한다.

3. HTTPS

- HTTP는 평문으로 통신하기 떄문에 도청의 위험이 있고 통신 상대를 확인하지 않기 때문에 위장의 위험이 있다. 또한 완전성을 증명할 수없어 변조가 가능한데 이를 보완하기 위해 등장한 것이 HTTPS이다.

- HTTPS는 기존 HTTP 통신을 하는 소켓 부분을 SSL로 대체한 것이다.

- 클라이언트 요청 시 SSL에 필요한 통신이 추가되며 암호화 복호화 계싼을 하기 때문에 서버와 클라이언트는 리소스를 추가적으로 소비한다. 따라서 성능이 HTTP보다 떨어져 주로 보안이 필요한 부분에서 사용된다.