일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 얕은복사
- 조인
- 자료구조
- java
- NoSQL
- index
- Database
- immutable
- 프록시서버
- transaction
- reverse프록시
- 데이터베이스
- 불변객체
- 인덱스
- ERD
- acid
- forward프록시
- 이진탐색
- 방어적복사
- mutable
- binarySearch
- 정규화
- 알고리즘
- 깊은복사
- proxy
- RDBMS
- Today
- Total
jacketList
프록시 서버[Proxy Server] 본문
프록시(proxy)는 '대리' 라는 의미를 갖고 있음
즉 프록시 서버는 서버와 클라이언트 사이의 '중계자'로써의 역할을 수행한다.
웹과 서버간 통신을 하는데 왜 중간에 프록시 서버를 거쳐 통신을 해야할까?
프록시 서버를 사용하는 이유로는 아래와 같은 이유가 있다.
- 보안
클라이언트에서 다이렉트로 서버로 요청을 보낸다면 서버의 주소가 쉽게 노출되기 때문에 익명의 사용자가 서버로 접근하기 쉬워진다.
이를 방지하기 위해 프록시 서버를 중간에 거치도록 하여 서버의 IP를 숨김으로써 외부로부터의 위험을 막아준다.
프록시 서버를 방화벽으로 사용하기도 한다.
※방화벽(FireWall)
- 보안 규칙에 기반하여 오고가는 네트워크 트래픽을 모니터링 하고 제어하는 네트워크 보안 시스템
- 신뢰할 수 있는 내부 네트워크 신뢰할 수 없는 외부 네트워크 간의 장벽을 구성
- 캐시
프록시 서버는 캐시를 사용하여 속도를 빠르게 하는데 유리하다
- 프록시 서버는 요청된 내용들을 캐시를 이용하여 저장하고 다음 요청이 왔을 때 캐시에 저장된 정보를 사용하여 서버를 거치지 않고 바로 응답할 수 있다.
즉 데이터의 전송시간 절약 + 외부와의 불필요한 연결 x + 외부와의 트래픽을 줄여 네트워크 병목현상 방지 등의 이점이 있다.
- 우회
IP를 통해 접속을 감지하는 사이트를 프록시 서버를 통해 우회할 수 있다
만약 위와같이 3명의 클라이언트가 인터넷과 바로 통신 한다면 IP가 직접적으로 드러나 보안적으로 취약할 수 밖에 없다.
그래서 중간에 프록시 서버를 두어 보안적인 취약점을 방지할 수 있다.
프록시의 종류
- Forward 프록시
클라이언트가 naver.com에 접속한다고 가정해보자
Forward 프록시는 클라이언트의 뒤에 위치하여 클라이언트가 요청한 naver.com의 리소스를 서버와 통신하며 대신 받아와 클라이언트에게 전달해준다.
이 Forward proxy가 통상적으로 우리가 프록시라고 부르는 것이다.
포워드 프록시를 사용했을 때 이점은 무엇인가?
- 클라이언트의 보안(Security)
- 정부,기업 같은 기관에 속한 사람들의 제한적인 인터넷 사용을 위해 방화벽을 사용하는 포워드 프록시 서버를 방화벽과 같은 개념으로 제한을 위해 사용한다.
- 캐싱(Caching)
- 이용자가 어떤 웹 페이지에 접속했을 때 프록시 서버는 해당 서버의 정보를 캐싱(임시보관) 해둔다.
- 해당 페이지에 똑같이 접근하거나 다른 클라이언트가 해당 페이지 요청시 캐시된 정보를 반환함으로써 서버의 부하를 줄일 수 있다.(그림과 같이 여러명의 클라이언트가 동일한 페이지에 접근하면 캐싱 된 페이지 정보를 불러오므로 훨씬 빠르게 조회가 가능)
- 암호화(Encryption)
- 클라이언트의 요청은 포워드 프록시 서버를 통과할 때 암호화 된다.
- 암호화된 요청은 다른 서버를 통과할 때 최소한의 정보만 갖게 되는데, 이는 곧 클라이언트의 IP를 감춰주는 보안 효과를 내준다.
- Reverse 프록시
리버스 프록시는 그림처럼 웹서버/WAS 앞에 놓여 있는 것을 말한다.
클라이언트가 웹 서비스를 요청할 때 서버에 요청하는 것이 아닌, 프록시 서버로 요청하게 되고 프록시 서버가 배후(reverse)의 서버로부터 데이터를 가져오는 방식이다.
즉 리버스 프록시는 배후에 있는 서버에 대한 프록시이며, 본서버의 IP정보를 숨길 수 있는 효과를 얻게 된다.
왜 내부 서버에서 직접 서비스 제공을 하지 않는가?
보통 기업 네트워크 환경에서 DMZ라고 부르는 (내부 네트워크/외부 네트워크에 둘다 접근할 수 있는 공간)이 존재한다.
DMZ구간이 존재하는 이유?
기업은 LAN(Local Area Network)만을 사용하여 내부 시스템을 운영하기 때문에 외부 서비스를 이용하는데 제한이 생긴다.
때문에 웹 검색, 이메일링, FTP 등 외부 서비스를 제공하기 위해 해당 구간에 외부 서비스를 제공하는 서버가 위치하게 된다.
WAS를 DMZ에 놓고 서비스를 해도 되지만 WAS는 DB서버와 연결되어 있기 때문에 WAS가 해킹당할 경우 DB서버까지 해킹당할 수 있는 문제가 발생할 수 있다.
따라서 리버스 프록시 서버를 DMZ에 두고 실제 서비스 서버는 내부망에 위치 시킨 후 서비스 하는 것이 일반적이다.
리버시 프록시 사용하면 뭐가 좋음?
- 로드 밸런싱(Load Balancing)
- 하루에도 수백만명이 방문하는 웹사이트와 같이 대량의 트래픽을 싱글 서버로 감당하긴 힘들것 이다.
- 리버스 프록시 서버를 여러개의 본 서버들 앞에 두어 여러개의 서버로 분산시키며 특정 서버가 과부화 되지 않게 로드 밸런싱이 가능하다.
- 서버 보안
- 본래 서버의 IP주소를 노출시키지 않을 수 있다. 따라서 해커들의 DDoS 공격과 같은 공격을 막는데 유용하다.
- SSL 암호화
- 본래 서버가 클라이언트와 통신할 때 SSL(or TSL)로 암호화, 복호화를 할 경우 비용이 많이 들게 된다.
- 그러나 리버스 프록시를 사용하여 들어오는 요청을 모두 복호화 하고 나가는 응답을 암호화 해주므로 클라이언트와 안전한 통신을 할 수 있고 본래 서버의 부담을 줄여줄 수 있다.
그렇다면 포워드 프록시(Foward Froxy)와 리버스 프록시(Reverse Froxy)의 차이점이 뭐야?
- 위치
- 포워드 프록시: 클라이언트의 앞
- 리버스 프록시: 웹서버/WAS 앞
- 통신 대상
- 포워드 프록시: 클라이언트와 프록시 서버가 통신하여 인터넷을 통해 외부에서 데이터를 가져옴
- 리버스 프록시: 프록시 서버와 내부망 서버가 통신하여 인터넷을 통해 요청이 들어오면 프록시 서버가 응답해줌
- 감춰지는 대상
- 리버스 프록시: 프록시 서버URL로만 접근이 가능하기 때문에 본서버의 IP정보를 숨길 수 있음
- 포워드 프록시: 클라이언트 -> 포워드 프록시 -> 서버 순으로 요청을 하므로 클라이언트의 IP를 숨길 수 있음
References
https://lazywon.tistory.com/69
https://study-ihl.tistory.com/170
'Cs > 네트워크' 카테고리의 다른 글
TCP/UDP (1) | 2023.11.21 |
---|---|
SOP 와 CORS (1) | 2023.11.21 |
쿠키(Cookie)와 세션(Session) (0) | 2023.11.18 |