nc (NetCat)


# nc -w [TIMEOUT_SEC] -v [HOST] [PORT] </dev/null; echo $?


or


Just check the HOST's PORT opened

# nc -vz [HOST] [PORT]


Result examples on RHEL 6


Success:

Connection to [HOST] [PORT] port [PROTOCOL] succeeded!

0



Failure:

nc: connect to [HOST] port [PORT] ([PROTOCOL]) timed out: Operation now in progress

1


RHEL 6 (nc):


# yum install nc


RHEL 7 (nmap-ncat):


# yum install nmap-ncat

'System Engineering > Network' 카테고리의 다른 글

Tool: MRTG  (0) 2018.08.28
Protocol: SNMP  (0) 2018.08.21
HTTP Header Sample Analysis - www.ebay.com  (0) 2018.07.24
HTTP Header Sample Analysis - www.amazon.com  (0) 2018.07.24
HTTP Header Sample Analysis - Google.com  (0) 2018.07.24

MRTG (Multi Router Traffic Grapher)


ref: http://dpnm.postech.ac.kr/MRTG/mrtg-intro.html


MRTG에 대한 이미지 검색결과


SNMP agent    -->    Manager 로 보내는 자료를 그래픽으로 보여주는 TOOL

Network-link에서 트래픽 부하 감시

WEB UI

Perl, C 기반

설정, 확장 기능이 좋음

에러 패킷 수, 시스템 로드, 모뎀 상태 등 SNMP 변수 쉽게 모니터링


로그 파일이 하디드스크의 용량을 많이 차지 하지 않도록 통합 알고리즘 사용(consolidation)

각 인터페이스 정보를 4단계로 지정. 최근 33시간, 주 , 월, 년 간의 정보

semi-automatic configuration tool


SNMP를 이용하여 기본적인 시스템과 인터페이스 정보 이용

CFG 파일을 사용하여 configuration file 설정

HTML 문서 형식으로 관리가 쉬움

로그 영역: 1200 item = 75MB


How to use


모니터링 대상 라우터에 대한 config file 생성하여 html file에 link 시켜 사용


config file 구성 > mrtg.cfg 파일에 WorkDir 추가 > mrtg 컴파일 > WebUI 구축 > crontab에 mrtg 작업 등록

SNMP (Simple Network Management Protocol)

네트워크 장비 간 네트워크 관리 및 전송을 위한 프로토콜. UDP / IP (161번 포트) 상에서 동작하는 비교적 단순한 형태의 메시지 교환형 네트워크 관리 프로토콜이다. 구조가 간단하며, 쉽게 관리 적용이 가능. 정보 지향적 동작 구조로, 특정 정보 변수에 대한 단순한 요청/응답 메커니즘 (GET / SET)을 사용한다. Manager - Agent 형태로 동작한다.



2개의 다른 정보 구조 프로토콜과 함께 사용: SMI & MIB

-       SMI (Structure of Management Information)
관리 정보 구조. 변수 작명, 변수 유형, 객체 및 값들을 부호화 등의 규칙. 장비마다 다르게 표현될 수 있는 MIB 객체의 표현 동질성을 유지하는 표준

-       MIB (Management Information Base)
관리 특성을 묘사하는 변수 객체들의 모음



SNMP 장비 구분

Manager (Network Management System)

호스트 등의 관리 시스템. 관리용 메시지를 에이전트에 요청 및 모니터링. Manager S/W, HP OpenView, MRTG, TWSNMP

Agent (Managed Device)

허브, 라우터, 스위치, 브리지, 호스트 등 관리되는 장비. Agent S/W, MIB. 자비 동작에 필요한 변수, 상태 정보 등을 데이터베이스화 하여 유지



SNMP 동작 방식

ManagerAgent에 관리 정보를 요청, agent가 생산하는 MIB 데이터를 통해 관리 역할 수행. MIB에서 Get, Set 등의 명령을 통해 상호 데이터 교환. OSI ASN.1/BER 문법체계를 따른다.



www.ebay.com Chrome 샘플


-       HTTP 1.1 버전으로 www.ebay.com URLGET 요청을 보낸다.

-       커넥션은 keep-alive로 유지하길 원한다.

-       상향된 프로토콜을 사용하는 서버일 경우, 프로토콜을 업그레이드한다. HTTP 요청 > HTTPS 응답

-       클라이언트 브라우저 정보를 보내고, 어떤 형식의 MIME Type을 가진 컨텐츠를 선호하는지 가중치와 함께 명시한다.

-       클라이언트에서 원하는 데이터 인코딩 알고리즘과, 언어도 명시한다.


-       HTTP/1.1 버전을 사용하며, 해당 리소스의 위치가 변경되었음을 알리는 상태코드 301을 반환했다.

-       클라이언트에서 요청한 리소스는 응답 시 스니핑이 불가능하다.

-       XSS 공격 방지를 위해 브라우저 내장 필터를 사용한다.

-       해당 URL 내의 프레임은 오리진이 같을 경우에만 허용한다.

-       리디렉션 URLhttps://www.ebay.com/

-       리디렉션 응답 메시지로 컨텐츠를 가지고 있지 않다.

-       HTTP 1.1 connectionkeep-alive를 기본으로 설정되어 있으며, 일정 시간 동안 요청이 없을 경우, 서버에서 일방적으로 커넥션을 종료한다.

'System Engineering > Network' 카테고리의 다른 글

Tool: MRTG  (0) 2018.08.28
Protocol: SNMP  (0) 2018.08.21
HTTP Header Sample Analysis - www.amazon.com  (0) 2018.07.24
HTTP Header Sample Analysis - Google.com  (0) 2018.07.24
HTTP - 9. CORS  (0) 2018.07.24

Internet Explorer - www.amazon.com 샘플

 

-       Cache-control: no-cache는 캐시된 사본을 사용자에게 보이기 전에 서버에 재검증 요청

-       Pragma: HTTP/1.0 ~ 1.1 버전의 cache-control 헤더가 생기기 이전에 사용하던 헤더이다. No-cache 필드 인자는 cache-control: no-cache와 동일.

-       Server 헤더는 서버의 소프트웨어적인 정보를 담고 있지만, 보안 및 기타 이유로 이를 감추고 싶을 때, xmlhttp Connector 설정에 server=”” 형태로 문자열 대체하여 표시하는 것이 가능하다.

-       Set-cookie: session-id는 현재 세션의 사용자를 식별하기 위해 사용되며, URI 형식으로 클라이언트에서 생성된다. 응답 시, 요청과 같은 값을 반환해야 한다.

-       Strict-transport-security: includeSubDomains는 현재 도메인의 서브 도메인도 정책 적용을 의미하고, preload(HSTS HTTPS로 제공되면서 크롬에 하드 코딩된) 사전 로드 사이트 목록에 포함하는 것으로 간주하는 지시자이다.

-       Vary: 요청 사용자의 특징에 따라 서로 다른 응답을 위한 헤더. 동일 URL도 명시 조건에 따라 다른 종류의 컨텐츠를 캐싱하고 제공한다. User-agent를 감지해서 해당 형식에 맞게 제공. (ex. 모바일, 데스크탑)

-       Via: 해당 메시지가 거쳐온 중개자를 나열하며, 프록시에 의해 추가된다. 1.1 HTTP 프로토콜 버전, CloudFront 호스트를 거쳐 왔음을 의미.

-       X-amz-cf-id: CloudFront에서 추가된 헤더. 오리진에 전달 전 요청을 식별하기 위해 고유한 암호화 문자열 추가.

-       X-cache: CDN에서 추가된 헤더로, 비표준 헤더. CloudFront에 캐시된 컨텐츠가 없었음을 의미.

-       X-content-type-options: nosniff는 요청된 컨텐츠 타입(MINE type)을 브라우저에서 렌더링 시 강제하는 옵션

-       X-ua-compatible: IE=edge는 익스플로러 호환성보기, 현재 설정된 값은 최신 모드로, 지정된 DOCTYPE에 상관없이 IE8 이상 버전에서 항상 최신 표준 모드로 렌더링 함을 의미.         


'System Engineering > Network' 카테고리의 다른 글

Protocol: SNMP  (0) 2018.08.21
HTTP Header Sample Analysis - www.ebay.com  (0) 2018.07.24
HTTP Header Sample Analysis - Google.com  (0) 2018.07.24
HTTP - 9. CORS  (0) 2018.07.24
HTTP - 8. Cache  (0) 2018.07.24

HTTP Response 헤더 샘플

크롬 https://www.google.com


-       alt-svc: alternative service. 해당 리소스가 다른 프로토콜/호스트/포트 조합으로 접근이 가능할 때 다른 서비스가 가능하다고 알림.

n  대체 서비스가 새로 생성된 이후의 max-age30(2592000)이고 기본값은 24시간이다.

n  현재 서버가 QUIC 프로토콜를 지원하며, 클라이언트에서 QUIC 통신이 가능하면 UDP:443 포트를 사용하라고 알림. v 파라미터는 quic 지원 버전을 의미

-       Cache-control: private는 단일 사용자를 위한 응답으로서, 캐시가 공유 캐시에 저장되지 않고, 사설 캐시에서는 저장이 가능하다는 의미. max-age보다 오래된 캐시는 보내지 않으며 0일 경우 항상 새로 요청한다.

-       Content-encoding: 본문의 미디어 타입에 적용되는 추가적인 인코딩을 의미. brBrotli 알고리즘

-       Content-Type: 본문의 컨텐츠 타입을 MIME 형식으로 나타낸 것. 텍스트 형식의 html 문서 타입을 나타내고 있고, 문자 인코딩은 UTF-8을 사용한다.

-       date: 메시지가 생성된 날짜와 시간

-       expires: 응답 메시지가 최신이 아니라고 판단할 날짜와 시간을 표시. Cache-control 헤더가 메시지에 포함되어 있으면 expires 헤더는 무시된다. 0, -1 등 유효한 날짜 표시형식이 아닐경우, 만료된 것으로 판단.

-       Server: 요청을 처리하는 오리진 서버의 소프트웨어 정보. Gws는 구글 웹 서버

-       Set-cookie: 서버에서 클라이언트로 보내는 쿠키 정보. -값 쌍으로 구분한다. 1p_jar는 구글 광고 쿠키로, 사용자 추적 및 광고 타게팅 목적의 쿠키이다.

-       Status: 요청에 대한 상태코드로, 200은 요청이 정상적으로 작동했음을 의미

-       Strict-transport-security: max-age 만큼 설정된 시간동안 해당 응답을 받은 사이트에 대해서 클라언트는 https 접속을 강제한다.

-       X-frame-options: clickjacking 문제를 해결하기 위해 사용되며, 페이지를 표시하는 프레임(iframe, frame)을 어떻게 사용할 것인가에 대해 명시. Same origin은 페이지에 프레임을 사용할 수 있지만, 같은 원본 서버의 페이지만 가능하다는 뜻.

-       X-xss-protection: xss 공격 시도 시 브라우저의 내장 필터를 통해 방지 하는 헤더. Cross site scriptingHTTP 관련 취약점 공격으로, 페이지, 메일 등에 악성 스크립트를 삽입하여 비정상적으로 페이지를 로드해, 사용자를 방해하거나 쿠키, 개인 정보 등을 특정 사이트로 전송하는 방법.



크롬 브라우저 HTTP Header 샘플 - https://www.google.com


-       콜론으로 시작하는 헤더들은 HTTP/2에서 사용되는 가상 헤더(Pseudo or Virtual)이다. authority는 해당 URI의 권한을 가진 도메인을 명시한다.
요청 메소드는 GET, 경로는 ‘/’, https 프로토콜을 사용한다.

-       accept 요청 헤더는 클라이언트가 사용 가능한 MIME Type들이 나열되며, 서버로부터 받을 Content-Type 협상에 사용된다.

-       ‘;’으로 구분된 q 값들은, quality value라 하며, 우선순위 가중치를 숫자로 명시하지만 절대적인 값은 아니다.

-       accept-encoding: 클라이언트가 이해 가능한 컨텐츠의 압축 알고리즘.

-       cache-control: 캐시 제어를 위한 헤더. max-age에 지정된 시간보다 오래된 캐시는 보내지 않고, 0으로 지정 시 항상 새로 요청한다. no-cache의 경우 캐시를 하지 않고 모든 것을 새로 요청한다.

-       cookie: 서버로부터 이전에 저장된 쿠키 정보들을 나열. 세션과 관련된 정보들로 구성. NID는 브라우저에서 사용되는 고유 ID 환경설정 쿠키로 사용자 관련 정보를 기억하기 위해 사용한다.

-       upgrade-insecure-requests: 보안 URL(HTTPS)이 아닌 일반 HTTP 요청을 HTTPS를 통해 응답을 받은 것처럼 처리하도록 설정하는 헤더

-       user-agent: 클라이언트의 소프트웨어, 운영체제 등의 정보 명시.
HTTP
요청 헤더에서 user-agent의 항목이 Mozilla로 시작하고 비슷하게 나열되는 이유는 초기 웹에서 브라우저마다 컨텐츠를 다르게 다루었기 때문에 이를 방지하기 위해 스푸핑/클로킹을 하는 것이다.

-       x-client-data: googleweblight.com에서 사용되는 실험용 헤더


'System Engineering > Network' 카테고리의 다른 글

HTTP Header Sample Analysis - www.ebay.com  (0) 2018.07.24
HTTP Header Sample Analysis - www.amazon.com  (0) 2018.07.24
HTTP - 9. CORS  (0) 2018.07.24
HTTP - 8. Cache  (0) 2018.07.24
HTTP - 7. Authentication  (0) 2018.07.24

Cross-Origin Resource Sharing (CORS)

한 도메인에서 로드되어 다른 도메인에 있는 리소스와 상호 작용하는 클라이언트 웹 어플리케이션에 대한 방법을 정의한 표준

HTTP 요청은 기본적으로 Cross-Site HTTP Request가 가능하다.

-       Cross-Site HTTP Request
<img>
태그로 다른 도메인의 파일을 가져오거나, <link> 태그로 다른 도메인의 css를 가져오거나, <script> 태그로 다른 도메인의 자바스크립트 라이브러리를 가져오는 것이 가능하다.

실행 중인 웹 상에서 다른 서버의 자원에 접근할 권한을 갖도록 브라우저에 알리기 위해 추가 HTTP 헤더를 사용하는 방식. 뉴스 기사 사이트에 유튜브 영상이 업로드 되어있어 해당 동영상 컨텐츠를 받아와야 하는 경우 사용된다. CORS 헤더를 포함하지 않으면 보안 상의 이유(Same origin policy: 하나의 origin에서 로드된 문서나 스크립트가 다른 출처 자원과 상호작용하지 못하도록 제약)로 요청을 제한한다.

브라우저가 요청 내용을 분석하여 4가지 방식 중 하나로 서버에 요청한다.

-       Simple Request: 다음 3가지 조건을 모두 만족하는 경우

n  GET, HEAD, POST 중 하나의 메소드 사용

n  POST일 경우 Content-Type이 다음 중 하나 사용

u  application/x-www-form-urlencoded (데이터 파일 전송 시 사용되는 타입)

u  multipart/form-data (바이너리 데이터 전송 시 사용되는 타입)

u  text/plain (일반 텍스트 데이터, 미지정 시 디폴트)

n  커스텀 헤더 없음




 

-       Preflight Request: Simple Request 조건에 해당하지 않으면 브라우저가 요청하는 방식. OPTIONS 메소드를 먼저 사용하여 실제(actual) 요청에 사용할 메소드를 결정하고 안전하게 전송되도록 한다

n  GET, HEAD, POST 외의 다른 방식으로 요청 가능

n  다른 Content-Type 가능

n  커스텀 헤더 사용 가능

예비 요청으로, 예비 요청/응답 후 본 요청/응답(Actual)한다.

-       Request with Credential: HTTP CookieHTTP Authentication 정보를 인식하는 요청
요청 시 Credential 요청을 보내며, 서버는 헤더에 Access-Control-Allow-Credentials: true를 포함한다. Access-Control-Allow-Origin 헤더에는 구체적인 도메인이 온다.

-       Request without Credential: CORS 요청은 기본적으로 Non-Credential 요청이다.

-       CORS 관련 Response 헤더

Access-Control-Allow-Origin

지정된 도메인의 요청만 서버 리소스에 접근 가능

Access-Control-Expose-Headers

브라우저 측에서 접근 가능하게 허용

Access-Control-Max-Age

Preflight request 결과가 캐쉬에 남아 있는 시간 초

Access-Control-Allow-Credentials

Request with credential 방식 설정

Access-Control-Allow-Methods

Preflight request에 대한 응답으로, 리소스 접근 가능 메소드 지정

Access-Control-Allow-Headers

Preflight request에 대한 응답으로, Actual request에 사용 가능한 헤더 지정

 

-       CORS 관련 Request 헤더

Origin

Cross-site 요청 도메인 URI, 반드시 포함. 포트까지만 명시한다.

Access-Control-Request-Method

Preflight request Actual request에서 사용할 메소드

Access-Control-Request-Headers

Preflight request Actual request에서 어떤 헤더를 사용할지 지정

 


'System Engineering > Network' 카테고리의 다른 글

HTTP Header Sample Analysis - www.amazon.com  (0) 2018.07.24
HTTP Header Sample Analysis - Google.com  (0) 2018.07.24
HTTP - 8. Cache  (0) 2018.07.24
HTTP - 7. Authentication  (0) 2018.07.24
HTTP - 6. Proxy  (0) 2018.07.24

Cache

캐시는 네트워크 자원 낭비, 대역폭, 로드 밸런스, 거리에 따른 지연 등 웹 컨텐츠를 보다 효율적으로 운영하기 위해 사용되는 장치이다. HTTP 요청 메시지를 받아 메시지를 파싱하고 로컬 사본이 있는지 검색한다. 사본을 찾았을 경우에는 캐시된 메시지의 헤더 값을 참조하여 조건에 맞는 캐시 리소스인지 확인하고, 클라이언트에 응답한다. 마지막으로 로그 파일과 캐시 사용에 대한 통계를 갱신한다. 캐시에는 모든 사본이 존재하는 것은 아니기 때문에, cache hit, cache miss로 나뉜다.

원본 서버 콘텐츠가 변경될 수 있기 때문에, GET If-Modified-Since 헤더 등을 사용하여 오리진 서버에 재검사를 수행한다.

l  Revalidation hit: 서버로부터 304 Not Modified를 응답 받아 최신임을 확인

l  Revalidation miss: 서버로부터 콘텐츠와 200 OK 응답을 받은 경우로, 사본이 최신이 아님을 확인

l  Entity delete: 리소스가 삭제되었다면, 404 Not Found 응답을 받고, 캐시는 사본을 삭제한다.

또한 캐시 효율을 가늠하는 기준으로 캐시 적중률과 바이트 적중률을 사용할 수 있다. %로 표시되며 100에 가까울수록 캐시 효율이 좋다고 본다. 특히 바이트 단위는 좀더 디테일한 적중률을 알 수 있다. 클라이언트에서 응답 메시지가 캐시 된 것인지 아닌지 판별하는 방법은, 응답 메시지의 Age 헤더나 Date 헤더를 확인하는 방법이 있다.

RFC 2227에서 HTTP를 위한 간단한 cache-hit 측정과 사용량 제한을 정의한다. HTTP에 특정 URL에 대한 cache-hit 횟수를 정기적으로 서버에 돌려주는 Meter 헤더를 추가한다. 또한, 서버에 보고 전까지 캐시에 리소스 제공 횟수나, 처리시간을 제어할 수 있다.

-       Private cache
개인 전용 캐시로 그리 큰 공간을 필요로 하지 않기 때문에 브라우저에 내장되어 있다. 디스크와 메모리에 캐시해 놓고, 사용자가 캐시 사이즈와 설정을 수정 가능하게 허용한다.

-       Public cache (Proxy cache)
공유된 프록시 서버로, 로컬 캐시에서 문서를 제공하거나, 사용자 입장에서 서버에 접근한다. 모든 요청 중에 중복된 요청이 있다면 그만큼 트래픽을 줄일 수 있다.

-       프록시 캐시 계층 구성: 클라이언트들 주변에는 작은 레벨 1 캐시를 위치시키고, 상위 네트워크 위쪽에 레벨 2 캐시를 위치시키는 방식이다. , 캐시 계층이 깊어지면 프록시 연쇄가 길어지고, 각 중간 프록시는 성능 저하가 발생하게 된다. 고성능 프록시 서버들의 경우 이에 해당하지 않는다.

-       캐시 네트워크, 컨텐츠 라우팅, 피어링
URL
등 기준을 잡고 특정 캐시 또는 원본 서버를 선택하도록 유도하거나 우회하는 방법을 사용하거나, HTTP 확장을 통해 ICP, HTCP 등의 프로토콜을 이용해 피어링 구성을 하는 방법도 있다.

캐시 컨트롤 헤더

Cache-Control:

설명

max-stale [= <s>]

캐시는 최근 문서가 아니어도 자유롭게 제공. 매개변수 지정 시, 해당 시간이 지난 리소스도 받음.

min-fresh = <s>

클라이언트는 지금으로부터 s초 후까지 최신 문서만 받음

max-age = <s>

s초보다 오랫동안 캐시 문서 반환 못함.

no-cache

재검사 없이 캐시된 리소스 받지 않음

no-store

캐시된 리소스 삭제

only-if-cached

클라이언트는 캐시만을 받음

 

캐시 컨트롤 우선순위

1.     Cache-Control: no-store: 어떤 것도 캐싱 하지 않음. 이전 캐시 존재 시 삭제

2.     Cache-Control: no-cache: 사본을 클라이언트로 전달하지 않지만 캐시가 존재할 수 있음
2-1. Pragma: no-cache: HTTP/1.0+
하위호환성을 위해 HTTP/1.1에 포함.

3.     Cache-Control: must-revalidate: 캐시 사용 이전에 재검사, 만료 리소스 사용 금지

4.     Cache-Control: max-age: 리소스가 최신이라고 판단할 최대 시간

5.     Expire: Deprecated. 실제 만료 시간 명시.

6.     캐시 스스로 휴리스틱(체험적인) 방법으로 결정: max age를 계산하는 방식을 캐시 스스로 결정하며, 계산된 시간이 24시간을 초과할 경우, Heuristic Expiration 경고 헤더를 응답 헤더에 추가한다.
6-1. LM
인자 알고리즘: 리소스의 최근 변경 일시를 알 때 사용 가능하며, 얼마나 자주 바뀌는지에 대한 추정에 사용한다.
  -
캐시의 마지막 변경이 오래 전이라면, 안정적인 리소스로 판단하고 앞으로 바뀔 가능성도 낮으니, 더 오래 보관해도 안전하다
  -
최근에 변경된 캐시는 자주 변경될 확률이 높기 때문에, 재검사 전 짧은 기간만 캐시한다.
  -
최근 변경 일시가 없는 리소스는 디폴트 값으로 유지 시간을 설정(ex. 한 시간, 하루 등)

기본적으로 응답 메시지는 만들어진 시간부터 지금까지의 시간을 헤더에 포함한다. Date 또는 Age 헤더를 기반으로 하며, 나이 계산은 응답 메시지가 캐시에 도착한 나이에 캐시에 머무른 시간을 더해주면 된다.

l  Clock Skew: 시간 동기화 문제로, 프록시, 클라이언트, 서버가 각기 시간 동기화가 제대로 이루어져 있지 않은 경우 발생하며, age가 부정확하거나 음수로 계산되기도 한다.

HTTP/1.1은 캐시나 프록시 통과시, Age 헤더에 상대적인 나이를 누적해서 더하는 방법을 사용한다. 추가된 헤더를 인식하지 못하는 장치를 거칠 경우 해당 헤더가 삭제되거나 수정되지 않을 수도 있다. 이 상대 나이는 Date 기반 나이와 별도로 계산되어, 더 큰 값을 선택한다. , 요청 시간, 응답을 받은 시간을 계산하여 네트워크 지연을 보수적으로 교정한다.

'System Engineering > Network' 카테고리의 다른 글

HTTP Header Sample Analysis - Google.com  (0) 2018.07.24
HTTP - 9. CORS  (0) 2018.07.24
HTTP - 7. Authentication  (0) 2018.07.24
HTTP - 6. Proxy  (0) 2018.07.24
HTTP - 5. Web Server  (0) 2018.07.24

Authentication

HTTP는 사용자 인증에 자체 인증요구/응답 프레임워크를 제공한다.

-       인증 프로토콜, 헤더
제어 헤더를 통해 타 인증 프로토콜에 맞추어 확장 가능한 프레임워크를 제공한다.

n  기본 인증
클라이언트에서 요청이 오면, 서버는 401 Unauthorized 상태코드와 함께 WWW-Authenticate 헤더와 설명을 반환한다. 이 헤더에는 realm 라는 보안 영역(문서 집합) 지시자가 있는데, 해당 서버에서 정의한 영역으로 접근 가능한 영역에 대한 정보이다. 클라이언트는 브라우저에서 정보를 입력 받아, base-64로 인코딩하여 Authentication 헤더에 기술하고 다시 요청한다.

u  프록시에서의 기본 인증
407
상태코드, Proxy-Authenticate, Proxy-Authorization, Proxy-Authentication-Info 헤더 사용

기본 인증은 일반적인 환경에서 접근을 제어하거나, 노출되어도 치명적이지 않은 경우에 주로 사용한다.

n  다이제스트(digest-요약) 인증
기본 인증 대체를 위해 설계되었다. 비밀번호를 fingerprint 또는 digest 형식으로 전송하여 원 비밀번호가 무엇인지 알 수 없게 한다.

u  MD5: 무한한 입력 값을 유한 범위의 압축으로 변환. 사용자:영역:비밀번호를 사용

u  Nonce: 재전송 방지를 위해 비밀번호에 섞어 변환 값도 바뀌게 하는 것

u  MD5-sess: MD5 해시값에 nonce와 클라이언트 nonce를 연결한 것

-       사전 인가
클라이언트 측에서 다음 난스를 알고 있어 다이제스트 요청/인증요구 단계를 생략하여 메시지 횟수를 줄일 수 있다.

n  첫 인증 성공 시, Authentication-Info 헤더에 다음 난스를 미리 제공

n  WWW-Authenticate 헤더에 stale=true 값을 넣어 제한적으로 nonce를 재사용

n  공유된 비밀키에 기반하여 클라이언트와 서버가 순차적으로 같은 nonce를 생성하도록 시간적으로 동기화된 알고리즘 사용

-       Quality of Protection (qop 옵션)
WWW-Authenticate
헤더에 추가되는 필드로, 클라이언트와 서버가 어떤 보호 기법을 어느 정도 수준으로 사용할 것인지 명시한다.

n  auth: 인증

n  auth-int: 인증 및 메시지 무결성 보호

-       다이제스트 인증에서 그 값이 적절치 않거나 요구된 지시자가 빠진 경우, 또한 uri 지시자가 요청한 리소스와 같지 않은 경우, 400 Bad Request를 반환한다. 또한 로그인이 실패했음을 기록한다.

-       Protection Space
접근한 서버의 루트 URL과 결합하여 보호 공간을 정의한다.

n  기본 인증에서 요청 URI와 하위 경로 모두 같은 보호 공간으로 가정한다.

n  다이제스트 인증에서는 WWW-Authenticate 헤더의 domain 필드를 정의한다.


'System Engineering > Network' 카테고리의 다른 글

HTTP - 9. CORS  (0) 2018.07.24
HTTP - 8. Cache  (0) 2018.07.24
HTTP - 6. Proxy  (0) 2018.07.24
HTTP - 5. Web Server  (0) 2018.07.24
HTTP 4. DNS  (0) 2018.07.24

Proxy


Web Proxy

-       개인 프록시: 클라이언트에서 직접 실행되는 형태

-       공용 프록시: 대부분의 공유된 프록시. 중앙 집중 형태

-       게이트웨이는 클라이언트/서버 간 서로 다른 프로토콜을 연결해 준다.

 

보안 개선, 성능 향상, 비용 절약, 트래픽 감시 등의 기능 수행

-       접근 제어 프록시: 문서, 인터넷 접근 등 제어. 제한된 컨텐츠에 대한 요청에 대하여 407 Proxy Authorization Required 상태코드와 Proxy-Authenticate 헤더를 반환하고, 클라이언트는 Proxy-Authenticate 헤더에 인증 정보를 담아 다시 요청한다.

-       보안 방화벽: 어플리케이션 레이어 프로토콜 트래픽 제어

-       웹 캐시

-       대리 프록시(Surrogate): SSL 가속기

-       컨텐츠 라우터: 트래픽 조건, 컨텐츠 종류에 따라 요청을 특정 웹 서버로 유도

-       트랜스코더: 이미지 변환, 텍스트 압축, 언어 치환 등

-       Anonymizer: 클라이언트 식별 특성들을 제거하여 익명성 보장. 헤더 정보 제거로 구현

 

Proxy arrangement

-       Egress 프록시: 로컬과 인터넷 사이의 트래픽 제어를 위해 로컬 네트워크 출구에 위치. 방화벽, 트래픽 요금 및 성능 개선, 필터링 목적

-       Ingress 프록시: 모든 요청을 종합 처리하기 위해 ISP 접근 지점에 위치. 속도 개선 및 대역폭 비용 감소 목적

-       Surrogate: SSL 가속기는 웹 서버 바로 앞 단에 위치해, 서버로의 요청을 모두 처리. 웹 서버 성능 개선 목적

-       네트워크 교환 프록시: 캐시를 이용해 혼잡을 완화, 트래픽 감시 목적

 

Proxy Layer

프록시 연쇄 구성으로, 다수의 프록시를 거쳐 요청이 처리되는 구조. 프록시는 서로 부모-자식 관계를 가지며, 서버에 가까운 프록시(인바운드)를 부모라 칭한다. 또한 프록시 레이어 내의 프록시들 은 동적으로 경로가 설정될 수 있으며, 로드 밸런스, 지리적 인접성, 프로토콜/타입, 유료 서비스(향상된 속도의 서비스 가입자를 위한) 등의 방식을 사용할 수 있다.

 

프록시의 트래픽 처리 방법

-       클라이언트 수정: 브라우저에서 프록시 사용 여부 설정

n  수동 설정

n  브라우저 기본 설정

n  프록시 자동 설정: 자바스크립트 실행. Proxy Auto-Configuration 파일에 대한 URI 제공

u  .pac 확장자를 가지며 MIME 타입은 application/x-ns-proxy-autoconfig 이다.

u  URI 접근 시 서버를 계산해 주는 FindProxyForUrl(url,host) 함수 정의

n  Web Proxy AutoDiscovory Protocol: 자동 설정 파일을 가지고 있는 설정 서버(PAC URI)를 찾는 프로토콜

-       네트워크 수정: 네트워크에서 트래픽을 프록시로 유도

-       DNS 네임 스페이스 수정: 대리 프록시가 웹 서버의 IP와 주소를 자신이 직접 사용. DNS 네임 테이블 수동으로 편집하거나 동적 DNS 서버를 이용하여 조정.

-       웹 서버 수정: 웹 서버에서 프록시로 리디렉션 명령 리턴

 

프록시 URI는 서버 URI와 다르다. 클라이언트에서 서버로의 요청 메시지는 스킴, 호스트, 포트번호가 없는 부분 URI를 가진다. 하지만 클라이언트에서 프록시로의 요청은 완전한 URI를 갖는다. 프록시는 서버와 커넥션이 필요하기 때문에 완전한 URI가 필요하다. 가상 호스트의 경우도 마찬가지이다.

프록시에서는 부분 URI도 지원해야 하는데, Host 헤더를 기반으로 완전 URI를 추출하거나, 과거 이력에서 참조하는데, 어떤 방법으로도 완전한 URI를 찾지 못한다면 클라이언트로 에러 메시지를 보낸다.

Via 헤더는 쉼표로 구분된 waypoint 목록으로, 거쳐간 프록시 정보를 담고 있다.

Server 헤더는 원본 서버에 의해 사용되는 소프트웨어를 알려주며, 프록시는 이를 수정하면 안된다.

HTTP/1.1 TRACE 메소드를 사용해서 프록시가 요청 메시지를 수정하는 것을 추적하여 프록시 흐름을 디버깅할 수 있다.


'System Engineering > Network' 카테고리의 다른 글

HTTP - 8. Cache  (0) 2018.07.24
HTTP - 7. Authentication  (0) 2018.07.24
HTTP - 5. Web Server  (0) 2018.07.24
HTTP 4. DNS  (0) 2018.07.24
HTTP - GET, PUT, POST  (0) 2018.07.24

+ Recent posts