Proxy
클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이다.
서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 프록시라 하고, 그 중계 기능을 하는 것을 프록시 서버라고 부른다.
사용이유는 보안성의 이유로 직접 통신할 수 없는 두 점 사이에서 대리로 통신을 수행하면서 보안성, 성능, 안전성을 향상시키기 위해서이다.
Proxy를 사용한 데이터 요청 흐름
- 브라우저에 웹사이트 주소를 입력한다.
- 프록시 서버가 사용자의 요청을 수신한다.
- 프록시 서버는 액세스하려는 웹 서버로 요청을 전달
- 웹서버는 응답데이터를 프록시 서버로 보냄
- 프록시 서버가 사용자에게 응답
한마디로 그냥 클라이언트랑 웹서버 사이에서 데이터를 한번 거쳐서 요청하고 응답하는 중간서버,,?
Proxy의 종류
프록시는 네트워크상 위치하는 곳과 역할에 따라서 Forward Proxy와 Reverse Proxy로 나눈다.
🔍 Forward Proxy
Forward Proxy는 이름 그대로 앞에 위치한다.
클라이언트 쪽에 위치해 클라이언트의 요청을 받아서 인터넷을 통해 서버에 데이터를 요청한다.
데이터 응답도 인터넷을 통해서 받고 Forward Proxy를 한번 거쳐서 proxy가 클라이언트에 데이터를 응답하는 구조이다.
좀 더 자세하게 말하자면
1. 클라이언트가 데이터를 요청할 타겟주소를 설정해서 Forward Proxy에 보낸다.
-> 클라이언트에 타겟주소에 직접 요청 ❌❌
2. Forward Proxy가 타겟주소에 데이터를 요청한다.
3. 타겟주소에 해당하는 서버는 응답데이터를 Forward Proxy에 전달
4. Forward Proxy는 서버로부터 받은 응답데이터를 클라이언트에 전달한다.
❓ Forward Proxy는 주로 어디서 사용할까?
Forward Proxy는 주로 사용자의 IP를 숨기거나 차단된 웹사이트에 접근하는 데 많이 사용한다.
예를 들어, 회사 내부에서 인터넷 접속을 제어할 때, VPN을 사용해서 국가 제한을 우회할 때 사용한다.
👍🏻 Forward Proxy의 장점
1. 클라이언트 보안
사용자가 요청하고자 하는 데이터를 가진 서버에 직접 접근하는 것을 막을 수 있다.
2. 캐싱
사용자가 웹 페이지에 접근하면 프록시 서버는 해당 페이지 서버의 정보를 임시보관 해둔다(캐싱)
그래서 다른 클라이언트가 중복된 데이터를 요청할 때 캐시된 정보를 그대로 반환한다.
이는 서버의 부하를 줄일 수 있다.
3. 암호화
사용자의 요청은 포워드 프록시 서버를 암호화하여 통과한다.
암호화된 요청은 최소한의 필요한 정보만을 담는다. 이는 클라이언트의 ip를 보호하는 효과가 있다.
따라서 서버에서 IP를 역추적해도 포워드 프록시 서버 IP만 보이고 진짜 클라이언트의 IP는 알지 못한다.
🔍 Reverse Proxy
Reverse Proxy는 Forward Proxy와 반대로 서버(WAS)앞에 위치한다.
클라이언트는 웹 서버에 직접 요청을 보내지만 이때 서버가 바로 요청을 받는 것이 아니라 Reverse Proxy가 요청을 가로채(?) 먼저 받고 이 요청을 서버에 전달한다.
여기서 클라이언트는 서버에 보냈다고 생각하지 Proxy서버가 요청을 받았는지 모름
좀 더 자세하게 말하자면
1. 클라이언트가 웹 서버에 요청을 직접 보낸다.
2. Reverse Proxy가 중간에서 요청을(가로채는 느낌) 먼저 받는다.
3. 요청을 먼저 받은 Reverse Proxy가 서버로 요청을 보낸다.
4. 응답 데이터 역시 Reverse Proxy로 보내고 Reverse Proxy가 응답데이터를 클라이언트로 보낸다.
❓ Reverse Proxy는 주로 어디서 사용할까?
Reverse Proxy는 주로 서버의 부하를 줄이기 위해 여러 서버로 요청을 분산하는 용도로 많이 사용한다.
예를 들어 로드 밸런서로 서버의 부하를 분산하거나, 캐싱 서버로 사용해 요청에 대한 응답 시간을 줄인다.
👍🏻 Reverse Proxy의 장점
1. 로드 밸런싱
프록시는 로드 밸런서 역할을 할 수 있다.
요청을 여러 대의 서버로 분산 요청하고 서버의 상태를 항상 모니터링 하고 클라이언트가 유효한 서버로 연결될 수 있도록 한다.
2. 보안 강화
리버스 프록시는 포워드 프록시와 반대로 서버의 IP주소를 노출시키지 않을 수 있다.
이는 공격자의 DDoS과 같은 공격을 막는데 유용하다.
클라이언트가 실제 서버의 IP를 알 수 없고, Reverse Proxy가 공격을 대신 방어할 수 있다
DDoS공격이란?
DDos 공격은 분산 서비스 거부 공격으로 다수의 서버, pc등을 이용해 비정상적인 트래픽을 유발시켜서 대상 시스템을 마비시키는 공격행위이다.
공격자는 취약한 서버를 공격하여 악성 코드를 배포하고, 유포지/경유지 서버에서 악성 코드를 내려 받은 서버/기기들을 이용해서 봇넷을 구축한다.
공격자는 봇넷에 명령을 전달하여 대규모의 트래픽을 유발시키거나, 취약한 서버를 악용하여 반사공격을 수행한다.
봇넷 : 약성코드 등에 의해 감역된 피해pc, IoT기기, 서버들로 구성된 네트워크 집단으로 주로 공격자의 공격 도구로 사용됨
-KISA-
3. 캐싱
자주 요청되는 데이터를 캐싱하여 성능을 향상시킨다.
4. 암호화
Reverse Proxy는 SSL/TLS 암호화를 통해 클라이언트와 서버 간의 안전한 통신을 지원한다.
서버가 직접 SSL 암호화/복호화 작업을 하는데는 상당한 컴퓨팅 비용이 든다.
BUT@@!! Reverse Proxy는 클라이언트와의 통신에서 발생하는 모든 SSL 암호화/복호화 작업을 대신 처리해준다.
이를 통해 서버는 암호화되지 않은 상태로 데이터 처리가 가능하고 서버 부담이 줄어든다
Reverse Proxy에서의 SSL/TLS 암호화 적용 과정
1. 클라이언트가 HTTPS 요청을 보내면 Reverse Proxy가 요청을 받는다.
2. Reverse Proxy가 SSL 복호화를 진행한다. (암호화된 데이터를 복호화하여 원본 데이터를 얻는다.)
3. Reverse Proxy는 서버에 복호화된 데이터를 보내 서버는 복호화작업 없이 데이터를 처리한다.
4. 서버는 처리 후 응답 데이터를 Reverse Proxy로 전달한다.
5. Reverse Proxy는 서버로부터 받은 응답 데이터를 암호화(SSL 암호화)하여 클라이언트에 보내준다.
💡 HTTPS는 HTTP에 SSL/TLS 암호화를 사용한 것
Reverse Proxy에서의 SSL/TLS 암호화 처리 장점
서버 부담 감소 : 서버가 직접 암호화/복호화 작업을 하지 않아 서버의 리소스를 절약하고 요청 속도가 빨라진다.
보안 강화 : Reverse Proxy가 암호화/복호화 작업을 처리하면서, 모든 트래픽을 중앙에서 제어하고 보안 관리가 수월해진다.
SSL 인증서 관리 : SSL인증서를 Reverse Proxy에서 관리할 수 있어 서버마다 개별적으로 인증서를 설정하지 않아도 된다.
💡 SSL 인증서란 데이터를 SSL/TLS로 암호화하고 복호화 하는 데 필요한 공개 키와 인증 정보를 포함한 문서이다.
+ 웹 어플리케이션 방화벽(WAF)의 역할도 수행한다.
Reverse Proxy는 웹 애플리케이션 방화벽(WAF) 역할을 하여, SQL 인젝션, 크로스 사이트 스크립팅(XSS) 같은 공격을 차단할 수 있다. 이를 통해 서버로 들어오는 요청을 분석하고, 미리 정의된 보안 규칙에 따라 악성 요청을 걸러내어 보안 정책을 강화할 수 있다. 리버스 프록시는 서버로 전달되기 전에 모든 요청을 검사하기 때문에 보안 위협을 사전에 방지하는 중요한 역할을 한다.
⬇️⬇️ 참고 했음 ⬇️⬇️
'[ STUDY ] > 끄적끄적..' 카테고리의 다른 글
[ 알아보자 ] HandlerMapping & HandlerAdapter 흐름 (1) | 2024.10.21 |
---|---|
[ 알아보자 ] HTTP통신을 할 때 어떤식으로 서버에 데이터를 요청하나... (10) | 2024.10.17 |
[ 알아보자 ] Spring Security 다시 알아보자.... (0) | 2024.10.16 |
[ 알아보자 ] WEB과 WAS (0) | 2024.10.16 |
[ 알아보자 ] HTTP...그리고 JWT... (0) | 2024.10.15 |