티스토리 뷰

이번 포스팅에서는 HTTP 완벽가이드 책을 활용하였습니다.

 

1. Gateway

프로토콜/통신계층/애플리케이션 등 이질적인 두 개의 네트워크 간에 인터페이스를 담당한다.

일반적으로, LAN구간의  Ethernet 망과  WAN 구간을 연결하는 장비를 지칭하기도하며, 3 Layer로 한정할 때 Router 장비가 Gateway 역할을 담당한다. (서버의 Default route 설정이 자동으로 Gateway로 되어 있어 모르는 네트워크에 대한 통신을 할 경우엔 Gateway에게 패킷을 보낸다.)

 

1) Proxy ARP

다른 네트워크의 MAC 주소를 알아오고 싶을 때 네트워크를 분리해주는 장비(보통 라우터)에서 Proxy  ARP를 설정하여 라우팅되어 있는 다른 네트워크 호스트의 MAC 주소를 자신의 것으로 대신 알려주는 기능을 수행한다. 

 

2) Gratuitous ARP

장비가 ARP 패킷을 broadcast를 통해 같은 네트워크상에 있는 다른 장비에 자신의 존재를 알리는 목적으로 사용한다. 그리하여 자신의 MAC 주소 변경시에 다른 호스트의 Cache를 갱신시킬 수 있으며, 이는 이중화 Gateway 프로토콜(HSRP/VRRP)에서 Active가 변경될 경우 등에 활용된다.

 

3) NAT (Network Address Translation)

NAT는 원래의 IP주소를 다른 것으로 변환하여 전송하는 것을 의미한다.

주로 사설 IP 주소를 공인 IP 주소로 바꿔 외부 통신이 가능하게 하는 목적으로 사용된다.

공인망과 사설망 사이에 방화벽을 설치하여 외부 공격으로부터 사용자의 네트워크를 보호하는 수단으로 사용된다.

 

4 ~ 7 layer에서  Gateway는 상이한 프로토콜들 간의 변환을 담당한다. 가령, 브라우저에서 FTP URL을 포함한 요청(GET ftp://ftp.brainbackdoor.com/pub/index.txt HTTP/1.0)을 할 경우 게이트웨이는 클라이언트의 요청을 FTP 요청으로 변환하여 처리한 뒤  클라이언트에게 그 결과를 HTTP로 전송한다. (port forwarding)

 

그  외에도 애플리케이션 간 상호운용을 위한 Gateway도 필요하다. 가령, 웹 서버와 웹 애플리케이션 사이에는 데이터를 주고받기 위한 규칙이 있는데 이것을 ‘CGI(Common Gateway Interface)’라고 한다. 그래서 보통 웹 애플리케이션을 ‘CGI 프로그램’이라고 한다. 특히 자바로 만든 웹 애플리케이션을 Servlet이라고 부르는다. 서블릿 명칭은 Server와 Applet의 합성어이다. 즉 ‘클라이언트에게 서비스를 제공하는 작은 단위의 서버 프로그램’이라는 뜻으로, 사용자의 요청에 대한 처리와 처리 결과에 따른 응답을 담당한다. 즉, 웹 개발자가 실질적인 구현을 담당할 부분이다. 

 

 

 

2. HTTP Connection으로 터널링

터널링이란 데이터 스트림을 인터넷 상에서 가상의 파이프를 통해 전달시키는 기술로, 패킷 내에 터널링할 대상을 캡슐화시켜 목적지까지 전송하는 것을 의미한다. 웹 터널은 HTTP의 CONNECT 메서드를 사용하여 커넥션을 맺는다. CONNECT 메서드는 터널 게이트웨이가 임의의 목적 서버와 포트에 TCP 커넥션을 맺고 클라이언트와 서버 간에 오는 데이터를 모조건 전달하기를 요청한다. 터널을 통해 전달되는 데이터는 Gateway에서 볼 수 없어서, Gateway는 패킷의 순서나 흐름에 대한 판단을 할 수 없다. 터널은 HTTP가 아닌 트래픽에 포트를 제한하는 방화벽을 통과할 수 있게 해주어, 악의적인 트래픽이 유입되는 경로가 될 수 있다. 

 

3. VPN

1) 개념

VPN(Virtual Private Network, 가상사설망)은 인터넷과 같이 여러 사람이 공용으로 사용하는 공중망(Public network)을 특정인이나 조직이 단독으로 사용하는 사설망(Private network)처럼 동작시키는 것을 의미한다. (VPN vs Tunneling)

 

2) 이점

본사와 지사간의 네트워크를 전용선으로  구축하는 것에 비하여 훨씬 적은 비용이 듦

네트워크의 업무  의존도가 높기 때문에 전용선의 장애에 대비하여 VPN으로 이중화를 구현

전용선을 이용한 사설 네트워크 환경에서도  데이터의  보안을  위하여 VPN의 사용이 필수적

 

3) 기능

- 통신 상대방 확인 : 미리 양측에 동일한 암호를 지정하는 PSK(Pre-sharedkey)나 디지털 인증서 방식 등을 이용하여 상대방을 인증한다.

- 데이터의 기밀성 유지 : DES, 3DES, AES, RC4 등의 암호화 방식을 사용하여 송수신 데이터의 내용을 다른 사람이 알지 못하게 한다.

- 데이터의 무결성 유지 : 패킷과 암호를 MD5와 SHA-1 알고리즘에 적용하여 해시코드를 만들어 패킷에 첨부한다. 패킷을 수신한 측에서는 동일한 패킷과 암호를 적용하여 해시코드를 계산한 결과를 비교하여 데이터 송수신 도중 공겨자가 데이터를 변조하는 것을 방지한다. 해시코드는 인증용으로도 사용된다.

- 재생방지(anti-replay) : 패킷의 순서번호나 도착시간을 확인하여 공격자가 자신의 패킷을 끼워넣는 것을 방지한다.

 

* VPN을 사용하면 공격자가 데이터를 보거나 변조하는 것을 방지할 수 있어 전용회선과 같은 사설망 환경에서도 VPN 기술을 적용하여 사용한다.

 

  암호화 부분 주요 용도
SSL VPN L5 이상 PC와 서버간의통신 전자상거래 등 다양한 용도
IPsec VPN 순수 IPsec VPN L3 이상 본/지사간의 통신 기본적인 IPsec
GRE IPsec VPN L3 이상 본/지사간의 통신 GRE를 이용한 라우팅 해결
DMVPN L3 이상 본/지사간의 통신 대규모 VPN
Easy VPN L3 이상 PC와 본사간의 통신 외부 근무 사원의 내부망 접속허용
PPTP VPN L2 이상 PC와 본사간의 통신 외부 근무 사원의 내부망 접속허용
L2TP VPN L2 이상 PC와 본사간의 통신 외부 근무 사원의 내부망 접속허용
MPLS VPN 암호화 기능 없음 본/지사간의 통신 IPsec VPN과 동시 허용

 

4) 암호의 구분 및 용도

VPN에서는 인증, 데이터 암호화 및 변조 방지를 위하여 암호가 필요하다.

암호는 양측에서 사용된 키가 동일한지의 여부에 따라 대칭키와 비대칭키로 구분된다.

 

- 대칭키 : 양측에서 사용하는 암호가 동일하다. 대표적으로, PSK(Pre-shared key), Diffie-Hellman 알고리즘에 의해 생성된 키를 사용한다.

- 비대칭키 : 암호화와 복호화에 사용하는 키가 서로 다르다. 대표적으로 개발자의 이름을 딴 RSA(Rivest, Shamir, Adelman) 키가 있다. 

 

비대칭키는 공개키와 개인키의 쌍으로 이루어진다. 공개키는 다른 사람에게 공개되며 개인키는 각자 보관한다. 송신자가 상대방의 공개키로 패킷을 암호화해서 보내면 수신자는 자신의 개인키로 복호화한다. 특정인의 공개키로 암호화된 것은 그 공개키와 쌍을 이루는 개인키로만 복호화할 수 있다. 

 

인터넷 뱅킹, 전자상거래 등에서 사용할 공인인증서의 소유자를 인증해주는 조직 또는 인증기관을 CA(Certificate Authority)라고 한다. 우리나라에는 한국정보인등, 코스콤, 금융결제원, 한국정보사회진흥원, 한국전자인증, 한국무역정보통신 등 6곳이 CA 서비스를 제공한다. 또한 조직 내부에서 VPN 등의 용도로 사용하기 위하여 라우터나 서버를 CA로 동작시켜 사용할 수 있다.

 

일반적으로 보안 통신을 하는 두 개의 장비들은 인증, 데이터 암호화 및 변조방지를 위해 별개의 방식으로 생성된 암호를 사용한다. 인증을 위해서는 대칭키인 PSK나, 비대칭키인 디지털인증서(공인인증서)를 사용한다. 그러나 인증 시 사용하는 암호방식의 대칭키나 비대칭키의 여부와 상관없이, 이 후 데이터 송수신시에는 암호화와 변조방지를 위하여 일시적으로 생성한 대칭키를 이용한다. 기본적으로 세션이 종료되면 대칭키를 제거하고, 새로운 세션에는 새로운 대칭키를 생성하여 사용한다.

 

IPsec VPN은 Diffie-Hellman 알고리즘을 이용하여 암호화 및 변조 방지를 위한 임시 대칭키를 만들어 사용한다. SSL VPN은 초기 Handshaking 과정에서 Client가 서버의 공개키를 이용하여 임의의 수를 암호화한 결과를 서버에게 전송하고, 서버는 자신의 개인키를 이용하여 이를 복호화한다. 이 때 사용한 임의의수를 이용하여 양측은 패킷의 암호화 및 복호화에 필요한 임시키를 생성하여 사용한다.


4) IPSec VPN 상세 설명

각 계층별 터널링 보안방식은 링크로 대신한다. 여기서는 IPsec VPN에 대해서 좀 더 상세히 설명하고자 한다.

 

(1) 구성요소

- IKE (Internet Key Exchange)와 ISAKMP (Internet Security Association and Key Management Protocol) : 통신 당사자를 인증하고, 보안 통신에 필요한 보안 정책 집합인 SA를 결정하며, 보안 통신에 필요한 여러가지 키를 결정하기 위한 프로토콜이다.

 

- SA (Security Association) : 보안통신을 위해 필요한 여러가지 알고리즘 및 정책의 집합을 말한다. 만약 ISAKMP를 암호화하기 위하여 AES라는 암호화 방식을 사용하고, 무결성 확인을 위하여 MD5 알고리즘을 사용한다면 이와 같은 여러가지 보안정책의 집합을 ISAKMP SA라고 한다. 또한 실제 데이터를 IPsec으로 송수신하기 위하여 3DES, SHA-1 등과 같은 보안정책을 사용한다면 이 보안정책의 집합을 IPsec SA라고 한다. SA를 하나의 코드로 표시한 것을 SPI(Security Parameter Index)라고 한다.

 

- ESP (Encapsulation Security Payload) 또는 AH (Authentication Header) : 실제 데이터를 encapsulation하고 보호하기 위한 프로토콜이다. ESP는 데이터를 암호화시키고 무결성 확인 기능이 있는 반면, AH는 암호화 기능이 없어서 많이 사용하지 않는다. 

 

(2) Transport Mode

IPsec VPN은 원래의 데이터  패킷에 VPN 장비의 새로운 IP 헤더를 추가하는지의 여부에 따라 Transport mode와 Tunnel mode로 구분할 수 있다. 종단 장비 사이에 직접 IPsec VPN을 이용한 통신이 이루어지는 경우에는 일반적으로 Transport mode를 사용한다. Transport mode를 사용하면 20바이트 길이의 추가적인 IP 헤더를 사용하지 않는 반면, 보안 통신을 하는 두 장비의 IP 주소가 외부에 노출된다.

 

ESP encapsulation의 경우 IP 헤더 다음에 8바이트의 ESP 헤더가 오고, 다음에 원래의 데이터, 다음에 ESP 트레일러와 패킷의 무결성 확인을 위한 해시코드인 ICV가 첨부된다. 그리고 데이터와 ESP 트레일러까지를 암호화하여 보호하고, ESP 헤더부터 ESP 트레일러까지의 정보를 이용하여 무결성 확인용 해시코드를 만들어 패킷의 뒤에 첨부한다. 결과적으로 Transport mode를 사용하면 L4 정보부터 ESP로 보호된다.

 

AH encapsulation의 경우  IP 헤더 다음에 AH 헤더가 오고, IP 헤더를 포함한 전체 패킷에 대해 인증 및 무결성 확인 기능을 적용한다. 이 때 IP 헤더 중에서  값이 변동되는 필드인 TTL, DSCP, ECN, Checksum 등은 해시코드 계산에서 제외한다. AH 패킷이 전송 도중에 이와 같은 필드 값들이 변동되면 해시코드 값이 달라지기 때문이다. 결과적으로 AH Transport mode를 사용하면 L3 정보부터 인증된다.

 

(3) Tunnel mode

종단 장비들이 전송경로 사이에 있는 IPsec VPN Gateway를 이용하여 통신을 하는 경우에는 일반적으로 Tunnel mode를 사용한다. 이 때 IPsec VPN관련 처리는 VPN Gateway에서 이루어지고, 종단 장비들은 VPN의 존재를 인식하지 못한다. 순수한 IPsec VPN이 아닌 GRE IPsec, DMVPN의 경우에는 어차피 원래의 패킷 앞에 GRE 헤더가 첨부되고 이것이 암호화되므로 종단 장비의 L3헤더가 노출되지 않는다. 따라서 이 경우에는 터널 모드 대신 Transport mode를 사용하면 20바이트의 오버헤드를 줄일 수 있다.

 

Tunnel mode로 동작하는 ESP 패킷은 원래의 패킷 앞에 VPN Gateway의 주소를 사용한 IP 헤더를 새로 추가한다. 그리고 원래 패킷 전체와 ESP 트레일러까지를 암호화하여 보호하고, ESP 헤더부터 ESP 트레일러까지의 정보를 이용하여 무결성 확인용 해시코드를 만들어 패킷의 뒤에 첨부한다. 순수 IPsec VPN에서 Tunnel mode를 사용하면 20바이트 길이의 새로운 IP 헤더가 추가되고 원래의 패킷은 노출되지 않는다. 결과적으로 Tunnel mode는 L3정보부터 보호된다.

'Infra Structure > .system' 카테고리의 다른 글

200 vs 404  (0) 2020.02.12
MySQL 다시 공부하기 (1)  (0) 2019.11.10
HTTP 완벽가이드 스터디 #7 Cache  (0) 2019.10.05
HTTP 완벽가이드 스터디 #6 Proxy Server  (0) 2019.09.23
HTTP 완벽가이드 스터디 #4 -d Keep-Alive  (1) 2019.09.16
댓글
링크
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Total
Today
Yesterday