Proxy Server(프록시 서버)란?

TheJang·2021년 10월 15일
5

📌 프록시 서버

프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용프로그램을 말합니다. 서버와 클라이언트 사이에 중계기 로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고 부릅니다.

프록시 서버는 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장한다.

  • 여기서 캐시는 컴퓨터의 기억장치에 관련된 기술로, 속도가 느린 기억장치와 속도가 빠른 기억장치가 존재할 경우, 빠른 기억장치에 느린 기억장치의 내용 중 최근에 사용한 일부를 넣어두는 것을 말한다. 이 경우 같은 내용을 여러 번 참조할 때, 두 번째부터는 빠른 속도로 읽을 수 있다.

  • 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장하면 전송시간도 절약할 수 있음은 물론 동시에 불필요하게 외부와의 연결을 하지 않아도 된다는 장점을 가지게 된다. 또한 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목현상을 방지 할 수 있다는 이점 또한 있다.

✔ 프록시 서버의 주요 특징

  • pc와 외부 인터넷 사이의 징검다리 역할
  • 중계를 해주기 때문에 외부 인터넷에서는 Client의 정보를 알 수 없다.
  • 외부 인터넷의 내부 침입을 막는 방화벽과 관련이 있다.
  • Proxy Server는 캐시 기능이 있다.
  • IP를 바꾸기 위한 용도로 많이 사용되고 있다.
  • A Client가 B Proxy에 접근하여 C인터넷(google.com)에 접속하는 방식
  • A Client (Proxy Server 설치) 한 후 에 C라는 컴퓨터를 감시한다면, C 컴퓨터의 브라우저 설정을 C 컴퓨터 IP 주소로 하면 C 컴퓨터 그룹 A Client에 남길 수 있다.

✔ 프록시 서버의 종류

1. Forward 프록시

프록시 서버를 '클라이언트 호스트들과 접근 하고자 하는 원격 리소스 사이'에 위치 시킨다. 즉 사용자가 naver.com에 연결하려고 하면 사용자가 직접 PC에 연결하는 것이 아니라 Foward 프록시 서버가 요청을 받아 naver.com에 연결하여 그 결과를 사용자에게 전달해준다.

이 서버는 전형적으로 로컬 디스크에 데이터를 저장하며, 클라이언트 호스트들은 사용 중인 웹 브라우저를 이용하여 프록시 서버 사용을 설정 해야 하므로 프록시 서버를 사용하고 있다는 것을 인식할 수 있다.

이 방식은 대역폭 사용을 감소시킬 수 있다는 것과 접근 정책 구현에 있어서 다루기 쉬우면서도 비용이 저렴하다는 장점이 있다. 사용자의 정해진 사이트만 연결할 수 있는 등 웹 사용환경을 제한할 수 있으므로 기업 환경 등에서 많이 사용된다.

2. Reverse 프록시

프록시 서버를 인터넷 리소스 또는 인트라넷 리소스 앞에 위치시키는 방식, 즉 사용자가 naver.com 웹 서비스에 데이터를 요청하면, Reverse 프록시가 이 요청을 받아 내부 서버에서 데이터를 받은 후에 이 데이터를 사용자에게 전달하는 방식이다.

이 방식을 사용하면 클라이언트들이 프록시 서버에 연결되었다는 것을 인식하지 못하며, 마치 최종 사용자가 요청 리소스에 직접 접근하는 것과 같이 느껴진다.

내부 서버가 직접 서비스를 제공해도 되지만 이렇게 구성하는 이유는 보안 때문이다. 보통 기업의 네트워크 환경은 DMZ라고 하는 내부 네트워크와 외부 네트워크 사이에 위치하는 구간이 존재하며, 이 구간에는 메일 서버, 웹 서버, FTP 서버 등 외부 서비스를 제공하는 서버가 위치하게 된다.

서비스를 자바로 구현해서 WAS를 DMZ에 놓고 서비스해도 되지만 WAS는 보통 DB 서버와 연결되므로 WAS가 최전방에 있으면 WAS가 해킹당할 경우 DB서버까지 같이 해킹되는 심각한 문제가 발생할 수 있다. 이 때문에 리버스 프록시 서버를 두고 실제 서비스 서버는 내부망에 위치시키고 프록시 서버만 내부에 있는 서비스 서버와 통신해서 결과를 클라이언트에게 제공하는 방식으로 서비스 하게 된다.

특히 리눅스 환경에서는 리버스 프록시 아파치 웹 서버를 사용한다면 SELinux를 켜놓으면 SELinux의 기본 정책이 웹 서버는 톰캣의 8080, 8009 포트만 접근할 수 있으므로 아파치 웹 서버가 해킹 당해도 웹 서버 권한으로는 내부망 연결이 불가능하다. 또한 리버스 프록시 방식은 각 요청에 대한 데이터가 캐시되기 때문에 프록시 서버는 실제 서버들을 위한 부하 조절 기능을 가질 수 있다.

3. 오픈 프록시(open proxy)

모든 인터넷 사용자가 액세스 할 수 있는 프록시 서버로 익명 공개 프록시는 사용자가 웹 브라우징을 하거나 다른 인터넷 서비스를 사용하는 동안 자신의 IP 주소를 숨길 수 있도록 해준다. 역기능을 위해 사용하는 기능들은 이것을 이용하는 것이다. IP 추적을 방지하거나 우회해서 접속하는 기능을 수행할 수 있다.

✔ 프록시 서버는 왜 필요한가?

  1. 익명으로 컴퓨터를 유지할 수 있다. 프록시 서버를 통해 한 단계의 보안을 더 할 수 있기 때문에 컴퓨터 보안을 유지할 수 있다.
  2. 캐시를 사용하여 리소스로의 접근을 빠르게 할 수 있다. 웹 프록시는 웹 서버로부터 웹 페이지를 캐시로 저장하는 데 흔히 쓰이며 캐싱을 통해 콘텐츠를 빠르게 가져올 수 있다.
  3. 네트워크 서비스나 콘텐츠로의 접근 정책을 적용하기 위해 사용한다. 또한 사용률을 기록하고 검사하기 위해 사용할 수 있다.
  4. 보안 및 통제를 뚫고 나가기 위해 사용할 수 있다. 또한 역으로 IP 추적을 당하지 않을 목적으로 사용한다. 역기능이긴 하지만 우회를 할 수 있도록 한다.
  5. 밖으로 나가는 콘텐츠를 검사하기 위해 사용한다. 중계 서버인 프록시 서버를 거치기 때문에 콘텐츠를 검사할 수 있다. 지역 제한을 우회하기 위해 사용할 수 있다.

✅ 요약

  • 프록시란 원래 대리라는 의미를 가지고 있다.
  • 보안 분야에서는 주로 보안상의 이유 등으로 직접 통신할 수 없는 경우가 존재한다.
  • 위와 같은 경우 직접 통신할 수 없는 두 점 사이에서 대리로 통신을 수행하는 기능을 프록시, 그 중계 기능을 하는것을 프록시 서버라 한다.
  • 시스템에 방화벽을 가지고 있는 경우 외부와의 통신을 위해 만들어 놓은 서버
  • 프록시 서버는 보안 상의 목적으로 설치되는 경우가 많으나, 단순히 보안 상의 이유만으로 설치 되는 것은 아니다.
  • 프록시 서버의 목적
    • 보안: 익명의 사용자가 서버에 접근하는 것을 막는다.
    • 속도: Proxy 서버는 사용자의 요청을 Cahche해서 동일 요청이 들어오면 Cache 자원을 반환한다. 이는 서비스의 속도를 높여준다.
    • ACL(access control list ACL): 사이트 접근에 대한 접근 정책을 정의 할 수 있다.
    • log/Audit: 회사 내 직원의 인터넷 사용을 레포팅할 수 있다. 반대로 인트라넷의 사용을 레포팅할 수 도 있다.
    • 지역 네트워크의 제한 우회: 보안 상의 이유로 80 포트 외에 포트를 막아놓는 경우가 있는데 이러한 제한을 우회해서 원하는 다른 서비스를 이용할 수 있다.
profile
어제보다 오늘 더 노력하는 프론트엔드 개발자

3개의 댓글

comment-user-thumbnail
2023년 1월 3일

좋은 글 잘 읽었습니다 ! 그런데 "프록시 서버의 주요 특징"에서 마지막 항목이 잘 이해가 되지 않습니다.
[A Client (Proxy Server 설치) 한 후 에 C라는 컴퓨터를 감시한다면, C 컴퓨터의 브라우저 설정을 C 컴퓨터 IP 주소로 하면 C 컴퓨터 그룹 A Client에 남길 수 있다.] 프록시 서버를 C컴퓨터 그룹에 설치하면 A 클라이언트에게 하나의 IP주소로 보인다는 뜻인가요?

1개의 답글
comment-user-thumbnail
2024년 8월 22일

hi

답글 달기