지식

서브넷 전염: 차단된 IP 하나가 이웃 IP까지 오염시키는 방식

블록리스트와 평판 시스템은 종종 IP를 그 이웃을 기준으로 판단합니다. 범위 단위 차단에 관한 연구 결과와 그로 인한 부수적 피해, 이를 식별하는 방법을 소개합니다.

James Meadow

James Meadow

2026년 9월 23일 · 9 분 소요

IP 주소는 홀로 판단되는 경우가 드물다. 하나의 주소가 문제를 일으키면 블록리스트, 신뢰도 시스템, 사이트 운영자는 종종 그 판단을 주변 주소들, 즉 같은 /24의 나머지 주소들, 때로는 전체 네트워크로까지 확대한다. 여러분이 사용하는 주소가 한 번도 하지 않은 일 때문에 차단될 수 있는데, 이는 그 이웃 주소들이 한 일 때문이다.

이것이 서브넷 전염(subnet contagion)이다. 이는 내부에서 보면 설명할 수 없어 보이는 차단 사례들, 즉 깨끗한 요청, 합리적인 속도, 그런데도 거부되는 상황을 설명해준다. 여기에는 반대 방향의 그림자도 있는데, 자동화된 트래픽을 보내는 누구나 이를 심각하게 받아들여야 한다. 왜냐하면 여러분의 트래픽도 다른 누군가에게는 이웃이기 때문이다.

핵심 요약

  • 범위 단위 차단은 충분히 효과적이어서 유혹적이다. 한 연구에서 단일 IP 스팸 블록리스트를 전체 /24로 확장했을 때 잡아낸 스팸 비율이 54.33%에서 92.74%로 상승했다.
  • 하지만 오작동도 한다. 다른 연구에서는 블록리스트에 오른 주소를 단순하게 /24로 확장했을 때 정상 주소가 잘못 분류되는 비율이 한 네트워크에서 최대 6.6%까지, 그리고 한 리스트에서는 60% 이상까지 상승했다.
  • 주소 공유는 상황을 악화시킨다. Facebook 데이터에서 악용 계정을 가진 IPv4 주소의 72.9%가 같은 날 10명 이상의 정상 사용자도 함께 가지고 있었다.
  • Cloudflare는 캐리어급 NAT 뒤에 있는 주소가 다른 주소보다 3배 더 자주 속도 제한(rate limit)을 받는다고 보고하지만, 봇 비율의 중간값은 거의 동일하다.
  • 한 연구에서 가장 널리 배포된 공개 블록리스트로 지목된 Spamhaus DROP은 /24보다 작은 항목은 등록하지 않는다. 2026년 9월 22일 기준 실제 파일을 직접 집계한 결과: 14,958,336개의 IPv4 주소를 포함하는 1,712개의 프리픽스였다.

운영자들이 동네 단위로 차단하는 이유

나쁜 주소들은 무리를 이룬다. 관리가 부실하거나 악용자에게 임대된 네트워크는 한꺼번에 여러 주소에서 악용 행위를 만들어내는 경향이 있다. 데이터가 이를 뒷받침한다.

NDSS 2020에서 발표된, 11개월에 걸친 157개 블랙리스트 연구에 따르면 “/24 프리픽스의 약 57.5%가 같은 /24 내에 최소 두 개의 블랙리스트에 등록된 IP 주소를 가지고 있다.” Twente 대학교의 이전 연구는 그러한 클러스터링이 방어자에게 얼마나 가치가 있는지 측정했다. 표준 단일 IP 블록리스트로 메일을 필터링했을 때 평균 54.33%의 스팸이 잡혔다. 등록된 모든 주소를 그 전체 /24가 악성이라는 표시로 취급했을 때는 92.74%가 잡혔다. 동일한 수의 무작위 선택 주소로 구성된 대조 리스트는 56.64%만 잡아냈으므로, 이러한 이득은 단순히 더 많이 차단해서가 아니라 이웃 관계에서 나온 것이었다.

이 결과는 범위 단위 차단을 정당화하는 전체 논거이며, 강력한 논거다. 그리고 바로 이 지점에서 문제가 시작된다.

누가 범위 단위로 차단하는가

범위 단위 판단은 소수의 관행이 아니다. 이는 가장 널리 사용되는 리스트들 중 일부에 내장되어 있다.

시스템등록 대상범위 처리 방식
Spamhaus DROP스팸 또는 사이버 범죄 조직이 임대하거나 탈취한 넷블록프리픽스만 등록; 가장 작은 항목은 /24
Spamhaus ASN-DROP전체 자율 시스템(autonomous system)2026년 9월 23일 실제 파일 기준 436개 ASN
Spamhaus SBL스팸 발생지와 그 인프라”해당 네트워크의 확장된 범위, 또는 ASN이나 RIR 할당으로 연관된 전체 네트워크 혹은 여러 네트워크”까지 확대될 수 있음
UCEPROTECT Level 3스팸 점수와 영향 카운트가 설정된 임계값을 넘으면 해당 ASN 내 모든 IP”무고한 사용자에게 부수적인 피해를 줄 수 있으며, 실제로 그럴 가능성이 높다”고 경고
Gmail 발신자 평판공유 발신 주소”동일한 공유 IP 주소를 사용하는 모든 발신자의 활동은 해당 공유 IP 주소의 평판에 영향을 미친다.”

설계만큼이나 배포 방식도 중요하다. 실제 호스트가 시행 중인 9개 공개 블록리스트 중 어느 것을 사용하는지 추론한 PAM 2021 연구는 “Spamhaus DROP이 우리가 수집한 목록 중 단연 가장 널리 사용되는 블록리스트였고, 그 다음이 Spamhaus EDROP이었다”고 밝혔다. 가장 많이 시행되는 리스트가 오직 범위만 아는 리스트라는 것이다.

웹 서비스들도 수신 측에서 동일한 효과를 설명한다. Google의 자체 “비정상적인 트래픽” 안내 페이지는 “학교나 회사처럼 여러분이 사용하는 것과 동일한 네트워크를 사용하는 다른 사람들이 자동화된 검색을 보내고 있는 경우”에 이 메시지를 볼 수 있다고 설명하며, 공유 VPN이나 인터넷 제공업체에 대해서도 마찬가지라고 말한다.

측정된 부수적 피해

이웃 단위로 판단하는 비용은 그 안에 있는 정상 주소들에게 돌아간다.

NDSS 2020 블랙리스트 연구는 이를 직접 정량화했다. 여러 블록리스트를 단순하게 합쳤을 때 연구 대상 네트워크에서 평균 0.14%에서 0.17%의 정상 주소가 잘못 분류되었다. 등록된 각 주소를 그 /24로 확장하자 이 수치는 “0.66%, 6.6%, 1.03%“로 상승했고, 개별 리스트 두 개는 각각 67.2%와 22.6%에 이르렀다.

주소 공유는 이를 더욱 악화시킨다. 하나의 IPv4 주소가 여러 사용자를 담당할 때, 그 주소를 차단하면 그들 모두가 함께 차단된다.

발견 사항출처
151개 공개 블록리스트 중 53%에서 60%가 재사용되는(NAT 처리되었거나 동적인) 주소를 포함했으며, 이는 3만 600개에서 4만 5,100개에 달하는 등록 사례로, 최대 78명의 정상 사용자에게 최대 44일 동안 영향을 줄 수 있었다Ramanathan 외, IMC 2020
악용 계정을 가진 IPv4 주소의 72.9%가 같은 날 10명 이상의 정상 사용자를 가지고 있었으며, IPv4 주소 중 단 3분의 1만이 단일 사용자를 가진 반면 IPv6는 95%였다Li와 Freeman, IMC 2020, Facebook 데이터
악용 계정이 발생한 모든 IPv4 주소에 대해 다음날 조치를 취했을 때 참 양성률(true positive rate) 65.8%, 거짓 양성률(false positive rate) 27.1%를 기록했다Li와 Freeman, IMC 2020
캐리어급 NAT 뒤에 있는 주소는 다른 주소보다 3배 더 자주 속도 제한을 받았으나, 봇 비율 중간값은 4.8% 대 4.7%로 거의 같았다Cloudflare, 2025년 10월
IPv4 CDN 클라이언트 트래픽의 41.1%가 대규모로 공유되는 주소에서 나왔으며, 이러한 주소는 활성 IPv4 주소 중 겨우 1.6%에 불과했다Hsu 외, arXiv, 2026년 8월

마지막 행은 이 문제가 왜 점점 더 중요해지고 있는지를 설명한다. 주소 공간의 작은 일부가 이제 실제 인간 트래픽의 큰 몫을 담당하고 있으며, 바로 그런 주소들이 한 명의 악의적 행위자에 대한 판단이 다른 모든 사람에게 떨어지는 곳이다. Spamhaus는 자체 exploit 리스트에 대해서도 같은 점을 지적한다. 이 리스트에는 동적 주소가 포함되어 있기 때문에 “여러분이 차단하는 사용자는 십중팔구 그 취약한 기기를 소유한 사용자가 아닐 것”이며, Spamhaus는 사용자들에게 “무고한 사용자를 차단하지 않도록” 요청한다.

존재하지 않는 것은 웹상에서 /24 내 한 주소가 차단된 후 이웃 주소들에게 무슨 일이 일어나는지에 대한 직접적인 측정이다. 위의 수치들은 메일 필터링, 블록리스트 분석, 플랫폼 악용 데이터에서 나온 것이다. 그 메커니즘은 잘 문서화되어 있지만, 웹 스크래핑에 대한 정확한 규모는 아직 알려져 있지 않다.

웹 데이터를 수집하는 경우에 의미하는 것

여러분의 요청이 직접 관리하지 않는 주소를 통해 나가고, 레지덴셜 또는 모바일 네트워크에서는 항상 그런 경우인데, 그렇다면 여러분이 겪는 차단 중 일부는 여러분 자신에 대한 것이 아니라 이웃에 대한 것이다. 이는 차단율을 어떻게 해석해야 하는지를 바꾼다.

조정하기 전에 진단하라. 결과를 exit의 /24와 ASN별로 그룹화하라. 한 프리픽스가 기준선보다 훨씬 자주 거부되는데 나머지는 정상이라면, 문제는 여러분의 요청 패턴이 아니라 그 프리픽스의 평판이다. 헤더를 바꾸거나 속도를 늦춘다고 해서 이 문제가 고쳐지지는 않는다.

import ipaddress
from collections import defaultdict


def prefix_block_rates(rows, min_requests=30):
    """rows: (exit_ip, asn, blocked) per request. Returns prefixes blocked far above the norm."""
    by_prefix = defaultdict(lambda: [0, 0])
    total, blocked_total = 0, 0
    for ip, asn, blocked in rows:
        net = ipaddress.ip_network(f"{ip}/24", strict=False)
        stats = by_prefix[(str(net), asn)]
        stats[0] += 1
        stats[1] += int(blocked)
        total += 1
        blocked_total += int(blocked)
    baseline = blocked_total / max(1, total)
    flagged = []
    for (net, asn), (n, b) in by_prefix.items():
        if n >= min_requests and b / n > max(3 * baseline, 0.2):
            flagged.append((net, asn, n, round(b / n, 3)))
    return baseline, sorted(flagged, key=lambda r: -r[3])

여러 네트워크에 걸쳐 분산시켜라. 범위 단위 판단은 집중을 응징한다. 여러 네트워크에서 끌어오는 풀은 하나의 차단된 범위가 여러분에게 미칠 수 있는 영향을 제한한다. Shifter의 레지덴셜 게이트웨이는 기본적으로 2억 5백만 개 이상의 주소로 구성된 풀에서 요청마다 새로운 IP로 로테이션되며, 이는 여기에 대한 자연스러운 방어책이다. 타겟이 정말로 하나의 네트워크를 필요로 할 때는 ASN 타겟팅이 의도적으로 범위를 좁혀준다. 좁히는 것은 동시에 노출도 집중시키므로, 필요할 때만 그렇게 해야 한다.

모든 것을 하나의 세션에 고정하지 마라. 스티키 세션은 하나의 주소에 여러분을 고정시키는데, 이는 다단계 흐름에는 적합하지만 대량 수집에는 부적합하다. 그 주소가 나쁜 이웃 안에 있다면, 그 세션의 모든 것이 이를 그대로 물려받는다.

이웃을 깨끗하게 유지하라. 이것이 연구가 무시하기 어렵게 만드는 부분이다. 공격적이고 속도 조절이 나쁜 자동화는 정확히 범위가 등록되게 만드는 원인이며, 그 대가를 치르는 것은 그 네트워크를 공유하는 가정과 사무실들이다. 속도 제한과 요청 스로틀링에서 다룬 것처럼 사이트가 감당할 수 있는 수준으로 속도를 조절하는 것은 단지 예의가 아니다. 이는 여러분이 의존하는 주소를 여러분 자신과 그 주소를 공유하는 모든 사람이 계속 사용 가능하게 유지해준다.

평판이 처음에 어떻게 구축되고 점수화되는지는 IP 평판이란 무엇이며 왜 중요한가에서 다룬다. 나쁜 경로와 여러분에게 등을 돌린 타겟을 구별하는 방법은 레지덴셜 프록시 상태 모니터링타겟 상태 점수 구축하기에서 다룬다.

웹사이트를 운영하는 경우에 의미하는 것

동일한 연구는 차단 규칙을 작성하는 모든 사람에게도 경고가 된다.

  • 차단하기 전에 점수를 매겨라. UCEPROTECT 자체도 자사의 ASN 단위 리스트로 차단하는 것이 “무고한 사용자에게 부수적인 피해를 줄 수 있으며, 실제로 그럴 가능성이 높다”고 경고한다. 범위 단위 신호는 그 자체로 판결이 아니라, 점수를 매기는 하나의 입력값으로 취급하라.
  • 어떤 주소가 공유되는지 파악하라. Cloudflare는 공유 주소를 차단할 때의 부수적 영향을 줄이기 위해 특별히 캐리어급 NAT 분류기를 구축했다.
  • 범위 차단은 만료되게 하라. 재사용되는 주소는 빠르게 주인이 바뀐다. IMC 2020 연구는 재사용되는 주소가 최대 44일까지 리스트에 남아있을 수 있음을 발견했다.
  • 왜 차단했는지 알려라. 이의를 제기할 수 있는 방법이 담긴 명확한 차단 페이지는 비용이 거의 들지 않으며, 스스로 진단할 수 없는 문제로부터 실제 사용자를 구제해준다.

결론

주소를 이웃으로 판단하는 것은 효과가 있으며, 이것이 바로 인터넷의 방어 인프라 상당 부분이 이 방식을 사용하는 이유다. 가장 많이 시행되는 공개 블록리스트는 범위만 등록하고, 일부 리스트는 설계상 전체 네트워크까지 확대되며, 공유 주소는 한 악의적 행위자에 대한 판단이 수십 명에게 떨어질 수 있음을 의미한다. 부수적 피해는 문서화되어 있으며 때로는 그 규모가 크지만, 웹에 대해서는 여전히 직접적으로 측정된 바가 없다.

데이터를 수집하는 누구에게든 실용적인 교훈은, 차단이 여러분에 관한 것이라고 가정하기 전에 프리픽스별로 읽어볼 것, 트래픽을 집중시키기보다 여러 네트워크에 분산시킬 것, 그리고 여러분이 사용하는 범위가 공유된다는 사실을 기억할 것이다. 나쁜 이웃의 평판을 물려받지 않는 가장 깔끔한 방법은 스스로 나쁜 이웃이 되지 않는 것이다.

출처 및 참고문헌

시작할 준비가 되셨나요?

205M개 이상의 IP, 195개 이상의 국가를 지원하는 Shifter의 레지덴셜 프록시를 $0.10/GB부터 이용해보세요.

시작하기