CS
[CS] 네트워크 - 프록시 Proxy
pearhyunjin
2024. 5. 13. 16:29
프록시 서버
클라이언트에서 서버로 접속할때 직접 접속하지 않고 중간에 대신 전달해주는 서버.
동작 원리
- 요청 : 사용자가 웹 브라우저에서 도메인 입력
- 전달 : 요청에 대하여 캐시 역할을 하는 프록시 서버로 전달
- 확인 : 프록시 서버 내에 도메인 홈페이지의 페이지를 가지고 있는지 체크
- 가진 경우 : 자신이 최신 버전인지 확인하고 갱신할 부분만 가져옴
- 가지지 않은 경우 : 홈페이지가 있는 서버와 연결해 페이지 가져옴
필요한 이유
- 분산처리 : 캐시사용, 로드 밸런싱
분산 처리를 통한 전송 시간 절약, 외부 트래픽을 줄임으로써 병목현상 방지할 수 있다.
프록시 서버 중 일부는 프록시 서버에 요청된 내용을 캐시를 사용해 저장하고 그에 대한 재요청을 추가적인 서버 접속 없이 수행한다. - 보안 : 요청과 응답 필터링을 통해 보안을 강화할 수 있다.
프록시 서버를 이용하지 않으면 서버 주소가 쉽게 노출되고 다른 익명 사용자가 접근하기 쉬워진다.
프록시 서버를 경유하면 서버 IP 숨기는 것 가능 + 프록시 서버를 방화벽으로 사용하기도 함
종류
- Forward 프록시
클라이언트가 인터넷에 직접 접근 안하고 Forward Proxy Server가 요청을 받아 인터넷에 연결한 뒤 결과를 클라이언트에 전달한다.
클라이언트 -> Forward Proxy -> Internet -> 결과 클라이언트에 전달- 로컬 디스크에 데이터 저장
- 대역폭 사용 감소
- 접근 정책 구현에 있어 다루기 쉽고 비용이 저렴
- 정해진 사이트만 연결 가능해 웹 사용 환경 제한 가능 -> 기업에서 많이 이용
- 클라이언트 호스트들은 사용 중인 웹 브라우저를 이용해 프록시 서버 사용 설정해야 하기 때문에 프록시 사용을 인식할 수 있음

- Reverse 프록시
클라이언트가 인터넷에 데이터를 요청하면 리버스 프록시가 요청을 받아 내부 서버에서 데이터 받은 후 클라이언트에 전달한다.
클라이언트 -> 인터넷 -> Reverse Proxy -> 서버에서 데이터 받아 클라이언트 전달- 클라이언트는 프록시 서버 연결 인식 할 수 없고 최종 사용자가 요청 리소스에 직접 접근하는 것 처럼 느낌
- 클라이언트는 내부 서버 정보 알 필요 없이 리버스 프록시에만 요청하면 됨
- 내부 서버가 직접 서비스 제공해도 되지만 리버스 프록시 거치는 이유는 보안때문임

- Forward vs. Reverse
- End Point
- Forward : 클라이언트가 요청하는 End Point가 실제 서버 도메인이며 프록시는 그 둘 사이에서 통신해준다.
- Reverse : 클라이언트가 요청하는 End Point가 프록시 서버 도메인이며 실제 서버 정보는 클라이언트가 알 수 없다. - 감추는 대상
- Forward : 클라이언트
- Reverse : 서버
- End Point
방화벽 vs. 프록시 방화벽
- 방화벽 Firewall
보안 규칙에 기반해 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템으로, 신뢰할 수 있는 내부 네트워크 부분과 신뢰할 수 없는 외부 네트워크 간의 장벽을 만든다. 들어오는건 어렵고 나가는건 쉽다.
- 프록시 방화벽
세션에 포함되어 있는 정보의 유해성 검사를 위한 것으로 방화벽에서 세션을 종료하고 새로운 세션을 만드는 방식이다.
출발지 ~ 목적지의 세션을 가로채어 출발지 ~ 방화벽 / 방화벽 ~ 목적지까지의 두 세션으로 만든 다음 하나의 세션에서 다른 세션으로 정보를 넘겨주기 전에 검사를 수행한다. 속도는 느리지만 더 많은 검사가 가능하고 프로토콜 변경 등 추가적 기능 수행이 가능하다.