본문 바로가기
Linux

Proxy Server

by Mostlove 2025. 3. 25.
728x90
반응형

Proxy Server 정리

**Proxy Server(프록시 서버)**는 로컬 네트워크의 호스트들이 외부 인터넷에 접속할 때 중개 역할을 하여 접속 속도를 향상시키고 보안 기능을 제공합니다. 이를 통해 캐시 서버로도 사용되며, 주로 웹 속도 향상접속 제어를 위한 도구로 사용됩니다. 또한, 보안상의 기능을 통해 특정 사이트의 접속을 제한할 수 있습니다.


1. 프록시 서버의 기능 🖥️

  • 캐시 기능: 프록시 서버는 웹사이트의 IP 주소를 캐시(저장)하여, 동일한 사이트에 접속할 때 빠른 속도로 연결합니다. 예를 들어, 호스트 A가 www.daum.net에 접속했다면, 프록시 서버는 해당 사이트의 IP 주소를 캐시해두고, 호스트 B가 같은 사이트에 접속할 때 바로 캐시된 정보를 사용합니다. 이를 통해 대역폭 절약속도 향상이 이루어집니다. ⚡
  • 접속 제어: 프록시 서버는 **ACL(Access Control List)**을 사용하여 특정 사이트나 서비스를 차단하거나 허용할 수 있습니다. 모든 인터넷 트래픽이 프록시 서버를 거쳐가므로, 보안 측면에서도 특정 사이트에 대한 접속을 제한할 수 있습니다. 🚫

2. 프록시 서버의 작동 원리 🌐

  • 프록시 서버는 Proxy Cache를 사용하여, 외부 사이트에 접속할 때 해당 사이트의 IP 주소와 도메인 이름을 저장합니다. 이를 통해 이후 동일한 사이트를 요청할 때 DNS 조회를 다시 하지 않고, 빠르게 캐시된 정보를 사용하여 접속할 수 있습니다.
  • Proxy Cache에는 IP - domain_name 정보가 저장되며, 최초의 이름 풀이(Name Resolution)은 DNS 서버가 담당합니다.

3. 프록시 서버의 보안적 문제점 🔒

  • 해킹 위험: 프록시 서버는 로컬 네트워크의 모든 인터넷 트래픽을 중계하기 때문에, 해커가 프록시 서버를 공격하면 내부 사용자들의 인터넷 사용 기록과 패킷 정보가 노출될 수 있습니다. 이로 인해 웹 해킹 도구(예: Burp Suite, Paros)로 패킷을 조작하거나 가로챌 수 있는 위험이 존재합니다.
  • 프록시 서버 해킹이 일어나면, 내부 사용자의 인터넷 기록이 유출되고, 웹 트래픽이 중단되거나 변조될 수 있으므로 관리자는 프록시 서버의 보안을 철저히 관리하고, 쿠키 삭제를 정기적으로 진행해야 합니다. 🛡️

4. 프록시 서버 설정 🛠️

  • 로컬 네트워크에서 사용: 로컬 네트워크 내의 각 호스트는 웹 브라우저에서 프록시 서버의 IP 주소를 지정하여 인터넷을 사용할 때, 반드시 프록시 서버를 경유하게 됩니다. 이때, 프록시 서버는 게이트웨이 역할을 하여 트래픽을 중계합니다.
  • DNS와의 차이점: LAN에서는 ARP Cache를 사용하여 IP-MAC 정보를 관리하고, WAN에서는 Proxy Cache를 사용하여 IP-도메인 정보를 저장하여 빠른 접속을 지원합니다.

1. Squid Proxy 서버 예시 (리눅스 기반)

Squid는 널리 사용되는 오픈 소스 프록시 서버 소프트웨어입니다. 캐싱 및 요청 중계 기능을 제공하여 성능을 개선할 수 있습니다.

Squid 설치 및 설정 예시 (Ubuntu 기준)

  1. Squid 설치
  2. sudo apt update sudo apt install squid
  3. Squid 설정 기본적으로 Squid 설정 파일은 /etc/squid/squid.conf에 위치합니다. 설정 파일을 편집합니다.
  4. sudo nano /etc/squid/squid.conf
  5. 기본 설정 예시:
    • http_port : Squid가 요청을 받을 포트 (기본값: 3128)
    • acl : 클라이언트 접근 제어 설정
    • http_access : 허용된 클라이언트가 프록시를 사용할 수 있도록 설정
    예시 설정 (squid.conf 파일에 추가):
  6. # 프록시 서버가 요청을 받을 포트 http_port 3128 # 로컬 네트워크에서만 접근을 허용 acl localnet src 192.168.1.0/24 http_access allow localnet # 다른 모든 요청은 차단 http_access deny all
  7. Squid 서비스 재시작 설정 파일을 변경한 후, Squid 서비스를 재시작하여 변경 사항을 적용합니다.
  8. sudo systemctl restart squid
  9. 프록시 서버 사용 이제 클라이언트 컴퓨터에서 프록시 설정을 추가하여 Squid 서버를 통해 인터넷에 접근할 수 있습니다. 예를 들어, 브라우저에서 프록시 서버 주소(192.168.1.x:3128)를 입력하면 됩니다.

2. Nginx Reverse Proxy 서버 예시

Nginx는 웹 서버로 유명하지만, 리버스 프록시 서버로도 사용됩니다. 리버스 프록시 서버는 클라이언트의 요청을 다른 서버로 전달하는 역할을 합니다. 예를 들어, 로드 밸런싱이나 보안 목적으로 사용됩니다.

Nginx 설치 및 설정 예시

##Nginx 설치
sudo apt update
sudo apt install nginx
###Nginx 설정 (리버스 프록시) Nginx 설정 파일을 편집합니다.
sudo nano /etc/nginx/sites-available/default
###리버스 프록시 설정 예시:

###Nginx가 클라이언트 요청을 다른 서버(예: http://192.168.1.100:80)로 전달하는 설정입니다.

###예시 설정:
server {
    listen 80;
    
    server_name example.com;

    location / {
        proxy_pass http://192.168.1.100:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
###Nginx 서비스 재시작 설정 파일을 변경한 후, Nginx 서비스를 재시작하여 변경 사항을 적용합니다.
sudo systemctl restart nginx
####리버스 프록시 사용 이제 example.com을 요청하면 Nginx가 192.168.1.100:80으로 요청을 전달하게 됩니다.

 


3. Squid 프록시 서버 예시 (Windows 기반)

Windows에서 Squid를 사용하는 방법도 있습니다. Windows에서는 Squid for Windows를 설치하여 사용할 수 있습니다.

  1. Squid for Windows 다운로드
  2. 설치 및 설정 설치 후 squid.conf 파일을 편집하여 설정을 변경합니다.
    http_port 3128
    acl localnet src 192.168.1.0/24
    http_access allow localnet
    http_access deny all
    
  3. 예시 설정:
  4. 서비스 시작
    • Squid를 설치하고, squid.exe를 실행하여 프록시 서버를 시작합니다.
  5. 클라이언트 설정
    • Windows에서 인터넷 설정에서 프록시 서버를 192.168.1.x:3128로 설정합니다.

프록시 서버의 활용 예시:

  • 인터넷 필터링: 특정 웹사이트를 차단하고, 로그를 기록하여 인터넷 사용을 모니터링합니다.
  • 캐시 서버: 자주 요청되는 데이터를 캐시하여 네트워크 대역폭을 절약하고 성능을 향상시킵니다.
  • 보안: 외부 네트워크와의 직접적인 연결을 차단하고, 내부 네트워크는 프록시를 통해서만 연결하게 합니다.
  • 로드 밸런싱: 여러 서버로 요청을 분산하여 부하를 고르게 분산시킵니다.

이처럼 프록시 서버는 다양한 목적으로 설정되고 활용될 수 있습니다.

반응형

'Linux' 카테고리의 다른 글

DHCP  (0) 2025.03.26
NTP 설정 및 활용  (0) 2025.03.26
Mail Server  (0) 2025.03.25
NFS & Samba  (0) 2025.03.25
Web Server  (1) 2025.03.25