블로그로 돌아가기

사이트를 봇, 스캐너 및 파서로부터 보호하기 위한 역방향 프록시 설정 방법: 완벽 가이드

봇과 스캐너가 24시간 내내 귀하의 사이트를 공격하고 콘텐츠를 훔치며 서버를 과부하합니다. 프로그래머를 고용하지 않고도 리버스 프록시가 비즈니스를 어떻게 보호하는지 알아보세요.

📅2026년 4월 24일
```html

매일 귀하의 사이트는 수백 개의 봇에 의해 공격받고 있습니다: 일부는 가격과 콘텐츠를 훔치고, 다른 일부는 요청으로 서버를 과부하 시키며, 또 다른 일부는 취약점을 찾고 있습니다. Wildberries 또는 Ozon에서 인터넷 쇼핑몰을 운영하거나 Facebook Ads의 광고 캠페인을 위한 랜딩 페이지를 관리하거나 고객의 웹사이트를 운영하는 경우, 이 문제는 귀하와 직접적으로 관련이 있습니다. 리버스 프록시(Reverse Proxy)는 깊은 기술 지식 없이 설정할 수 있는 첫 번째 방어선입니다.

리버스 프록시란 무엇이며 일반 프록시와의 차이점

대부분의 사람들은 프록시를 IP 주소를 변경하는 도구로 알고 있습니다: 프록시 서버에 연결하면 사이트는 귀하의 주소 대신 그 주소를 봅니다. 이를 정방향 프록시 (forward proxy)라고 하며, 이는 사용자를 보호합니다.

리버스 프록시 (reverse proxy)는 반대편에서 작동합니다. 이는 귀하의 서버 앞에 위치하여 모든 들어오는 요청을 대신 받아들입니다. 방문자는 귀하의 사이트와 직접 소통하고 있다고 생각하지만, 실제로는 먼저 프록시 서버에 도달하여 요청을 확인하고 의심스러운 활동을 필터링한 후에야 합법적인 트래픽을 귀하의 실제 서버로 전달합니다.

간단한 비유:

귀하의 사이트를 창고라고 상상해 보십시오. 정방향 프록시는 공급자로부터 상품을 익명으로 가져오는 배달원입니다. 리버스 프록시는 창고의 입구에 있는 경비원입니다: 그는 들어가고자 하는 모든 사람을 확인하고 고객을 통과시키며 강도가 상품에 도달하기 전에 그들을 저지합니다.

일반 프록시와의 주요 차이점은 귀하의 실제 서버 IP 주소가 숨겨진다는 것입니다. 악의적인 공격자와 봇은 귀하의 사이트가 물리적으로 어디에 있는지 알 수 없으며, 오직 리버스 프록시의 주소만 볼 수 있습니다. 이것만으로도 상당한 부분의 공격을 차단할 수 있습니다.

인터넷 쇼핑몰 소유자, 마케터 및 수십 개의 랜딩 페이지를 운영하는 아비트라지어에게는 이것이 매우 중요합니다: 경쟁자는 귀하의 실제 호스팅을 찾고 직접 공격할 수 없으며, 보호를 우회할 수 없습니다.

봇과 스캐너가 귀하의 비즈니스에 위험한 이유

많은 웹사이트 소유자들은 봇의 위협을 "기술적 문제"로 과소평가합니다. 실제로 이는 직접적인 비즈니스 손실입니다. 독자들이 직면하는 구체적인 시나리오를 살펴보겠습니다.

경쟁자의 가격 파싱

마켓플레이스에서 판매하거나 자체 인터넷 쇼핑몰을 운영하는 경우, 경쟁자는 15-30분마다 귀하의 가격을 수집하고 자동으로 자신의 가격을 1-2% 낮추는 파서를 실행할 수 있습니다. 귀하는 판매를 잃고 그 이유를 이해하지 못합니다. 봇 파서는 서버에 부하를 주기도 합니다: 분당 수백 개의 요청이 실제 구매자에게 사이트를 느리게 하여 전환율에 직접적인 영향을 미칩니다.

클릭 사기 (click fraud)

Facebook Ads 및 Google Ads와 함께 작업하는 아비트라지어와 마케터는 클릭 수를 조작하는 문제를 자주 겪습니다. 클릭 봇은 귀하의 광고를 클릭하여 예산을 소모하지만 전환은 없습니다. 연구에 따르면 일부 분야에서 광고 트래픽의 20-30%가 봇입니다. 리버스 프록시는 올바른 규칙을 사용하여 이러한 출처를 식별하고 차단하는 데 도움이 됩니다.

취약점 스캐너

Shodan, Masscan과 같은 자동 스캐너와 수백 개의 덜 알려진 도구들이 지속적으로 인터넷을 탐색하여 보호되지 않은 사이트를 찾고 있습니다. 이들은 구식 CMS 버전, 열린 포트, 기본 비밀번호를 확인합니다. 귀하의 사이트가 WordPress 또는 다른 인기 플랫폼에 있다면, 이미 그들의 데이터베이스에 있을 가능성이 높습니다. 보호가 없다면 취약점이 발견되는 것은 시간 문제입니다.

DDoS 공격 및 서버 과부하

경쟁자나 단순히 악의적인 사람들은 귀하의 사이트를 가장 불리한 시점에 공격할 수 있습니다 — 예를 들어 세일 기간이나 활발한 광고 캠페인 중에. 몇 천 개의 요청으로 구성된 작은 DDoS 공격조차도 저렴한 호스팅을 "다운"시킬 수 있습니다.

실제 통계:

Imperva의 데이터에 따르면, 전체 인터넷 트래픽의 47% 이상이 봇에 의해 생성됩니다. 그 중 약 30%는 악성 봇입니다. 귀하의 사이트가 하루에 1000명의 방문자를 받는다면, 그 중 약 300명은 서버에 부하를 주고 분석을 왜곡하는 자동 스크립트입니다.

리버스 프록시가 사이트를 보호하는 방법: 작동 메커니즘

리버스 프록시는 여러 수준에서 사이트를 보호합니다. 이러한 수준을 이해하면 시스템을 올바르게 설정하고 중요한 단계를 놓치지 않을 수 있습니다.

수준 1 — 실제 IP 숨기기

트래픽을 리버스 프록시를 통해 전달하기 시작하면, 귀하의 실제 서버 IP 주소는 더 이상 공개되지 않습니다. 봇과 공격자는 서버에 직접 접근할 수 없으며, 프록시에 부딪히게 됩니다. 이는 DDoS 공격으로부터 보호하는 데 특히 중요합니다: 악의적인 사용자가 귀하의 사이트 도메인을 알고 있더라도, 보호를 우회하여 서버를 공격할 수 없습니다.

수준 2 — 요청 분석 및 필터링

모든 들어오는 요청은 여러 매개변수에 따라 검사를 받습니다: User-Agent (어떤 브라우저/봇이 요청을 하는지), 하나의 IP에서의 요청 빈도, 지리적 위치, 행동 패턴. 봇은 일반적으로 요청을 너무 빠르게 하거나 비표준 User-Agent 문자열을 사용하거나 데이터 센터의 알려진 IP 주소에서 옵니다. 리버스 프록시는 이러한 모든 것을 추적하고 차단할 수 있습니다.

수준 3 — Rate limiting (요청 빈도 제한)

실제 사람은 분당 500개의 웹 페이지를 탐색할 수 없습니다. 리버스 프록시는 제한을 설정할 수 있습니다: 예를 들어, 하나의 IP에서 분당 60개의 요청을 초과할 수 없습니다. 누군가가 제한을 초과하면 일시적으로 차단되거나 CAPTCHA 검사를 받게 됩니다. 이는 일반 방문자에게 피해를 주지 않으면서 대부분의 파서와 스캐너를 효과적으로 차단합니다.

수준 4 — 캐싱 및 부하 감소

리버스 프록시는 정적 콘텐츠(이미지, CSS, JavaScript)를 캐시하고 이를 직접 제공하여 귀하의 서버에 접근하지 않습니다. 그 결과, 봇이 필터를 통과하더라도 캐시된 페이지를 받게 되며, 실제 서버에 대한 부하는 최소화됩니다. 또한 이는 실제 방문자에게 사이트를 빠르게 만들어 SEO와 전환율에 긍정적인 영향을 미칩니다.

수준 5 — SSL/TLS 종료

리버스 프록시는 트래픽 암호화를 담당합니다. 귀하의 서버는 각 요청을 암호화하는 데 리소스를 낭비하지 않기 때문에 더 빠르게 작동합니다. 방문자는 보호된 HTTPS 연결을 보게 되며, 이는 신뢰와 Google에서의 순위에 모두 중요합니다.

해결책 개요: Cloudflare, Nginx, Caddy — 무엇을 선택할 것인가

리버스 프록시를 설정하기 위한 몇 가지 인기 있는 솔루션이 있습니다. 선택은 귀하의 기술 수준, 예산 및 작업의 규모에 따라 다릅니다.

솔루션 복잡성 비용 대상 봇 보호
Cloudflare 낮음 무료 / 월 $20부터 모두, 특히 초보자 ⭐⭐⭐⭐⭐
Nginx 중간 무료 (서버 필요) 기술 사용자 ⭐⭐⭐⭐
Caddy 낮음–중간 무료 (서버 필요) 개발자, 스타트업 ⭐⭐⭐
AWS CloudFront 높음 사용량에 따라 기업 부문 ⭐⭐⭐⭐⭐
HAProxy 높음 무료 (서버 필요) 고부하 프로젝트 ⭐⭐⭐⭐

대부분의 웹사이트 소유자, 마케터 및 아비트라지어에게는 Cloudflare가 최적의 선택입니다. 무료 요금제는 봇 및 스캐너로부터의 보호 작업의 90%를 처리합니다. 바로 이곳에서 단계별 가이드를 시작하겠습니다.

리버스 프록시로서 Cloudflare 설정: 단계별

Cloudflare는 DNS 서버를 간단히 변경한 후 귀하의 사이트에 대한 리버스 프록시가 되는 클라우드 서비스입니다. 프로그래밍이 필요 없고, 서버에 대한 접근이 필요 없으며, 브라우저에서 설정만 하면 됩니다.

1단계 — 등록 및 사이트 추가

cloudflare.com에 접속하여 계정을 만드세요. 로그인 후 "Add a Site" 버튼을 클릭하고 귀하의 사이트 도메인(예: myshop.ru)을 입력하세요. 무료 요금제 Free를 선택하세요 — 시작하기에 충분합니다.

Cloudflare는 자동으로 귀하의 DNS 레코드를 스캔하고 목록을 보여줍니다. 모든 레코드가 제자리에 있는지 확인하세요 (일반적으로 서버의 IP가 포함된 A 레코드와 이메일을 위한 MX 레코드가 있습니다). "Continue"를 클릭하세요.

2단계 — 도메인 등록기관에서 DNS 서버 변경

Cloudflare는 두 개의 네임서버 주소를 제공합니다 — 예를 들어 alex.ns.cloudflare.comdiana.ns.cloudflare.com. 도메인 등록기관의 관리 패널(RU-CENTER, Reg.ru, Namecheap 등)에 접속하여 현재의 네임서버를 이 두 주소로 변경하세요.

DNS 업데이트는 15분에서 48시간이 걸립니다. 모든 것이 업데이트되면 귀하의 사이트로의 모든 트래픽은 Cloudflare 서버를 통해 흐르기 시작하며, 리버스 프록시는 자동으로 작동합니다.

3단계 — 필요 시 "Under Attack" 모드 활성화

Cloudflare 패널에서 Security → Overview 섹션으로 이동하세요. 여기에서 보호 수준(Security Level)을 볼 수 있습니다. 대부분의 사이트에는 "Medium" 수준이 적합합니다. 사이트에 공격이 진행 중인 경우, 일시적으로 "Under Attack Mode"로 전환하세요: 모든 방문자는 봇이 일반적으로 통과하지 않는 JS 검사를 통과해야 합니다.

4단계 — Bot Fight Mode 설정

Security → Bots로 이동하세요. "Bot Fight Mode" 스위치를 켜세요 — 이는 무료로 제공되는 자동 봇에 대한 기본 보호입니다. Cloudflare는 수십억 개의 요청 데이터베이스를 사용하여 알려진 악성 봇의 트래픽을 자동으로 식별하고 차단합니다.

유료 요금제(Pro 이상)에서는 더 세부적인 설정이 가능한 Super Bot Fight Mode가 제공됩니다: 검색 봇(Googlebot, Yandexbot)은 통과시키고, 검증된 봇(업타임 모니터링) 및 의심스러운 자동 요청에 대해 별도로 설정할 수 있습니다.

5단계 — 방화벽 규칙(Firewall Rules) 생성

Security → WAF → Firewall Rules로 이동하여 귀하의 작업에 맞는 규칙을 생성하세요. 즉시 추가해야 할 몇 가지 규칙 예시는 다음과 같습니다:

규칙 예시 1 — 빈 User-Agent 차단:

조건: http.user_agent eq "" → 조치: Block. 실제 브라우저는 항상 User-Agent를 전달합니다. 빈 User-Agent는 거의 항상 봇입니다.

규칙 예시 2 — 알려진 스캐너 차단:

조건: http.user_agent contains "sqlmap" or http.user_agent contains "nikto" or http.user_agent contains "nmap" → 조치: Block. 이는 취약점 탐색 도구입니다.

규칙 예시 3 — 지리적 차단(필요한 경우):

조건: ip.geoip.country in {"CN" "KP" "IR"} → 조치: Challenge (CAPTCHA). 귀하의 비즈니스가 러시아에서만 운영된다면, 대부분의 공격이 발생하는 국가를 차단할 수 있습니다.

6단계 — Rate Limiting 설정

Security → WAF → Rate limiting rules 섹션에서 요청 빈도 제한 규칙을 생성하세요. 예를 들어: 하나의 IP 주소에서 분당 100개 이상의 요청을 허용하지 않습니다. 제한이 초과되면 CAPTCHA를 표시하거나 일시적으로 차단합니다. 이는 귀하의 사이트의 모든 페이지를 빠르게 수집하려는 대부분의 파서를 차단합니다.

Nginx 리버스 프록시 설정: 기본 구성

만약 귀하가 자체 VPS 서버(예: Timeweb, Selectel 또는 DigitalOcean)를 가지고 있다면, Nginx를 리버스 프록시로 설정할 수 있습니다. 이는 더 많은 제어와 유연성을 제공하지만, 기본적인 명령줄 작업 기술이 필요합니다.

일반적인 구성은 다음과 같습니다: 귀하의 애플리케이션이 있는 기본 서버(예: 포트 8080에서 운영되는 인터넷 쇼핑몰)와 모든 트래픽을 수신하고 애플리케이션으로 전달하는 Nginx가 있는 별도의 서버 또는 동일한 서버가 포트 80/443에서 운영됩니다.

봇 보호가 포함된 Nginx 리버스 프록시의 기본 구성은 다음과 같습니다:

server {
    listen 80;
    server_name mysite.ru www.mysite.ru;

    # HTTPS로 리디렉션
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name mysite.ru www.mysite.ru;

    ssl_certificate /etc/letsencrypt/live/mysite.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mysite.ru/privkey.pem;

    # 빈 User-Agent 차단 (UA 없는 봇)
    if ($http_user_agent = "") {
        return 403;
    }

    # User-Agent에 따라 알려진 스캐너 차단
    if ($http_user_agent ~* (sqlmap|nikto|nmap|masscan|zgrab|python-requests)) {
        return 403;
    }

    # Rate limiting — 제한 영역 적용
    limit_req zone=one burst=20 nodelay;

    # 실제 서버로 요청 전달
    location / {
        proxy_pass http://127.0.0.1:8080;
        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;

        # 실제 서버에 대한 정보 숨기기
        proxy_hide_header X-Powered-By;
        proxy_hide_header Server;
    }
}

# Rate Limiting 영역 정의 (http 블록에 추가)
# limit_req_zone $binary_remote_addr zone=one:10m rate=60r/m;

proxy_hide_header 지시문에 주목하세요 — 이는 귀하의 실제 서버 및 CMS에 대한 정보를 드러내는 헤더를 숨깁니다. 이는 취약점 스캐너의 작업을 복잡하게 만듭니다: 그들은 무엇을 찾고 있는지 알지 못합니다.

limit_req_zone 영역은 각 IP 주소를 분당 60개의 요청으로 제한합니다. burst=20 매개변수는 짧은 시간 동안의 급증을 허용합니다 (실제 사용자가 여러 페이지를 빠르게 열 수 있음), 그러나 지속적인 높은 부하는 차단됩니다.

아비트라지어 및 마케터에게 중요:

레지던트 프록시를 사용하여 귀하의 랜딩 페이지가 다양한 지역에서 어떻게 보이는지 확인하는 경우, 귀하의 프록시가 차단되지 않도록 하세요. Cloudflare 또는 Nginx 설정에서 귀하의 프록시 서버 IP 주소를 화이트리스트에 추가하세요.

봇 및 스캐너 차단 규칙: 체크리스트

리버스 프록시의 기본 설정 후, 이 체크리스트를 사용하여 보호가 종합적으로 설정되었는지 확인하세요. 각 항목은 차단해야 할 개별 공격 벡터입니다.

✅ 기본 보호 (모든 사람에게 필수)

  • Cloudflare에서 Bot Fight Mode가 활성화되어 있음 (또는 다른 솔루션의 유사 기능)
  • Rate Limiting이 설정됨: 하나의 IP에서 분당 60-100개의 요청을 초과하지 않음
  • 빈 User-Agent로부터의 요청이 차단됨
  • sqlmap, nikto, nmap, masscan과 같은 알려진 스캐너가 차단됨
  • Server 및 X-Powered-By 헤더가 숨겨져 있음 (서버 및 CMS 버전 표시 안 함)
  • HTTPS가 설정되어 있으며, HTTP는 자동으로 HTTPS로 리디렉션됨
  • 실제 서버 IP가 공개 데이터베이스(Shodan, Censys)에 노출되지 않음

✅ 고급 보호 (적극적으로 공격받는 사이트용)

  • Honeypot 설정 — 봇만 볼 수 있는 숨겨진 페이지 (실제 사용자는 접근하지 않음). Honeypot을 방문한 IP는 자동으로 차단됨
  • 브라우저 무결성 검사 활성화 (Cloudflare의 Browser Integrity Check)
  • 의심스러운 트래픽에 대해 CAPTCHA 설정 (모든 트래픽이 아닌 의심스러운 트래픽에 대해서만)
  • 합법적인 트래픽이 예상되지 않는 국가에 대한 지리적 차단
  • 로그 모니터링: 403/429 오류가 급증할 경우 알림 설정
  • 대규모 클라우드 공급자의 IP 범위 차단 (AWS, Azure, GCP) — 대부분의 봇이 클라우드에서 작동함
  • 공격적인 봇을 위한 robots.txt 설정

✅ 특정 페이지 보호

  • 로그인 페이지 (/admin, /wp-admin, /login) — 엄격한 Rate Limiting (분당 5-10회 시도) 및 이중 인증
  • API 엔드포인트 — API 키 또는 토큰을 통한 필수 인증
  • 가격 페이지 — 빈번한 요청에 대한 추가 검사 (파싱 방지)
  • 등록/신청 양식 — CAPTCHA 또는 봇을 위한 보이지 않는 honeypot 트랩

유용한 봇을 차단하지 마세요!

Googlebot과 Yandexbot은 반드시 통과시켜야 합니다 — 이들은 귀하의 사이트를 인덱싱합니다. Cloudflare에서는 이들이 자동으로 "Verified Bots" 카테고리에 포함되어 올바른 설정에서 차단되지 않습니다. Security → Bots → Bot Analytics 섹션에서 이를 확인하세요.

모니터링을 위한 프록시: 사이트 보호 확인 방법

리버스 프록시 설정 후, 보호가 올바르게 작동하고 실제 사용자를 차단하지 않는지 확인하는 것이 중요합니다. 여기서 일반 프록시가 도움이 됩니다 — 귀하가 "외부 사용자"가 되어 사이트의 동작을 확인합니다.

마케터와 아비트라지어가 프록시를 통해 사이트를 확인해야 하는 이유

상황을 상상해 보세요: 귀하가 봇 보호를 설정하고 지리적 차단을 활성화했는데, 갑자기 전환율이 떨어졌습니다. 아마도 특정 지역이나 장치의 실제 사용자를 우연히 차단했을 수 있습니다. 이는 다양한 국가와 다양한 유형의 연결을 통해 프록시를 통해 사이트에 접속하여 확인할 수 있습니다.

이러한 작업에는 모바일 프록시가 적합합니다 — 이들은 실제 모바일 장치에서 통신하는 것처럼 연결을 모방합니다. 귀하의 차단 규칙이 모바일 트래픽을 올바르게 통과시키면, 일반 사용자가 스마트폰에서 보호로 인해 피해를 보지 않았음을 의미합니다.

검증 시나리오

시나리오 1 — 지리적 접근성 확인. 귀하는 Facebook Ads에서 러시아의 여러 지역을 대상으로 광고를 시작했습니다. 노보시비르스크, 예카테린부르크 및 크라스노다르의 IP를 가진 프록시를 통해 랜딩 페이지가 올바르게 열리고 CAPTCHA를 표시하지 않으며 빠르게 로드되는지 확인하세요.

시나리오 2 — Rate Limiting 테스트. 하나의 프록시를 통해 여러 탭을 열고 페이지 간 빠르게 전환하세요. 정상적인 동작 중에 차단되면 — 한계가 너무 낮습니다. 이를 높여야 합니다.

시나리오 3 — 다양한 유형의 IP를 통한 확인. 데이터 센터 프록시를 통해 접속해 보세요 (봇/서버 모방) — 귀하의 보호가 작동하면 이러한 요청은 CAPTCHA 또는 차단을 받아야 합니다. 그런 다음 레지던트 프록시를 통해 접속해 보세요 (일반 가정 사용자를 모방) — 접근은 자유로워야 합니다.

시나리오 4 — 경쟁자에 의한 확인. 귀하의 사이트를 얼마나 쉽게 파싱할 수 있는지 확인하고 싶다면, 간단한 도구를 통해 직접 시도해 보세요. 파서가 10-20개의 요청 후 차단된다면 — 보호가 작동하고 있는 것입니다. 데이터 수집이 방해받지 않고 이루어진다면 — 규칙을 강화해야 합니다.

보호 효과 모니터링

Cloudflare에서 Security → Overview 섹션으로 이동하세요 — 여기에서 차단된 요청의 그래프, 위협 유형 및 공격의 지리적 분포를 볼 수 있습니다. 다음 사항에 주의하세요:

  • 차단된 요청의 급증 — 활성 공격 또는 파싱의 징후
  • 한 국가에서의 트래픽 비율이 높음 — 지리적 차단을 추가할 필요가 있을 수 있습니다
  • 로그에서 403/429 오류의 증가 — 실제 사용자가 차단되고 있지 않은지 확인하세요
  • /admin, /wp-login.php에 대한 정기적인 요청 — 해킹 시도, 이러한 경로의 보호를 강화하세요

결론: 리버스 프록시는 선택이 아닌 필수입니다

리버스 프록시는 더 이상 대기업만을 위한 도구가 아닙니다. 오늘날 작은 인터넷 쇼핑몰, 아비트라지 캠페인을 위한 랜딩 페이지 또는 SMM 에이전시의 웹사이트도 봇, 스캐너 및 경쟁자의 파싱으로부터 기본적인 보호가 필요합니다.

이 가이드의 주요 결론: Cloudflare는 기술 지식 없이 가장 빠르게 시작할 수 있는 방법이며, Nginx는 자체 서버가 있을 경우 최대한의 제어를 제공합니다. 두 경우 모두 기본 보호는 30-60분 내에 설정할 수 있으며, 80-90%의 일반적인 위협을 차단합니다. 유용한 봇(Googlebot, Yandexbot)이 화이트리스트에 남아 있고, 실제 사용자가 너무 공격적인 규칙으로 인해 피해를 보지 않도록 확인하는 것을 잊지 마세요.

프록시를 사용하는 분들을 위한 별도의 사항: 광고 캠페인을 확인하거나 경쟁자를 모니터링하거나 다양한 지역에서 귀하의 사이트의 접근성을 테스트하는 경우, 이러한 작업에는 레지던트 프록시가 가장 적합합니다. 이들은 실제 가정 사용자의 IP 주소를 가지고 있어 대부분의 보호 시스템을 통과하며, 귀하의 청중이 보는 내용을 객관적으로 보여줍니다.

```