프록시(Proxy) 서버
클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 응용 시스템이나 응용 프로그램
서버와 클라이언트 사이 존재하는 중계 서버로 시스템이 방화벽을 갖고 있는 경우 외부와의 통신을 위해 만들어 놓은 서버이다.
보안상의 이유 등으로 클라이언트와 서버 사이 직접 통신할 수 없는 경우 두 사이 대리로 통신을 수행하는 기능을 하며 클라이언트는 프록시 서버를 ‘서버’라고 인식하고, 서버 입장에서 ‘클라이언트’로 인식하게 된다.
보안 목적
프록서 서버를 사용하는 경우 그 종류에 따라 클라이언트나 서버의 정보를 숨길 수 있다. 또한 위험이 예상되는 웹 컨텐츠나 악성 코드를 필터링함으로써 클라리언트 측의 보안을 향상시킬 수 있다. 네트워크 서비스나 컨텐츠로의 접근 정책을 적용하기 위해서 사용하며 사용률을 기록하고 검사하기 위해 사용할 수 있다. 뿐만 아니라 밖으로 나가는 컨텐츠를 검사하기 위해 사용할 수 있다. IP 우회 방법으로도 사용 가능하다.캐시 사용을 통한 속도 향상
프록시 서버 중 일부는 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장해 둔다. 이렇게 캐시해 두고 난 후, 캐시 안에 있는 정보를 요청하는 요청에 대해서는 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약할 수 있다.네트워크 병목 현상 방지
불필요한 외부와의 연결을 하지 않아도 되기 때문에 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목 현상을 방지하는 효과를 얻을 수 있다.신뢰성(reliability)과 안정성
프록시 서버로 구성하면 뒤에 실제 서버들은 이중화나 클러스터링을 통해 특정 서버가 문제 생겨도 전체 서비스는 안정적으로 제공할 수 있으며 CDN을 연동한다면 DDOS 공격을 효과적으로 방어하여 서비스 안정성을 높일 수 있다.확장성
프록시 서버와 클러스터로 구성하면 사용자가 증가할 경우 상황에 맞게 웹 서버나 WAS 등을 유연하게 늘릴 수 있다. 또한 리버스 프록시 앞에 L4 나 로드 밸런서를 붙여서 Round Robin(RR), Least connection 등 상황에 맞는 분배 알고리즘을 적용해 서비스 신뢰성을 높일 수 있다.
프록시 서버의 위치에 따른 종류
포워드 프록시
클라이언트 대신 서버에게 요청을 전달해주며 실제 클라이언트가 누군지 알 수 없다.리버스 프록시
실제 서버 대신 클라이언트의 요청을 받아 실제 서버의 정보를 숨긴다.
Forward 프록시 클라이언트의 요청을 서버에 대신 전달하고 전달받은 응답을 다시 클라이언트에 전달한다. 클라이언트는 원격의 목적지 서버의 주소를 기반으로 자원을 요청하고 프록시 서버는 클라이언트 대신 그 주소를 받아 목적지 서버에 연결하고 자원을 가져온다. 실제 서버는 클라이언트의 주소를 알지 못한다.
이 경우 대역폭 사용을 감소시킬 수 있다는 점과 정책 구현에 있어 다루기 쉬우면서도 비용이 저렴하다는 장점이 있다. 또한 사용자가 정해진 사이트만 접속할 수 있게 하는 등 웹 사용 환경을 제한할 수 있어 기업 환경 등에서 많이 사용된다.
최근에는 프록시 서버에 바로 연겨하기 보다는 VPN(Virtual Private Network)을 주로 사용해 악의적인 프록시 서버에 연결되어 정보를 탈취하는걸 막아 가상 네트워크로 오고가는 정보를 모두 암호화 해준다.
Reverse 프록시 리버스 프록시는 서버 앞단에 위치하여 서버들을 제어하고 보호한다. 클라이언트는 리버스 프록시 서버의 주소를 목적지 서버로 하여 데이터를 요청한다. 클라이언트는 실제 서버가 아닌 리버스 프록시 서버를 일반적인 보통 서버로 보게 된다. 프록시 서버는 클라이언트 요청을 받아 실제 서버에 데이터 요청을 하고 응답된 데이터를 클라이언트로 전달한다.
리버스 프록시는 어느 서버에 요청을 보낼지 결정하는 라우팅
기능과 한 서버에 부하를 막기 위해 여러 서버에 요청을 분산시켜주는 로드 밸런싱
기능도 제공한다. 또한 SSL/TLS 암호화 기능을 적용하여 효율적으로 암호하 통신을 진행하기도 한다.
보통 기업 네트워크 환경에서 내부 네트워크(WAS, DBMS)와 외부 네트워크 사이에 DMZ
라고 부르는 구간이 존재한다. DMZ에는 메일 서버, 웹 서버, FTP 서버 등 외부 서비스를 제공하는 서버가 위치하게 된다. 리버스 프록시를 DMZ에 두고 실제 서비스 서버는 내부망에 위치시킨다. WEB-WAS로 분리된 구조에서 WEB이 리버스 프록시라고 볼 수 있다.
DMZ
내부 네트워크에 존재하지만, 외부에서 접근할 수 있는 특수한 네트워크 영역을 말한다. 방화벽 설정을 이용하여 DMZ에서 내부로의 연결은 불가능하지만 반대로 내부에서 DMZ로의 연결은 가능하다.
예를 들어, 사내 시스템 중 외부에서 접속하는 시스템으로 웹 서버, 이메일 서버, FTP 서버등이 있고 이 영역을 A이라 하자. 그 외 내부에서만 사용하는 영역은 B이다. 외부에 열린 A에서 B로의 접속은 보안상 위험이 있음으로 접속을 막는다. 따라서 A를 통해 내부 시스템에 접속이나 침입은 불가능하다. B에서 A로의 접속은 보안상 우려가 없으니 접속을 허가한다.
이러한 예를 위의 그림에 적용했을 때 시스템 영역 A는 DMZ에 위치하고 시스템 영역 B는 내부 네트워크가 된다. 즉, 외부 연결이 필요한 시스템은 DMZ에 배치한다. 모든 연결이 DMZ로 가능한 것이 아니라, 알맞은 서비스만 연결이 되도록 방화벽 설정이 필요하다. DMZ에서 내부로의 연결은 불가능하지만 반대로 내부에서 DMZ로의 연결은 가능하다. 이는 또 다른 방화벽 설정으로 구현 가능하다.
외부 네트워크에서 DMZ로 가는 연결은 일반적으로 포트 주소 변환(PAT)을 통해 제어된다.
포트 주소 변환(PAT, Port Address Translation)
외부 네트워크상의 호스트 및 포트와 내부 네트워크 상의 호스트 및 포트간에 이뤄지는 TCP(UDP) 통신을 변환해주는 네트워크 장비의 기능. 하나의 IP 주소를 가지고 여러 개의 내부 호스트를 사용할 수 있다.
DMZ는 방화벽 설정 옵션을 통해 만들어지는데, 이 설정 옵션을 통해 각각의 네트워크는 방화벽에 서로 다른 포트를 사용하게 연결하게 된다. 이것을 삼각 방화벽 설정 이라고 부른다. 더 강력한 방법은 두 개의 방화벽을 사용하는 것으로 DMZ는 이 두 방화벽 중간에 위치하며, 두 방화벽과 연결된다. 하나의 방화벽은 외부 네트워크와 연결되고 다른 방화벽은 내부 네트워크와 연결된다. 이런 구성 형식을 차단된 서브넷 방화벽 이라고 한다.
DMZ 네트워크를 이해하자 https://brunch.co.kr/@sangjinkang/51
[IT상식] DMZ 서버란? https://itprogramming119.tistory.com/entry/IT-%EC%83%81%EC%8B%9D-DMZ-%EC%84%9C%EB%B2%84%EB%9E%80
포워드 프록시와 리버스 프록시의 차이점 https://www.lesstif.com/linux-core/linux-web-server-web-application/forward-proxy-reverse-proxy
Foward Proxy & Reverse Proxy 차이점 https://itchipmunk.tistory.com/463