프록시 서버

섬네일|upright=1.3|alt=Two computers connected via a proxy server. The first computer says to the proxy server: "ask the second computer what the time is".|프록시 서버를 통해 연결된 두 컴퓨터 간의 통신. 앨리스의 개인 정보 보호를 위해 밥은 프록시에 대해서만 알고 앨리스를 직접 식별하거나 연락할 수 없다.

**프록시 서버**()는 컴퓨터 네트워크 용어로, 클라이언트가 리소스를 요청하고 서버가 해당 리소스를 제공하는 중간에서 동작하는 서버 애플리케이션이다.

파일이나 웹 페이지와 같은 리소스 요청을 처리할 수 있는 서버에 직접 연결하는 대신, 클라이언트는 요청을 프록시 서버로 보낸다. 프록시 서버는 요청을 평가하고 필요한 네트워크 트랜잭션을 수행한다. 이는 요청의 복잡성을 단순화하거나 제어하거나, 부하분산, 개인 정보 보호 또는 보안과 같은 추가적인 이점을 제공하는 방법으로 사용된다. 프록시는 분산 시스템에 구조와 캡슐화를 추가하기 위해 고안되었다. 따라서 프록시 서버는 서비스를 요청할 때 클라이언트를 대신하여 기능하며, 리소스 서버에 대한 요청의 실제 출처를 숨길 수 있다.

## 유형
프록시 서버는 사용자 **로컬 컴퓨터**에 있거나 사용자 컴퓨터와 인터넷 상의 목적지 서버 사이의 어떤 지점에 있을 수 있다. 수정되지 않은 요청과 응답을 전달하는 프록시 서버는 일반적으로 게이트웨이 또는 때로는 터널링 프록시라고 불린다. 포워드 프록시는 광범위한 소스(대부분의 경우 인터넷 어디에서나)에서 데이터를 검색하는 데 사용되는 인터넷 향 프록시이다. 리버스 프록시는 일반적으로 사설 네트워크의 서버에 대한 접근을 제어하고 보호하기 위한 프런트엔드로 사용되는 내부 향 프록시이다. 리버스 프록시는 일반적으로 부하분산, 인증, 암호화, 캐싱과 같은 작업도 수행한다.

### 공개 프록시
섬네일|upright=1.3|alt=Diagram of proxy server connected to the Internet.|인터넷 어디에서나 요청을 전달하는 공개 프록시
공개 프록시는 모든 인터넷 사용자가 접근할 수 있는 스토어 앤 포워드 프록시 서버이다. 2008년에 네트워크 보안 전문가 고든 라이언은 인터넷에 "수십만 개"의 공개 프록시가 운영되고 있다고 추정했다.

* 익명 프록시: 이 서버는 자신의 신원을 프록시 서버로 드러내지만, 클라이언트의 원래 IP 주소를 공개하지 않는다. 이 유형의 서버는 쉽게 발견될 수 있지만, 원래 IP 주소를 숨기기 때문에 일부 사용자에게는 유용할 수 있다.
* 투명 프록시: 이 서버는 자신을 프록시 서버로 식별할 뿐만 아니라, `X-Forwarded-For`와 같은 HTTP 헤더 필드 목록을 지원하여 원래 IP 주소도 검색할 수 있다. 이 유형의 서버를 사용하는 주된 이점은 웹사이트를 캐시하여 더 빠르게 검색할 수 있다는 것이다.

### 리버스 프록시

섬네일|upright=1.3|alt=A proxy server connecting the Internet to an internal network.|인터넷의 요청을 받아 내부 네트워크의 서버로 전달하는 리버스 프록시. 요청을 하는 클라이언트는 프록시에 연결하며 내부 네트워크에 대해 알지 못할 수 있다.
리버스 프록시(또는 서리게이트)는 클라이언트에게 일반 서버처럼 보이는 프록시 서버이다. 리버스 프록시는 요청을 처리하는 하나 이상의 일반 서버로 요청을 보낸다. 원본 서버의 응답은 마치 프록시 서버에서 직접 온 것처럼 반환되므로 클라이언트는 원본 서버를 알지 못한다. 리버스 프록시는 하나 이상의 웹 서버 근처에 설치된다. 인터넷에서 들어오고 인근 웹 서버 중 하나를 대상으로 하는 모든 인터넷 트래픽은 프록시 서버를 통과한다. "리버스"라는 용어는 웹 서버에 더 가깝게 위치하며 제한된 웹사이트만 서비스하는 "포워드 프록시"의 반대 개념에서 유래한다. 리버스 프록시 서버를 설치하는 데에는 몇 가지 이유가 있다.
* 암호화/SSL 가속: 보안 웹사이트가 생성될 때, SSL 암호화는 종종 웹 서버 자체에서 수행되지 않고 SSL 가속 하드웨어와 함께 장착된 리버스 프록시에서 수행된다. 또한, 호스트는 임의의 수의 호스트에 대해 SSL 암호화를 제공하기 위해 단일 "SSL 프록시"를 제공할 수 있으므로 각 호스트에 별도의 SSL 서버 인증서가 필요하지 않으며, SSL 프록시 뒤의 모든 호스트가 SSL 연결에 대해 공통 DNS 이름 또는 IP 주소를 공유해야 한다는 단점이 있다. 이 문제는 X.509 인증서의 SubjectAltName 기능 또는 TLS의 SNI 확장을 사용하여 부분적으로 극복할 수 있다.
* 부하분산: 리버스 프록시는 부하를 여러 웹 서버에 분산할 수 있으며, 각 서버는 자체 애플리케이션 영역을 서비스한다. 이 경우 리버스 프록시는 각 웹 페이지의 URL을 다시 작성해야 할 수 있다(외부에서 알려진 URL을 내부 위치로 변환).
* 정적 콘텐츠 제공/캐싱: 리버스 프록시는 그림 및 기타 정적 그래픽 콘텐츠와 같은 정적 콘텐츠를 캐싱하여 웹 서버의 부담을 덜 수 있다.
* 데이터 압축: 프록시 서버는 콘텐츠를 최적화하고 압축하여 로드 시간을 단축할 수 있다.
* 스푼 피딩: 웹 서버가 보낸 콘텐츠를 캐싱하고 클라이언트에게 천천히 "스푼 피딩"함으로써 웹 서버의 느린 클라이언트로 인한 리소스 사용량을 줄인다. 이는 동적으로 생성된 페이지에 특히 유용하다.
* 보안: 프록시 서버는 추가적인 방어 계층이며 일부 OS 및 웹 서버 특정 공격으로부터 보호할 수 있다. 그러나 웹 애플리케이션 또는 서비스 자체에 대한 공격으로부터는 어떠한 보호도 제공하지 않으며, 이는 일반적으로 더 큰 위협으로 간주된다.
* 엑스트라넷 발행: 인터넷에 연결된 리버스 프록시 서버는 조직 내부의 방화벽 서버와 통신하는 데 사용될 수 있으며, 방화벽 뒤의 서버를 유지하면서 일부 기능에 대한 엑스트라넷 접근을 제공한다. 이러한 방식으로 사용되는 경우, 이 서버가 손상될 경우 나머지 인프라를 보호하기 위한 보안 조치를 고려해야 한다. 이 서버의 웹 애플리케이션은 인터넷으로부터의 공격에 노출되기 때문이다.

#### 포워드 프록시 vs. 리버스 프록시
포워드 프록시는 클라이언트와 다른 시스템(대부분 네트워크 외부) 간에 트래픽을 라우팅하는 서버이다. 이는 사전 설정된 정책에 따라 트래픽을 규제하고, 클라이언트 IP 주소를 변환 및 마스킹하며, 보안 프로토콜을 적용하고, 알 수 없는 트래픽을 차단할 수 있음을 의미한다. 포워드 프록시는 내부 네트워크 내에서 보안 및 정책 적용을 강화한다. 리버스 프록시는 클라이언트를 보호하는 대신 서버를 보호하는 데 사용된다. 리버스 프록시는 클라이언트의 요청을 수락하고, 해당 요청을 여러 다른 서버 중 하나로 전달한 다음, 요청을 특별히 처리한 서버의 결과를 클라이언트에게 반환한다. 사실상 리버스 프록시는 클라이언트, 사용자 및 애플리케이션 서버 간의 게이트웨이 역할을 하며, 물리적으로 요청을 처리하는 서버의 신원을 보호하면서 모든 트래픽 라우팅을 처리한다.

## 용도
### 모니터링 및 필터링
#### 콘텐츠 제어 소프트웨어

콘텐츠 필터링 웹 프록시 서버는 프록시를 통해 양방향으로 전달될 수 있는 콘텐츠에 대한 관리 제어를 제공한다. 이는 인터넷 사용이 이용 목적 제한 방침을 준수하도록 보장하기 위해 상업 및 비상업 조직(특히 학교) 모두에서 일반적으로 사용된다.

콘텐츠 필터링 프록시 서버는 종종 인증을 지원하여 웹 접근을 제어한다. 또한 일반적으로 특정 사용자가 접근한 URL에 대한 자세한 정보를 제공하거나 대역폭 사용 통계를 모니터링하기 위해 서버 로그를 생성한다. 또한 데몬 기반 또는 ICAP 기반 안티바이러스 소프트웨어와 통신하여 네트워크에 진입하기 전에 들어오는 콘텐츠를 실시간으로 스캔하여 바이러스 및 기타 악성 소프트웨어로부터 보안을 제공할 수 있다.

많은 직장, 학교 및 대학은 건물 내에서 접근 가능하고 사용 가능한 웹사이트 및 온라인 서비스를 제한한다. 정부도 바람직하지 않은 콘텐츠를 검열한다. 이는 콘텐츠 필터라고 불리는 특수 프록시(상업 및 무료 제품 모두 사용 가능)를 사용하거나, 오픈 캐싱 아키텍처에 플러그인 확장을 허용하는 ICAP와 같은 캐시 확장 프로토콜을 사용하여 수행된다.

학생들이 필터를 우회하고 차단된 콘텐츠에 접근하기 위해 일반적으로 사용하는 웹사이트에는 종종 프록시가 포함되어 있으며, 사용자는 이 프록시를 통해 필터가 차단하려는 웹사이트에 접근할 수 있다.

요청은 URL 또는 DNSBL 블랙리스트, URL 정규식 필터링, MIME 필터링 또는 콘텐츠 키워드 필터링과 같은 여러 방법으로 필터링될 수 있다. 블랙리스트는 종종 웹 필터링 회사에서 제공하고 유지 관리하며, 종종 범주(포르노, 도박, 쇼핑, 소셜 네트워크 등)로 그룹화된다.

프록시는 요청된 URL이 허용 가능한 경우 콘텐츠를 가져온다. 이 시점에서 반환 경로에 동적 필터가 적용될 수 있다. 예를 들어, JPEG 파일은 살색 일치 여부에 따라 차단될 수 있거나, 언어 필터는 원치 않는 언어를 동적으로 감지할 수 있다. 콘텐츠가 거부되면 요청자에게 HTTP 가져오기 오류가 반환될 수 있다.

대부분의 웹 필터링 회사는 콘텐츠가 특정 유형일 가능성을 평가하는 인터넷 전반의 크롤링 로봇을 사용한다. 수작업은 불만 사항이나 콘텐츠 일치 알고리즘의 알려진 결함을 기반으로 결과 데이터베이스를 수정하는 데 사용된다.

일부 프록시는 데이터 손실 방지 등을 위해 아웃바운드 콘텐츠를 스캔하거나, 악성 소프트웨어에 대한 콘텐츠를 스캔한다.

#### 암호화된 데이터 필터링
웹 필터링 프록시는 SSL/TLS(전송 계층 보안)의 신뢰 사슬이 손상되지 않았다고 가정할 경우, 보안 소켓 HTTP 트랜잭션 내부를 들여다볼 수 없다. SSL/TLS 신뢰 사슬은 신뢰할 수 있는 루트 인증 기관에 의존한다.

클라이언트가 조직에 의해 관리되는 직장 환경에서는 장치가 프록시가 개인 키를 알고 있는 루트 인증서를 신뢰하도록 구성될 수 있다. 이러한 상황에서는 SSL/TLS 트랜잭션 내용에 대한 프록시 분석이 가능해진다. 프록시는 클라이언트가 프록시가 소유한 루트 인증서를 신뢰하기 때문에 효과적으로 중간자 공격을 수행한다.

#### 필터 및 검열 우회
목적지 서버가 요청의 출처를 기반으로 콘텐츠를 필터링하는 경우, 프록시를 사용하면 이 필터를 우회할 수 있다. 예를 들어, IP 기반 지리위치를 사용하여 특정 국가로 서비스를 제한하는 서버는 해당 국가에 위치한 프록시를 사용하여 서비스에 접근할 수 있다.

웹 프록시는 정부 검열을 우회하는 가장 일반적인 수단이지만, 인터넷 사용자 중 3% 미만만이 어떤 우회 도구도 사용하지 않는다.

일부 프록시 서비스 제공업체는 기업에 프록시 네트워크에 대한 액세스를 허용하여 비즈니스 인텔리전스 목적으로 트래픽을 재라우팅할 수 있도록 한다.

어떤 경우에는 사용자가 블랙리스트를 사용하여 필터링하는 프록시를 블랙리스트에 없는 위치에서 정보를 프록시하도록 설계된 서비스를 사용하여 우회할 수 있다.

섬네일|upright=1.7|많은 조직은 페이스북과 같은 인기 웹사이트에 대한 접근을 차단한다. 사용자들은 프록시 서버를 사용하여 이 보안을 우회할 수 있다. 그러나 프록시 서버에 연결함으로써 개인 사진 및 비밀번호와 같은 민감한 정보를 프록시 서버를 통해 전달함으로써 위험에 노출될 수 있다. 이 이미지는 학교가 학생들에게 웹사이트를 차단하는 일반적인 예시를 보여준다.

#### 로깅 및 감청
프록시는 클라이언트 머신과 웹 간의 데이터 흐름을 감청하기 위해 설치될 수 있다. 전송되거나 접근되는 모든 콘텐츠(제출된 비밀번호 및 사용된 HTTP 쿠키 포함)는 프록시 운영자에 의해 캡처 및 분석될 수 있다. 이러한 이유로 웹메일 및 뱅킹과 같은 온라인 서비스의 비밀번호는 항상 SSL과 같은 암호화된 보안 연결을 통해 교환되어야 한다.

원본 요청자에 대한 데이터를 공개하지 않는 프록시들을 연결하면 사용자의 목적지로부터 활동을 모호하게 만들 수 있다. 그러나 중간 홉에 더 많은 흔적이 남게 되며, 이는 사용자의 활동을 추적하는 데 사용되거나 제공될 수 있다. 이러한 다른 프록시의 정책과 관리자를 알 수 없는 경우, 사용자는 단순히 그러한 세부 정보가 보이지 않고 신경 쓰지 않기 때문에 잘못된 보안 감각에 빠질 수 있다.
위험보다는 불편함에 더 가깝지만, 프록시 사용자는 특정 웹사이트에서 차단될 수 있는데, 이는 수많은 포럼과 웹사이트가 사이트에 스팸을 보내거나 트롤링을 한 것으로 알려진 프록시의 IP 주소를 차단하기 때문이다. 프록시 바운싱은 개인 정보 보호를 유지하는 데 사용될 수 있다.

### 성능 향상
**캐싱 프록시** 서버는 동일한 클라이언트 또는 다른 클라이언트가 이전에 요청하여 저장된 콘텐츠를 검색하여 서비스 요청을 가속화한다. 캐싱 프록시는 자주 요청되는 리소스의 로컬 복사본을 유지하여 대규모 조직이 업스트림 대역폭 사용량과 비용을 크게 줄이면서 성능을 크게 향상시킬 수 있도록 한다. 대부분의 ISP 및 대기업은 캐싱 프록시를 보유하고 있다. 캐싱 프록시는 최초의 프록시 서버 유형이었다. 웹 프록시는 일반적으로 웹 서버에서 웹 페이지를 캐시하는 데 사용된다. 잘못 구현된 캐싱 프록시는 사용자 인증을 사용할 수 없는 것과 같은 문제를 일으킬 수 있다.

특정 링크 관련 문제 또는 성능 저하를 완화하도록 설계된 프록시는 성능 향상 프록시 (PEP)이다. 이러한 프록시는 일반적으로 높은 왕복 시간 또는 높은 패킷 손실(예: 무선 또는 휴대폰 네트워크)이 있는 경우 또는 업로드 및 다운로드 속도가 매우 다른 비대칭 링크에서 TCP 성능을 향상시키는 데 사용된다. PEP는 TCP ACK를 병합하거나 응용 계층에서 전송되는 데이터를 압축하는 등 네트워크를 보다 효율적으로 사용할 수 있다.

### 번역
번역 프록시는 웹사이트 경험을 다양한 시장에 맞게 현지화하는 데 사용되는 프록시 서버이다. 전 세계 사용자의 트래픽은 번역 프록시를 통해 원본 웹사이트로 라우팅된다. 방문자가 프록시된 사이트를 탐색할 때 요청은 원본 사이트로 돌아가 페이지가 렌더링된다. 응답의 원본 언어 콘텐츠는 프록시를 통해 다시 전달될 때 번역된 콘텐츠로 대체된다. 번역 프록시에서 사용되는 번역은 기계 번역, 인간 번역 또는 기계 번역과 인간 번역의 조합일 수 있다. 다양한 번역 프록시 구현은 다양한 기능을 가지고 있다. 일부는 원본 콘텐츠를 제외하거나 원본 콘텐츠를 원래의 로컬 콘텐츠로 대체하는 등 로컬 사용자를 위해 원본 사이트를 추가로 사용자 정의할 수 있도록 한다.

### 익명으로 서비스에 접근

익명 프록시 서버(때때로 웹 프록시라고도 함)는 일반적으로 웹 서핑을 익명화하려고 시도한다. 익명화 도구는 여러 종류로 구분될 수 있다. 목적지 서버(최종적으로 웹 요청을 만족시키는 서버)는 익명화 프록시 서버로부터 요청을 받으므로 최종 사용자의 주소에 대한 정보를 받지 않는다. 그러나 요청은 익명화 프록시 서버에는 익명이 아니므로 프록시 서버와 사용자 사이에 어느 정도의 신뢰가 존재한다. 많은 프록시 서버는 사용자에게 지속적인 광고 링크를 통해 자금을 조달한다.

**접근 제어**: 일부 프록시 서버는 로그온 요구 사항을 구현한다. 대규모 조직에서는 권한 있는 사용자가 월드 와이드 웹에 접근하기 위해 로그온해야 한다. 조직은 이를 통해 개인의 사용량을 추적할 수 있다. 일부 익명화 프록시 서버는 HTTP_VIA, HTTP_X_FORWARDED_FOR 또는 HTTP_FORWARDED와 같은 헤더 줄과 함께 데이터 패킷을 전달할 수 있으며, 이는 클라이언트의 IP 주소를 공개할 수 있다. 엘리트 또는 고익명성 프록시로 알려진 다른 익명화 프록시 서버는 프록시 서버가 클라이언트인 것처럼 보이게 한다. 클라이언트가 고익명성 프록시 서버를 사용하지 않은 이전 방문의 쿠키를 포함하는 패킷을 보내는 경우 웹사이트는 여전히 프록시가 사용되고 있다고 의심할 수 있다. 쿠키와 캐시를 지우면 이 문제가 해결될 것이다.

#### 지리적 타겟 광고 QA
광고주들은 지역 타겟팅 광고의 유효성 검사, 확인 및 품질 보증을 위해 프록시 서버를 사용한다. 지역 타겟팅 광고 서버는 요청 소스 IP 주소를 확인하고 지리-IP 데이터베이스를 사용하여 요청의 지리적 소스를 결정한다. 특정 국가 또는 도시에 물리적으로 위치한 프록시 서버를 사용하면 광고주가 지역 타겟팅 광고를 테스트할 수 있다.

### 보안
프록시는 네트워크 주소 변환을 사용하여 회사의 내부 네트워크 구조를 비밀로 유지할 수 있으며, 이는 내부 네트워크의 보안에 도움이 될 수 있다. 이는 로컬 네트워크의 머신 및 사용자로부터의 요청을 익명으로 만든다. 프록시는 방화벽과 결합될 수도 있다.

잘못 구성된 프록시는 인터넷으로부터 격리된 네트워크에 대한 접근을 제공할 수 있다.

#### 교차 도메인 리소스
프록시는 동일-출처 정책이 웹사이트가 외부 도메인에 직접 연결하는 것을 금지할 때 웹사이트가 외부 호스팅 리소스(예: 이미지, 음악 파일 등)에 웹 요청을 할 수 있도록 한다. 또한 프록시는 교차 도메인 제한(데이터 도용 등으로부터 웹사이트를 보호하기 위해 마련된)이 브라우저가 외부 도메인에 직접 접근하는 것을 금지할 때 브라우저가 웹사이트를 대신하여 외부 호스팅 콘텐츠에 웹 요청을 할 수 있도록 한다.

### 악의적인 사용
#### 2차 시장 브로커
2차 시장 브로커는 웹 프록시 서버를 사용하여 한정판 스니커즈나 티켓과 같은 한정된 제품의 온라인 구매 제한을 우회한다.

## 프록시 구현

### 웹 프록시 서버
웹 프록시는 HTTP 요청을 전달한다. 클라이언트의 요청은 경로만 전달하는 대신 전체 URL이 전달된다는 점을 제외하고 일반 HTTP 요청과 동일하다.


```http
GET https://en.wikipedia.org/wiki/Proxy_server HTTP/1.1
Proxy-Authorization: Basic encoded-credentials
Accept: text/html
```


이 요청은 프록시 서버로 전송되고, 프록시는 지정된 요청을 수행하고 응답을 반환한다.

```http
HTTP/1.1 200 OK
Content-Type: text/html; charset UTF-8
```


일부 웹 프록시는 HTTP CONNECT 메서드를 허용하여 연결을 통해 임의의 데이터를 전달하도록 설정한다. 일반적인 정책은 HTTPS 트래픽을 허용하기 위해 포트 443만 전달하는 것이다.

웹 프록시 서버의 예시로는 Apache (with mod_proxy or Traffic Server), HAProxy, 프록시로 구성된 IIS (예: Application Request Routing 포함), Nginx, 프라이복시, Squid, Varnish (리버스 프록시만), WinGate, Ziproxy, Tinyproxy, RabbIT 및 Polipo가 있다.

클라이언트의 경우 복잡하거나 여러 프록시 서버 문제는 클라이언트-서버 프록시 자동 구성 프로토콜(PAC 파일)로 해결된다.

### SOCKS 프록시
SOCKS는 연결 단계 후에 임의의 데이터를 전달하며, 웹 프록시의 HTTP CONNECT와 유사하다.

### 투명 프록시

**인터셉팅 프록시**, **인라인 프록시** 또는 **강제 프록시**라고도 불리는 투명 프록시는 특별한 클라이언트 구성 없이 일반 응용 계층 통신을 가로챈다. 클라이언트는 프록시의 존재를 알 필요가 없다. 투명 프록시는 일반적으로 클라이언트와 인터넷 사이에 위치하며, 프록시는 게이트웨이 또는 라우터의 일부 기능을 수행한다.

RFC 2616 (하이퍼텍스트 전송 프로토콜—HTTP/1.1)은 표준 정의를 제공한다.

"'투명 프록시'는 프록시 인증 및 식별에 필요한 것 이상으로 요청 또는 응답을 수정하지 않는 프록시이다." "'비투명 프록시'는 그룹 주석 서비스, 미디어 유형 변환, 프로토콜 축소 또는 익명성 필터링과 같은 사용자 에이전트에 추가 서비스를 제공하기 위해 요청 또는 응답을 수정하는 프록시이다."

TCP 인터셉트는 TCP SYN 플러드 공격(서비스 거부 공격의 일종)으로부터 TCP 서버를 보호하는 트래픽 필터링 보안 기능이다. TCP 인터셉트는 IP 트래픽에만 사용 가능하다.

2009년 로버트 오거가 투명 프록시 작동 방식의 보안 결함을 발표했으며, 컴퓨터 비상 대응팀은 영향을 받는 수십 개의 투명 및 인터셉팅 프록시 서버를 나열하는 권고문을 발행했다.

#### 목적
인터셉팅 프록시는 일반적으로 기업에서 이용 목적 제한 방침을 적용하고 클라이언트 브라우저 구성이 필요하지 않으므로 관리 오버헤드를 줄이기 위해 사용된다. 그러나 이러한 두 번째 이유는 Active Directory 그룹 정책 또는 DHCP 및 자동 프록시 감지와 같은 기능으로 완화된다.

인터셉팅 프록시는 또한 일부 국가의 ISP에서 대역폭을 절약하고 캐싱을 통해 고객 응답 시간을 향상시키기 위해 일반적으로 사용된다. 이는 대역폭이 더 제한적인 국가(예: 섬 국가) 또는 비용을 지불해야 하는 국가에서 더 흔하다.

#### 문제점
TCP 연결의 우회 또는 가로채기는 여러 가지 문제를 야기한다. 첫째, 원래의 목적지 IP와 포트가 프록시에 어떤 방식으로든 전달되어야 한다. 이는 항상 가능한 것은 아니다(예: 게이트웨이와 프록시가 다른 호스트에 있는 경우). 원래 (가로채어진) 목적지에 대한 정보를 확인하지 않거나 접근할 수 없는 인터셉팅 프록시의 특정 동작에 의존하는 교차 사이트 공격 유형이 있다. 이 문제는 패킷 핸들러와 프록시 간에 이 정보를 통신할 수 있는 통합된 패킷 수준 및 애플리케이션 수준 장비 또는 소프트웨어를 사용하여 해결할 수 있다.

또한 가로채기는 HTTP 인증, 특히 NTLM과 같은 연결 지향 인증에 문제를 야기한다. 클라이언트 브라우저는 프록시가 아닌 서버와 통신한다고 믿기 때문이다. 이는 인터셉팅 프록시가 인증을 요구하고 사용자가 인증을 요구하는 사이트에 연결하는 경우 문제를 일으킬 수 있다.

마지막으로, 연결 가로채기는 HTTP 캐시에 문제를 일으킬 수 있다. 일부 요청 및 응답이 공유 캐시에 의해 캐시될 수 없게 되기 때문이다.

#### 구현 방법
라우터/방화벽이 프록시와 동일한 호스트에 있는 통합 방화벽/프록시 서버에서는 원래 목적지 정보를 전달하는 방법은 어떤 방법이든 가능하다. 예를 들어 Microsoft TMG 또는 WinGate가 있다.

가로채기는 Cisco의 WCCP (Web Cache Control Protocol)를 사용하여 수행될 수도 있다. 이 독점 프로토콜은 라우터에 상주하며 캐시에서 구성되어 캐시가 라우터로부터의 투명한 리디렉션을 통해 어떤 포트와 트래픽이 자신에게 전송되는지 결정할 수 있도록 한다. 이 리디렉션은 GRE 터널링 (OSI 계층 3) 또는 MAC 재작성 (OSI 계층 2)의 두 가지 방법 중 하나로 발생할 수 있다.

트래픽이 프록시 머신 자체에 도달하면 가로채기는 일반적으로 NAT(네트워크 주소 변환)로 수행된다. 이러한 설정은 클라이언트 브라우저에는 보이지 않지만, 프록시는 웹 서버 및 프록시의 인터넷 측에 있는 다른 장치에 보인다. 최신 리눅스 및 일부 BSD 릴리스는 TPROXY (투명 프록시)를 제공하며, 이는 IP 수준 (OSI 계층 3) 투명 가로채기 및 아웃바운드 트래픽 스푸핑을 수행하여 다른 네트워크 장치로부터 프록시 IP 주소를 숨긴다.

#### 감지
인터셉팅 프록시 서버의 존재를 감지하는 데 여러 가지 방법이 사용될 수 있다.

* 클라이언트의 외부 IP 주소를 외부 웹 서버에서 확인된 주소와 비교하거나, 때때로 서버에서 수신된 HTTP 헤더를 검사하는 방법. 이 문제를 해결하기 위해 여러 사이트가 만들어져 사용자가 웹 페이지에서 사이트에서 본 IP 주소를 사용자에게 다시 보고한다. 구글도 사용자가 "IP"를 검색하면 페이지에서 본 IP 주소를 반환한다.
* 대부분의 인터셉팅 프록시는 SSL을 가로채지 않으므로 HTTPS와 HTTP를 사용하여 온라인 IP 검사기의 결과를 비교하는 방법. SSL이 가로채진다고 의심되는 경우, 보안 웹사이트와 관련된 인증서를 검사할 수 있으며, 루트 인증서는 가로채기 목적으로 발행되었는지 여부를 나타내야 한다.
* HTTP(포트 80)와 같은 프록시된 프로토콜과 SMTP(포트 25)와 같은 프록시되지 않은 프로토콜에 대해 Traceroute와 같은 도구가 보고하는 네트워크 홉 순서를 비교하는 방법.
* 서버가 없는 것으로 알려진 IP 주소로 연결을 시도하는 방법. 프록시는 연결을 수락한 다음 프록시를 시도할 것이다. 프록시가 연결을 수락할 서버를 찾지 못하면 오류 메시지를 반환하거나 클라이언트와의 연결을 단순히 닫을 수 있다. 이러한 동작의 차이는 감지하기 쉽다. 예를 들어, 대부분의 웹 브라우저는 HTTP 서버에 연결할 수 없는 경우 브라우저가 생성한 오류 페이지를 생성하지만, 연결이 수락된 다음 닫히는 경우에는 다른 오류를 반환한다.
* 최종 사용자에게 특수하게 프로그래밍된 Adobe Flash SWF 애플리케이션 또는 Sun Java 애플릿을 제공하여 서버로 HTTP 호출을 다시 보내는 방법.

### CGI 프록시
CGI 웹 프록시는 사용자의 브라우저 창에서 웹 양식을 사용하여 대상 URL을 수락하고 요청을 처리한 다음 결과를 사용자의 브라우저로 반환한다. 결과적으로 "진정한" 프록시 설정을 변경할 수 없는 장치나 네트워크에서 사용할 수 있다. 기록된 최초의 CGI 프록시는 당시 "로버"라고 불렸지만 1998년에 "CGIProxy"로 이름이 변경되었으며, 1996년 초에 미국 컴퓨터 과학자 제임스 마샬이 리치 모린의 "유닉스 리뷰" 기사를 위해 개발했다.

대부분의 CGI 프록시는 CGIProxy(펄 언어로 작성됨), Glype(PHP 언어로 작성됨) 또는 PHProxy(PHP 언어로 작성됨) 중 하나로 구동된다. 2016년 4월 현재 CGIProxy는 약 2백만 건, Glype는 거의 1백만 건의 다운로드를 기록했으며, PHProxy는 여전히 매주 수백 건의 다운로드를 기록하고 있다. VPN 및 기타 개인 정보 보호 방법으로 인해 인기가 줄어들었음에도 불구하고  현재 온라인에는 여전히 수백 개의 CGI 프록시가 존재한다.

일부 CGI 프록시는 장애인을 위한 웹사이트 접근성 향상과 같은 목적으로 설정되었지만, 과도한 트래픽, 일반적으로 지역 필터링을 우회하는 수단으로 제3자가 서비스를 광고하여 발생하는 트래픽으로 인해 폐쇄되었다. 이러한 사용자 중 많은 수가 자신이 야기하는 부수적 피해에 신경 쓰지 않으므로, 조직은 프록시를 숨기고 URL을 조직에 연락하여 진정한 필요성을 입증하는 사람들에게만 공개해야 했다.

### 접미사 프록시
접미사 프록시는 사용자가 요청한 콘텐츠의 URL에 프록시 서버 이름을 추가하여 웹 콘텐츠에 접근할 수 있도록 한다(예: "en.wikipedia.org.SuffixProxy.com"). 접미사 프록시 서버는 일반 프록시 서버보다 사용하기 쉽지만, 높은 수준의 익명성을 제공하지 않으며, 주로 웹 필터를 우회하는 데 사용된다. 그러나 더 발전된 웹 필터로 인해 거의 사용되지 않는다.

### 토르 어니언 프록시 소프트웨어
[upright=1.8|섬네일|alt=Screenshot of computer program showing computer locations on a world map.|[비달리아 프로젝트|Vidalia 토르 네트워크 맵]]

토르는 온라인 익명성을 제공하기 위한 시스템이다. 토르 클라이언트 소프트웨어는 네트워크 감시 또는 트래픽 분석을 수행하는 사람으로부터 사용자의 컴퓨터 위치 또는 사용을 숨기기 위해 전 세계 자원 봉사 서버 네트워크를 통해 인터넷 트래픽을 라우팅한다. 토르를 사용하면 인터넷 활동을 추적하기가 더 어려워지며, 사용자의 개인 자유와 온라인 프라이버시를 보호하는 것을 목표로 한다.

"어니언 라우팅"은 암호화 서비스의 계층적 특성을 나타낸다. 원본 데이터는 여러 번 암호화 및 재암호화된 다음, 연속적인 토르 릴레이를 통해 전송된다. 각 릴레이는 데이터를 다음 릴레이와 최종 목적지로 전달하기 전에 암호화 "계층"을 해독한다. 이는 원본 데이터가 전송 중에 해독되거나 이해될 가능성을 줄인다.

### I2P 익명 프록시
I2P 익명 네트워크('I2P')는 온라인 익명성을 목표로 하는 프록시 네트워크이다. 이는 토르의 어니언 라우팅을 개선한 갈릭 라우팅을 구현한다. I2P는 완전히 분산되어 있으며, 모든 통신을 여러 계층으로 암호화하고 다양한 위치의 자원 봉사자가 운영하는 라우터 네트워크를 통해 릴레이하여 작동한다. 정보의 출처를 숨김으로써 I2P는 검열 저항을 제공한다. I2P의 목표는 사용자의 개인 자유, 프라이버시 및 기밀 비즈니스 수행 능력을 보호하는 것이다.

I2P의 각 사용자는 컴퓨터(노드)에서 I2P 라우터를 실행한다. I2P 라우터는 다른 피어를 찾고 이들을 통해 익명 터널을 구축하는 역할을 한다. I2P는 모든 프로토콜(HTTP, IRC, SOCKS 등)에 대한 프록시를 제공한다.

### 네트워크 주소 변환과의 비교
프록시 개념은 OSI 모형의 계층 7 애플리케이션을 의미한다. 네트워크 주소 변환 (NAT)은 프록시와 유사하지만 계층 3에서 작동한다.

계층 3 NAT의 클라이언트 구성에서는 게이트웨이를 구성하는 것으로 충분하다. 그러나 계층 7 프록시의 클라이언트 구성에서는 클라이언트가 생성하는 패킷의 목적지가 항상 프록시 서버(계층 7)여야 하며, 그런 다음 프록시 서버는 각 패킷을 읽고 실제 목적지를 찾아낸다.

NAT는 계층 3에서 작동하므로 계층 7 프록시보다 리소스 집약도가 낮지만 유연성도 떨어진다. 이 두 기술을 비교할 때 '투명 방화벽'이라는 용어를 접할 수 있다. **투명 방화벽**은 클라이언트가 알지 못하는 상태에서 프록시가 계층 7 프록시의 이점을 사용하는 것을 의미한다. 클라이언트는 게이트웨이가 계층 3의 NAT라고 가정하며 패킷 내부를 알지 못하지만, 이 방법을 통해 계층 3 패킷이 조사를 위해 계층 7 프록시로 전송된다.

### DNS 프록시
DNS 프록시 서버는 (일반적으로 로컬) 네트워크에서 DNS 쿼리를 받아 인터넷 도메인 이름 서버로 전달한다. 또한 DNS 레코드를 캐시할 수도 있다.

### 프록시파이어
일부 클라이언트 프로그램은 요청을 "SOCKS화"하여 모든 네트워크 소프트웨어가 특정 유형의 프록시 서버(주로 SOCKS)를 통해 외부 네트워크에 연결할 수 있도록 한다.

### 주거용 프록시 (RESIP)
주거용 프록시는 인터넷 서비스 제공업체(ISP)가 모바일 및 최종 사용자의 컴퓨터와 같은 물리적 장치와 함께 제공하는 실제 IP 주소를 사용하는 중개자이다. 서버에 직접 연결하는 대신 주거용 프록시 사용자는 주거용 IP 주소를 통해 대상에 연결한다. 그러면 대상은 이들을 일반 인터넷 사용자로 식별한다. 추적 도구가 사용자의 재할당을 식별하지 못하게 한다. 모든 주거용 프록시는 여러 개의 동시 요청을 보낼 수 있으며, IP 주소는 특정 지역과 직접 관련된다. 사용자의 실제 IP 주소를 다른 IP 주소 뒤에 숨기는 일반적인 주거용 프록시와 달리, 백커넥트 프록시로도 알려진 로테이팅 주거용 프록시는 프록시 풀 뒤에 사용자의 실제 IP 주소를 숨긴다. 이 프록시들은 모든 세션 또는 정기적인 간격으로 서로 전환된다.

제공업체의 주거용 프록시 호스트가 자발적으로 참여한다는 주장에도 불구하고, 수많은 프록시가 사물인터넷 장치를 포함하여 잠재적으로 손상된 호스트에서 운영된다. 호스트를 교차 참조하는 과정을 통해 연구원들은 잠재적 유해 프로그램으로 분류된 로그를 식별하고 분석했으며, RESIP 호스트가 수행한 불법 프로모션, 패스트 플럭싱, 피싱, 악성 소프트웨어 호스팅 등 다양한 무단 활동을 폭로했다.

## 같이 보기

## 각주


분류:인터넷 구조
분류:인터넷 프라이버시
분류:컴퓨터 네트워킹
분류:네트워크 성능
분류:보안 소프트웨어