프록시란?
대신, 대리 라는 의미를 가진 프록시
보안 분야에서 주로 보안상의 이유로 직접 통신할 수 없는 두 점 사이에서 통신할 경우 중계기로서 대리로 통신하는 기능을 의미합니다.
여기서 중계 기능을 하는 것을 프록시 서버 라고 부릅니다.
보통 중복되는 데이터를 반복하여 전달하는 상황이 발생하는데, 이렇게 동일한 요청을 매번 처리하는 것은 리소스 낭비와 서버의 과부하로 이어집니다. 이때, 프록시를 사용하면 클라이언트에게는 빠른 속도를 서버에게는 불필요한 부하를 줄여줍니다.
포워드 프록시
Client와 Server 사이에 위치한 프록시 서버
요청과 응답은 Proxy Server를 거쳐서 서버로 들어오게 됩니다.
그리고 서버의 위치는 Client에 가깝게 구성되어있습니다.
동작 방식
1. 클라이언트가 웹 요청을 보낼 때 먼저 클라이언트의 프록시 서버로 이동합니다.
2. 프록시 서버가 클라이언트의 IP주소를 자체 IP주소로 변경합니다.
3. 프록시 서버가 웹 요청을 애플리케이션 서버로 전달합니다.
4. 애플리케이션 서버가 요청을 처리하고 응답 데이터를 다시 프록시 서버로 보냅니다.
5. 프록시 서버가 응답을 다시 클라이언트에 전달합니다.
간추려보자면,
1. 클라이언트는 목적지 서버 주소를 기반으로 요청 패킷을 프록시 서버에 전송합니다.
2. 프록시 서버는 목적지 주소를 확인하여 목적지 서버 대신 클라이언트에 패킷을 전달합니다.
Forward 프록시 서버의 장점
1. 클라이언트의 보안
방화벽처럼 해당 기관에 속한 사람들이 방문하고자 하는 웹사이트에 직접 방문하는 것을 막을 수 있습니다.
2. 캐싱
해당 페이지 서버의 정보를 캐싱해둡니다. 따라서 똑같은 페이지에 접근할 때, 캐시된 정보를 그대로 반환해서 서버의 부하를 줄여주고 사용자에게 빠른 응답을 줄 수 있습니다.
3.암호화
프록시 서버를 통과할 때 클라이언트의 요청은 암호화 됩니다.
따라서, 다른 서버를 통과할 때, 클라이언트의 ip를 감추어 주기에 보안효과를 줍니다.
이렇게만 생각했을때, VPN과 차이점이 뭘까? 라는 생각을 하게 되었습니다.
VPN vs 프록시 서버
VPN은 암호화를 프록시 서버와 결합하여 보다 안전한 통신 채널을 만듭니다.
즉, 클라이언트의 트래픽을 암호화하여 VPN 서버로 라우팅합니다. 그때, VPN 서버가 IP주소를 익명화하여 타사 웹 사이트로 라우팅합니다.
프록시 서버와 VPN은 모두 조직의 개인 정보 보호 및 보안을 강화합니다. 또한, 둘다 조직 내부 IP주소를 익명화합니다.
하지만, VPN에는 암호화 기능이 있기 때문에 프록시 서버보다 광범위한 애플리케이션과 기능을 제공합니다. 이부분 때문에 기업에서는 프록시 서버 대신에 VPN을 사용하는 것을 선호합니다.
2가지로 차이점을 정리해보겠습니다.
1. 트래픽이 들어올 때
Foward 프록시가 해결해줄 수 없고, Reverse 프록시의 경우 트래픽을 심사해서 분산해줄 수 있습니다. 하지만, 들어오는 트래픽을 제어할 수는 없습니다.
VPN은 네트워크를 통해 액세스 할 수 있는 사람을 제어할 수 있습니다.
2. 트래픽이 나갈 때
Foward 프록시는 나가는 트래픽을 익명화할 수 있습니다.
VPN도 나가는 트래픽을 익명화하고, 암호화까지 할 수 있습니다.
리버스 프록시
포워드 프록시처럼 요청과 응답이 Proxy Server로 이동합니다. 하지만, Forward Proxy와 다르게 서버들이 내부망으로 구성됩니다.
따라서, 들어오는 모든 인터넷 트래픽이 애플리케이션에 도달하기 전에 모니터링하고 차단할 수 있습니다.
보통 프록시 서버를 구축할 때에는 위와 같이 사용하게 됩니다.
일반적으로 웹 서버는 (Apache, NginX)를 의미합니다. 그리고 웹서버가 리버스 프록시를 해주는 서버입니다.
하지만 해당 서버는 별도의 서버에 존재해야하고, 물리적인 한 서버에 존재한다면 reverse proxy라고 할 수 없습니다.
저의 경우는 VPC에서 Docker를 통해 가상 서버를 구성하고, 프록시서버와 WAS서버를 별도로 구성해서 관리합니다.
위처럼 구성하면, 내부의 포트가 10.10.5.5:80 으로 연결되는 프록시 서버가 있습니다.
실제로 접근할 서버는 10.10.5.10/24의 웹서버들에 접속하는 것이고, 프록시 서버에서 순서대로 부하를 분산해서 나눠줍니다.
이렇게 접근하면, 한개의 서버에 과중되지 않을 수 있으며, 혹시 서버가 터지거나 문제가 생기면, 다른 서버에서 처리를 할 수 있게 됩니다.
Reverse 프록시 서버의 장점
1. 로드벨런싱
수백만명의 방문자가 있다면, 싱글 서버로 대량의 트래픽을 감당하기 어렵습니다.
하지만 리버스 프록시 서버를 여러개의 본 서버들 앞에 두면 특정 서버가 과부하되지 않게 로드밸런싱이 가능합니다.
2. 서버 보안
리버스 프록시를 사용하면 서버 측 보안에 유리합니다.
본래 서버의 IP를 노출하지 않기에 해커들의 DDOS공격 등을 방어할 수 있습니다.
3. 캐싱
포워드 프록시와 같이 캐싱 역할을 서버단 앞에서 해줄 수 있습니다.
4. 암호화
SSL 암호화를 할 때, 내부 네트워크 망에서는 HTTP로 전송하고, 프록시 서버부터 Client까지 들어오는 요청을 복호화하고, 나가는 응답을 암호화해주면 서버의 부담을 줄여줄 수 있습니다.
왜냐하면, 서버에서 복호화, 암호화는 비용이 많이 들기 때문입니다.
참고 : https://aws.amazon.com/ko/compare/the-difference-between-proxy-and-vpn/
'CI&CD > Docker' 카테고리의 다른 글
AWS에서 Docker 위에 Jenkins 설치(2) - docker 설치부터 jenkins로 자동배포까지 (0) | 2023.01.28 |
---|---|
AWS에서 Docker 위에 Jenkins 설치(1) - docker설치 이유 및 docker설치하기 (2) | 2023.01.28 |