[CS Study] Network - Proxy/DMZ

Frye 'de Bacon·2023년 11월 7일
0

Computer Science(CS)

목록 보기
7/40

프록시(Proxy)

프록시 서버의 개념

프록시 서버는 클라이언트와 웹 서버 사이에 위치한 중개 서버로, 클라이언트가 자신을 통해 다른 네트워크 서비스에 '간접적으로' 접속하도록 하는 응용 시스템 혹은 응용 프로그램이다.
이렇게 프록시 서버를 통해 통신할 경우 클라이언트는 프록시 서버를 웹 서버로 인식하고, 웹 서버는 프록시 서버를 클라이언트로 인식하게 된다.

프록시 서버의 장점

  1. 보안성 제고
    프록시 서버를 통해 클라이언트나 서버의 정보를 숨길 수 있으며, 위험이 예상되는 웹 콘텐츠나 악성 코드를 필터링하여 클라이언트 측의 보안을 향상시킬 수 있다.
  2. 캐시 사용을 통한 속도 증가
    프록시 서버 중 일부는 프록시 서버에 요청된 내용들을 캐시를 이용해 저장해 둘 수 있다. 이후에 이 캐시 내에 있는 정보가 요청될 경우 프록시 서버는 웹 서버에 접속하지 않고 해당 데이터를 전송하며, 이를 이용해 전송 시간을 줄일 수 있다.
  3. 네트워크 병목 현상 방지
    불필요한 외부와의 연결을 방지하므로 네트워크 병목 현상을 방지하는 효과를 얻을 수 있다.
  4. 신뢰성과 안정성
    프록시 서버를 구성할 경우 이 뒤에 위치하는 실제 웹 서버는 이중화 혹은 클러스터링을 통해 특정 서버에 문제가 생기더라도 전체 서비스를 안정적으로 제공할 수 있으며, CDN 연동을 통해 DDOS 공격을 효과적으로 방어함으로써 안정성을 높일 수 있다.
    ※ CDN(Content Delivery Network) : 지리적으로 분산된 서버들을 연결한 네트워크로서 웹 컨텐츠의 복사본을 사용자에 가까운 곳에 두거나 동적 컨텐츠(예 : 라이브 비디오 피드)의 전달을 활성화하여 웹 성능 및 속도를 향상시킨다.
  5. 확장성
    프록시 서버와 클러스터를 구성하면 사용자 증가에 따라 상황에 맞게 웹 서버 혹은 WAS 등을 유연하게 늘릴 수 있다.

프록시 서버의 구분

프록시 서버는 위치에 따라 크게 두 종류로 구분한다.

  1. 순방향(Forward) 프록시 서버

순방향 프록시 서버는 가장 일반적인 프록시로서 클라이언트와 인터넷 사이에 위치한다. 순방향 프록시 서버는 클라이언트의 요청을 받아 서버에 대신 전달하고, 서버로부터 전달받은 응답을 다시 클라이언트에 전달한다. 따라서 서버는 실제 클라이언트의 주소를 알지 못한다.

순방향 프록시 서버는 다음과 같은 용도로 사용될 수 있다.

  • IP 우회 : 프록시 서버를 통해 IP를 변경하여 웹 서버에 접속함으로써 클라이언트를 숨길 수 있다.
  • 콘텐츠 제한 : 도박, 음란물 등 유해 콘텐츠를 제공하는 웹 사이트를 규칙에 추가하여 필터링함으로써 접속을 제한할 수 있다.
  • 캐싱 : 캐싱을 통해 프록시 서버 내에 저장된 데이터를 (웹 서버로의 접속 없이) 클라이언트에 전달함으로써 속도 및 성능을 향상시킬 수 있다.
  1. 역방향(Backward) 프록시 서버

역방향 프록시 서버는 순방향과 반대로 인터넷과 웹 서버 사이에 위치한다. 클라이언트는 역방향 프록시 서버의 주소를 목적지 서버로 하여 데이터를 요청하며, 프록시 서버는 클라이언트의 요청을 받아 실제 서버에 데이터를 요청하고, 전달받은 데이터를 클라이언트에 전달한다.

역방향 프록시 서버는 다음과 같은 목적으로 활용된다.

  • 로드 밸런싱(Load balancing) : 서버가 분산 처리 시스템으로 구성된 경우 각 서버에 트래픽을 고르게 분산해주기 위하여 로드 밸런싱 작업을 실시한다.
  • 외부 공격 방어 : 순방향과 마찬가지로 실제 서버의 IP를 숨김으로써 외부로부터의 공격을 방어할 수 있다(이 경우 프록시 서버가 공격의 대상이 될 수 있다).
  • 캐싱 : 순방향과 동일하게 데이터를 캐싱함으로써 성능을 향상시킬 수 있다.
  • SSL 암호화 : 클라이언트와의 통신 과정에서 서버가 부담해야 했던 암호화 및 복호화 작업을 역방향 프록시에서 담당함으로써 서버의 부하를 줄일 수 있다.

역방향 프록시 서버는 기본적으로 순방향 프록시 서버와 동일한 역할을 한다. 그런데 한 가지 주요한 차이점이 하나 있는데, 그것은 역방향 프록시 서버의 경우 DMZ에 위치한다는 점이다.



DMZ(Demiliterized Zone)

DMZ의 개념

한국인이라면 DMZ라는 개념이 익숙할 것이다. 네트워크에서의 DMZ도 유사한 개념으로 이해할 수 있는데, 외부 네트워크와 내부 네트워크에 위치한 특수한 네트워크 영역으로서 '내부에서 DMZ로의 접근'은 가능하나, 'DMZ에서 내부로의 접근'은 불가능한 특징을 지니고 있다.

예를 들어 사내 시스템 중 외부와의 접속이 필요한 웹 서버, 이메일 서버, FTP 서버 등이 존재하고(이 영역을 A라 하자), 그 외에 내부에서만 사용하는 영역(B)이 있다고 하자. 외부로 열려 있는 A에서 B로의 접속이 가능하다면 공격자가 A를 통해 B로 칩입할 수 있어 보안상 문제가 발생한다. 따라서 A에서 B로 접근하는 것을 막아 버리면 내부 영역(B)의 보안성이 증가하게 된다(B에서 A로의 접근은 보안상 우려가 없으니 열어 둔다).

이때 외부 네트워크에서 DMZ로의 연결은 일반적으로 포트 주소 변환(Port Address Translation, PAT)을 통해 제어된다.

포트 주소 변환(Port Address Translation, PAT)

포트 주소 변환이란 내부 네트워크상의 호스트 및 포트와 외부 네트워크상의 호스트 및 포트 간 이루어지는 TCP(UDP) 통신을 변환해주는 네트워크 장비의 기능이다. 이를 이용해 여러 개의 내부 호스트가 하나의 IP 주소를 이용할 수 있다. 일반적으로 NAT/PAT으로서 IP 주소와 포트 번호를 모두 변경하는 방식이 이용된다.

그림처럼 내부 IP가 10.10.10.10이고 포트 번호가 2000인 클라이언트가 20.20.20.20/80의 외부 네트워크를 목적지로 하여 통신한다고 하자. 그러면 NAT 장비는 클라이언트의 IP와 포트 번호를 공통으로 사용하는 IP/포트 번호인 11.11.11.11/3000으로 변경한다(이렇게 변환한 정보는 PAT가 저장해 둔다). 그러면 웹 서버는 해당 요청을 11.11.11.11/3000으로부터 온 요청으로 이해하고 필요한 응답을 전송한다. 그러면 NAT은 다시 이 요청을 받아 원래의 내부 IP(10.10.10.10/2000)로 전달한다.



참고 자료

profile
AI, NLP, Data analysis로 나아가고자 하는 개발자 지망생

0개의 댓글