Network

프록시 서버 ( Application proxy server)

마법사 31 2022. 8. 17. 16:56

네트워크를 이루고 있는 수많은 요소들이 있습니다.

우선 Inline + Out of Path에 대해서 알고 있어야 합니다.

장치든 라우터든 스위치든 간에 Inline이거나 Out of Path 중 하나입니다.

1. Proxy란

Proxy 사전적 의미 – 대리, 대리자, 중계자
Proxy Server – Proxy 의 역할 을 하는 서버를 의미

 

2. Proxy 서버의 활용

프록시는 대표적으로 보안, 속도(캐시를 사용하여 전송 효율 증대),

ACL(Access Control List), Log/Audit, 접속 우회를 위해 사용된다.

 

(1) 보안: 프록시 서버가 중간에 경유되게 되면 IP를 숨기는 것이 가능하기 때문이다. 또한 프록시 서버를 방화벽으로 사용하기도 한다(프록시 방화벽). 또한, 익명의 사용자가 서버에 접근하는 것을 막는다.

 

(2) 속도(캐시): Proxy 서버 중 일부는 프록시 서버에 요청된 내용을 Cache한다. 이 후, 동일 요청이 들어오면 서버에 따로 접속할 필요가 없이 저장된 Cache 자원을 반환한다. 따라서 전송 시간을 절약할 수 있고, 외부 트래픽을 줄임으로써 네트워크 병목 현상도 방지할 수 있다. 이는 서비스의 속도를 높여준다.

 

(3) ACL 사이트 접근에 대한 접근 정책을 정의할 수 있다. (ACL = Proxy Server에 접속할 수 있는 범위를 설정하는 옵션)

 

(4) Log/Audit : 회사 내 직원의 인터넷 사용을 레포팅할 수 있다. 반대로 인트라넷의 사용을 레포팅할 수도 있다.

          > 인트라넷 : 기업의 내부나 계열사 간이나 해외 지사와 본사 사이의 내부적 정보 교환과 정보 공유를 위해, 인터넷을 이용하여 구축한 컴퓨터 통신망.

          > Audit log에는 다양한 타입들이 존재하는데 여기에 해당되는 시스템에는 Computing, networking system 등 다양한 시스템이 해당된다. 그럼 Operating System Logs, Remote system, Proxy Server, Unix logs, Firewall logs 이 로그를 방출해낸다고 생각할 수 있다

 

(5) 지역 네트워크의 제한 우회 : 간혹 한국에서는 접속이 제한이 되는 사이트가 있다. IP를 검사해 한국에서의 접속임을 감지하기 때문인데 이런 경우 프록시 서버를 사용하면 접속을 다른나라로 우회할 수 있게 된다. 우회에 사용할 서버 주소와 포트를 구한 후 '인터넷옵션>연결>LAN설정>프록시서버'에서 서버 주소와 포트를 설정해주면 설정해준 서버에서 접속한 것처럼 속일 수 있기 때문에 접속 제한을 우회할 수 있다.


추가적으로,

버프스위트(Burp Suite), 파로스, 피들러(Fiddler)와 같은 웹 프록시 툴을 사용하면 웹 요청이나 응답 값을 중간에 가로챌 수 있다. 해당 툴에서 사용하는 웹 프록시 서버 주소와 포트 설정을 해주면 브라우저에서 보낸 웹 요청이 프록시 서버를 경유하게되기 때문에 중간에 패킷을 가로챌 수 있게 되는 것이다. 이러한 웹 프록시 툴들은 트래픽 조작, 기능 확장, 분석, 모니터링 등에 유용하다.

 

3. Proxy 서버의 종류

Proxy 서버의 위치에 따라 두가지로 분류


Forward Proxy

- Proxy 가 Client 전면에 위치, WAN 구간으로 나가는 Traffic 에 대해 제어

 - the server does not know which client is connecting

 

Anonymity - Server 가 어떤 Client 가 접속했는지 알 수 없도록 한다Caching - Client -> Server 접속할때 변화가 없는데 Server 로 다녀오는 것을 hop 을 줄여 효율 Up Blocking unwanted sites - 유해 사이트 등에 접속이 차단되도록GeoFencing - e.g. ) 해당 국가에서는 접속할 수 없습니다. 와 같은 특정한 client 만 접속할 수 있도록 제어하는 것

 


Reverse Proxy 

더보기

+) 강사님 추가 설명

reverse proxy 는 주로 load balancer로 사용

 

인증절차가 server1에서 이루어진 후에 재접속한 client 가 server2 로 가게되면 

server2 는 인증정보를 가지고 있지 않기 때문에 재인증이 필요하다 

 

이 때, 해결 방법

클라이언트에서 인증 정보를 hash 값으로 들고 들어오던지,

or

load balancer 가 인증한 값을 저장하고 보관하는 역할까지 겸해야함

 

요즘은 웹서버도 밖으로 노출시키지 않는다 => 3 tier 구조

 

Proxy 가 Server 전면에 위치, WAN 에서 들어오는 Traffic 에 대해 제어

Client does not know which server is behind the reverse proxy

client 는 외부로 노출된 하나의 ip 로 접속하면 내부적으로 개발자가 지정해 놓은 서버로 접속이 되도록 지정해 놓아서client 는 자신이 어떤 서버에 붙었는지 전혀 알 수 없다

 

Load Balancing  - 

예를 들어서 내가 개발한 어플리케이션이 client 의 접속을 받는데, 사용자 수가 너무 많아졌다 ?

나의 어플리케이션을 동일하게 여러개로 복제한 후에 , client 가 reverse proxy 로 접속하게 만들고

proxy server 에 의해 알아서 내부로 지정된 포트로 부하를 분산시켜줄 수 있고

이가 결국 proxy server 를 이용한 Load Balancing 

 

Caching - 반복되는 request 를 proxy server 에 보관시켜서 각 서버로 가지 않고 proxy 가 바로 response 해 줄 수 있도록 하여 효율 Up ( 단, 설계를 잘해야함 )

 

Isolation internal traffic - 외부에서는 내부의 동작 구조를 전혀 알지 없도록, DMZ 를 꾸릴 수도 있다.

 

Logging -  서버1이 다운되었다, 서버2가 부하를 얼마나 받는다 등 각 서버의 상황을 로깅하여 관리할 수 있음

 

Canary Deployment (카나리 배포) -

가동 중인 서버들의 일부에만 새로운 앱을 배포하여, 일부 트래픽을 새 버전의 환경으로 분산하는 방법입니다.

A/B 테스트가 가능하고, 오류율 및 성능 모니터링에 유용하게 사용할 수 있다는 장점

 

e.g. ) 2018년도 유튜브에서 실험 : 사용자의 3% 만 auto generated thumbnail 을 받도록 , 동일한 api 로 들어온 request 이지만 다른 서버들과는 살짝 다른 결과값을 반환하는 서버를 하나 지정해서 실험함

 

목적에 따른 분류 - 개인 프록시와 공유 프록시

프록시 서버는 하나의 클라이언트가 독점적으로 사용할 수도 있고, 여러 클라이언트가 공유할 수도 있다. 개인프록시는 하나의 클라이언트를 위한 프록시이고 공용프록시는 여러 클라이언트가 함께 사용한다.

공용프록시

대부분의 프록시가 공용프록시이다. 왜냐하면 중앙집중형 프록시를 관리하는 것이 더 비용효율이 높고 쉽기 때문이다. 또한 캐시 프록시 서버와 같은 경우 공통된 요청에서 이득을 취할 수 있으므로 사용자가 많을 수록 유리하다.

개인프록시

개인 전용 프록시는 흔하지 않지만 꾸준히 사용된다. (클라이언트 컴퓨터에서 직접 실행되는 형태로) 어떤 브라우저 보조 제품들은 몇몇 ISP 서비스와 마찬가지로 브라우저의 기능을 확장하거나 성능을 개선하거나 무료 ISP 서비스를 위한 광고를 운영하기 위해 작은 프록시를 사용자의 컴퓨터에서 직접 실행된다.

 

 

4. 구성 방법에 의한 장·단점

> In-Line, Virtual In-Line (? 아직 잘 모름 ㅠㅠ ) , Out of Path 

Inline 구조와 Out of path 구조

모든 네트워크 디바이스 ( 스위치, 라우터, 방화벽 등등 ) 는

어떤 방식으로 설치를 하는 구조의 디바이스 인지를 기준으로 나눌 수 있다

 

packet = 자동차

network = 고속도로 

interchange(IC 톨게이트) = In-line 구조의 네트워크 장비 : bypass or block 이 가능

     e.g. 그림 속에서 Router, Firewall

 

 

 

distribution 에서 지원하는 port mirroring 과부하 심하다 (port 를 복사할때 원본과 사본이 1bit도 차이가 없고 완전 100프로 동일할때는 mirroring 이라고 부른다 ) 

Out of path 장비가

흔히 Read-only 상태의 Sensor 인데 

장애가 나는지 보겠다하면 장애 대응 sensor 가 되고

DPI (Deep packet inspection) 수행하면  IDS 가 된다 (network로 탐지해서 NIDS )

 

 

Proxy ( 핸들링하는 데이터의 단위 : socket )

 

In-Line ( 핸들링하는 데이터의 단위 : packet )

- 네트워크에 직접 연결
- 모든 트래픽은 Proxy 를 경유-구성이 용이 함
- Client PC 의 설정이 불필요-전체 트래픽을 확인
- 구성 시 네트워크의 단절
- Fail 발생 시 전체 네트워크장애 발생
- 제품 선정 시 Bypass 트래픽도  추가 산정
- Reflect IP 설정이 가능
- Client 는 Proxy 의 존재를 알지  못함


Virtual In-Line ( 아직 공부가 더 필요... )

- L4 Switch 또는 Router(WCCP)를 통해 선택적인 경유
- 물리적으로는 Out-Of-Path-네트워크 단절이 불필요
- 추가 확장이 용이 함-Proxy 부하 분산
- 선택적 트래픽의 경유-네트워크 복잡성이 증가
- PBR, WCCP 구성 또는L4 스위치가 필요함
- Reflect IP 설정이 가능
- Client 는 Proxy 의 존재를 알지못함


Out of Path ( 핸들링하는 데이터의 단위 : packet )

- 별도의 세그먼트에 연결
- 물리적으로 분리된 구성
- 네트워크 단절이 불필요
- 구성이 용이 함
- Client PC 의 Proxy 설정필요
- Web Browser 의 트래픽만Proxy 경유 함
- Client 는 Proxy 의 존재를 인지

 

PC가 하나 있다고 해봅시다. 중요한 건 IP 주소입니다. 3.3.3.3번 호스트가 5.5.5.5번 호스트로 TCP/IP 연결을 했다고 합니다. 보통 네이버는 웹이니까 HTTP나 HTTPS 통신을 할 것입니다. 어쨌든 여기서 Socket 통신을 했을 것입니다.

PC #2에서 Proxy 역할을 수행해주는 Process가 있습니다. 이 Process에 Socket Interface가 있을 것입니다.

S1, S2라고 해봅시다. S1은 Listen하고 있습니다. Socket을 누군가 자기에게 연결하기를 기다리고 있습니다.

 

User mode - Application proxy => Socket stream
Inline + Out of Path => Packet

 

다루는 데이터에 따라 다릅니다.
Packet을 봐야하는데 Proxy로 개발하는 것은 부적절하다는 것입니다.

Proxy 는 socket stream 이기 때문

 

더보기

Each OSI model layer has an associated data unit

계층에 따라 상응하는 data unit 이 있음

packet : a piece of data associated with the network layer.  chunk of data

 ( Layer 3, network layer : uses IP addresses to communicate. ) . reliable stream of data.

 

socket : combination of port number and IP address

 ( Layer 4, or the Transport layer : uses port numbers )

OSI 7 layer

 

TCP 연결 과정

  1. 서버 ``소켓`` 생성, 준비, 대기
  2. 클라이언트 소켓 연결, 소켓간 연결
  3. 데이터 교환
  4. 접속끊기

 

 

 

(1) 우회

네이버 입장에서는 IP 주소 9.9.9.9가 접속을 했다고 알고 있습니다. 그런데 PC #1은 우리나라에 있고, PC #2는 중국에 있다고 해봅시다. 그러면 중국에서 접속했다고 인식할 것입니다.

  • Tor project라는 것이 있습니다. 인터넷에게 자유를!!  국가간에 전쟁나면 타국 인터넷을 차단해버리는데, 이런 상황에서 접속이 제한된 다른 웹 서비스르 접속할 수 있는 방안을 제공합니다. 이거와 유사하게 Proxy 설정을 통해서 우회해서 접속을 할 수 있습니다.
  • 주의할 것이 있습니다. PC #1이 PC #2를 Proxy로 설정했기 때문에, PC #2는 PC #1의 Socket 통신 내역을 모두 들여다볼 수 있습니다. PC #1의 통신을 모두 감청할 수 있는 것입니다.

tip) VPN은 Network 수준에서 많이 쓰고, Proxy는 HTTP(Web) 수준에서 많이 씁니다.

 

(2) 분석

상황 : Chrome -> Proxy -> Google

wireshark 로 ssh로 암호화되어있는 패킷을 분석하는 일은  복호화 과정이 필요하고 매우 복잡한 작업

application layer 의 stream 형태로 이동하는 data 를 packet 단위로 나노화 하여 분석하는 것은 매우 비효율적

 

암호화된 packet 을 복호화 하여 분석하지 말고

새로운 proxy 서버를 두어서 암호화 이전의 socket 을 분석하자 !

프록시 서버 주소를 127.0.0.1 로 주어서 자기 자신을 분석한다

 

Proxy 서버에서 암호화가 이루어지기 때문에 Chrome -> Proxy 이동 상태가 전부 `평문` 

Wireshark 보다 Fiddler 를 이용해서 Socket 을 분석하는 방법 !! 이 있다는 것 ~

 

뿐만 아니라 Fiddler 를 통해서 조작도 가능하다

e.g. ) chrome -> google 접속시에 자신은 chrome 브라우저라도 http message 안에 표시가 되어있음

         이를 조작해서 마치 나는 모바일이다 ! 이렇게 조작해서 http response 를 모바일 form 으로 주게끔 할 수 있다

=> 이게 때마침 오늘 수업시간에 강사님이 Firefox user agent switcher 깔으라고., 말해주신 addon 프로그램이

proxy 로 동작한다 . 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------------------------------------------------------------------------------------------------------------------------------------------

 

5. SWG (Secure-Web-Gateway) 의 개요
웹 필터링, URL 분석을 통하여 비인가 사이트 접속 통제
프로토콜 규격 검사 및 콘텐츠 필터를 이용한 유연한 정책 수립 환경 제공
인터넷 프록시 우회 사용 탐지 및 HTTP 프로토콜 헤더 값을 이용한 업로드 행위 원천 차단
암호화 트래픽 가시성 및 제어 제공
기타 보안장비 연동 (AV, DLP, 샌드박스 등 암호화 트래픽을 복호화하여 전송 가능)

 

 

Reference

https://velog.io/@vamprodo47/Application-Proxy

 

Application Proxy

네트워크를 이루고 있는 수많은 요소들이 있습니다. 우선 Inline + Out of Path에 대해서 알고 있어야 합니다. 장치든 라우터든 스위치든 간에 Inline이거나 Out of Path 중 하나입니다.Proxy의 사전적 의미

velog.io

https://www.youtube.com/watch?v=dThqHi8-MiQ 

https://www.youtube.com/watch?v=ozhe__GdWC8&t=288s 

https://www.youtube.com/watch?v=XBPXxFip4xs