1. Proxy (프록시) 이란?
ㅇ 다른 사람을 대신/대리하여 무엇인가를 하는 것 (중개, 仲介 : 두 당사자 간에 일을 주선함)
- 주로, 1 이상의 네트워크 인터페이스를 갖고,
- 응용계층에서, 특정 유형으로 요청된 연결을 다른 연결로 중계하는 역할을 수행
2. `프록시`,`게이트웨이`의 비교
ㅇ 프록시 : 동일 프로토콜로 연결
- 통신 내용 이해할 필요 있음
- 필요에 따라 내용 수정도 가능
- 서버 대신 응답 가능
ㅇ 게이트웨이 : 서로다른 프로토콜 간을 변환시켜주며 연결
- 통신 내용을 그대로 전달
- 내용 수정 불허
- 클라이언트가 중간에 게이트웨이 존재 여부를 전혀 의식 못하게 함
3. 프록시의 위치 및 유형
ㅇ 클라이언트측과 서버측 간 둘 중 하나에서, 내부 사설망과 외부 인터넷망이 접하는 경계에 위치
ㅇ 포워드형 프록시 (Forward Proxy) : 주로, 데이터 수신용으로, 사용자 가까운 쪽에 위치
- 내부 클라이언트의 요청을 대신하여 외부 서버와 통신
. 사용 목적 : 클라이언트 보호,익명성 제공, 인터넷 접근 제어 등
* (인터넷 회선료가 비쌌던 초창기에 주로 사용)
ㅇ 리버스형 프록시 (Reverse Proxy) : 주로, 데이터 제공용으로, 서버들 가까운 쪽에 위치
- 외부 클라이언트 요청을 내부(백엔드) 서버로 전달하여, 보안 및 부하 분산 수행
. 사용 목적 : 내부 서버 보호, 로드 밸런싱, SSL 암호화 처리 등
* (오늘날 전형적인 형태임)
4. 프록시의 역할
ㅇ 중계 기능
- 주로 사용자를 대신/대리하여 서버에 접근 함
ㅇ 캐시 기능
- 자주 요구된 정보에 대한 일시적 저장, 빠른 응답, 병목 트래픽 및 대역폭 감소
ㅇ 보안 기능
- 네트워크 외부에서는 실제 사용자,서버의 위치를 감추는 등의 효과를 볼 수 있음
. 특히, IP주소의 익명성(숨김) 가능
ㅇ 방화벽 활용
- 잘 설정된 Proxy는 효율을 향상시키는 것과 동시에 좋은 Firewall 이 될 수 있음
. 여기서, 프록시 서버는 방화벽의 호스트에서 실행되는 전문화된 어플리케이션 또는
서버 프로그램으로서, 방화벽의 베스천 호스트에서 설치 되어 운용됨
ㅇ IP 주소 절약
- 통상 프록시 서버는, 외부 네트워크에 접속되는 유일한 장비이므로,
. 이 서버에서 만 유일한 공인 IP 주소가 필요
ㅇ 부적절한 사이트에의 접근 방지 등
5. 프록시의 동작 및 구분
ㅇ 프록시 서버의 동작 : (웹 관점)
- 기본 역할
. 원천 웹 서버(origin web server)를 대신하여 HTTP 요청을 처리하는 중간 서버
. 요청/응답을 저장(cache)할 수 있는 서버
- 이중적 역할
. 클라이언트와 상호작용할 때는 서버 처럼 동작
. 원천 웹서버와 상호작용할 때는 클라이언트 처럼 동작
- 명칭 : `웹 프록시 서버(Web Proxy Server)` 또는 `HTTP Proxy Server` 또는 `Web Cache`
ㅇ 프록시 서버의 구분 : 개인 프록시 및 공유 프록시
- 개인 프록시 : 보통, 클라이언트 컴퓨터 내에서 직접 실행되는 개인 전용 프록시 형태
. 웹브라우저 내장 기능 : 대부분의 웹브라우저들이 프록시를 자동/수동으로 설정 가능
.. 자동 설정 (PAC 파일), 수동 설정 (IP, Port 지정)
. 웹 프록시 툴 : 웹브라우저와 함께 동작하는 툴
.. 例) Burp Suite (웹 취약점 점검 및 해킹 툴)
- 공유 프록시 : 대부분의 경우, 여러 클라이언트들 또는 서버들을 대신하는 중앙 집중형
. 즉, 프록시 서버 (Proxy Server)는, 네트워크적인 관점에서 다수를 대신하여 일을 하는 서버
. 例)
.. 웹 프록시 서버 : HTTP 프록시 서버 (HTTP Proxy Server)
... 이를 웹 캐시(Web Cache)라고도 함
.. VoIP 프록시 서버 : 호(呼) 접속 및 교환 중개 ☞ SIP 구성요소 참조
... 사용자 위치 확인, 호 설정, 호 라우팅 수행 등
6. 프록시에 보안 채널 형성
※ ☞ SOCKS (Socket Secure, "SOCKetS") 참조
- SOCKS는, 범용 소켓 중계 프록시로써, 보안 채널을 일반화시킨 프로토콜
.. HTTP 이외에도, SMTP,FTP 등도 지원 가능
- 역할
. 클라이언트와 목적지 서버 사이의 소켓 연결을 중개
. 트래픽 내용을 해석하지 않고 그대로 전달
. 응용계층 프로그램에서 VPN 설정용 등으로 많이 사용