KR20220101190A - 도메인 네임 시스템과 연관된 공격을 방지하기 위한 방법 및 시스템 - Google Patents

도메인 네임 시스템과 연관된 공격을 방지하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20220101190A
KR20220101190A KR1020227021281A KR20227021281A KR20220101190A KR 20220101190 A KR20220101190 A KR 20220101190A KR 1020227021281 A KR1020227021281 A KR 1020227021281A KR 20227021281 A KR20227021281 A KR 20227021281A KR 20220101190 A KR20220101190 A KR 20220101190A
Authority
KR
South Korea
Prior art keywords
dns
dns query
query request
packet
domain name
Prior art date
Application number
KR1020227021281A
Other languages
English (en)
Other versions
KR102681031B1 (ko
Inventor
션 무어
조나단 알. 로저스
스티븐 로저스
Original Assignee
센트리페탈 네트웍스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/692,365 external-priority patent/US11012414B2/en
Application filed by 센트리페탈 네트웍스 인코포레이티드 filed Critical 센트리페탈 네트웍스 인코포레이티드
Publication of KR20220101190A publication Critical patent/KR20220101190A/ko
Application granted granted Critical
Publication of KR102681031B1 publication Critical patent/KR102681031B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1458Denial of Service
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/30Types of network names
    • H04L2101/35Types of network names containing special prefixes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

인터넷의 도메인 네임 시스템(DNS)에 대한 일부 서비스 거부 사이버 공격에 대한 공격 벡터들은 DNS에 등록되지 않은 도메인 네임들을 분해하기 위한 불량, 위조 또는 등록 해제된 도메인 네임(DNS) 요청들이다. 일부 다른 사이버 공격들은 데이터를 위조 도메인 네임들로 인코딩하거나, 그렇지 않으면 위조 DNS 요청들로 네트워크들을 통해 전송되는 도메인 네임들로 인코딩하여 민감한 데이터를 훔친다. DNS 게이트키퍼는 DNS 요청들을 포함하는 전송 중인 패킷들을 필터링할 수 있고, 요청의 도메인 네임이 DNS에 등록되었는지 여부를 효율적으로 결정할 수 있다. 도메인 네임이 DNS에 등록되어 있지 않은 경우, DNS 게이트키퍼는 복수의 보호 액션들 중 하나를 수행할 수 있다. DNS 게이트키퍼는 합법적이지 않은 것으로 결정된 요청들을 드롭하여, 공격을 방지할 수 있다.

Description

도메인 네임 시스템과 연관된 공격을 방지하기 위한 방법 및 시스템
본원에 설명된 양태들은 일반적으로 컴퓨터 하드웨어 및 소프트웨어 및 네트워크 보안에 관한 것이다. 특히, 본 개시의 하나 이상의 양태들은 일반적으로 패킷 필터링 규칙들에 대한 전송 중인 패킷들(in-transit pacekts)의 효율적인 필터링을 위한 컴퓨터 하드웨어 및 소프트웨어에 관한 것이다.
네트워크 보안은 정보화 시대가 지속됨에 따라 점점 더 중요해지고 있다. 네트워크 위협/공격은 다양한 형태(예를 들어, 승인되지 않은 요청 또는 데이터 전송, 바이러스, 멀웨어(malware), 리소스를 압도하도록 설계된 대용량의 트래픽 등)를 취할 수 있다.
이러한 종류의 위협 및 공격에 대응하기 위해, 다양한 사이버 방어 방법론 및 시스템이 개발되고 배치되었다. 다양한 사이버 방어 시스템의 일종은 네트워크를 보호하기 위해 위협 인텔리전스 게이트웨이(threat intelligence gateway; TIG)와 같은 패킷 게이트웨이를 사용한다. 패킷 게이트웨이는 패킷 필터링 규칙 세트들을 전송중인 TCP/IP(전송 제어 프로토콜/인터넷 프로토콜) 패킷들에 적용하는 능력을 갖는 (인라인) 네트워크 패킷 필터링 장치를 포함할 수 있다. TIG는 사이버 위협 인텔리전스(cyber threat intelligence; CTI)에 의해 보호되거나 보안된 네트워크(예를 들어, 사설 네트워크)와 유사하게 보안/보호되지 않은 네트워크(예를 들어, 인터넷) 사이에서 게이트웨이 또는 인터페이스 역할을 할 수 있다.
패킷 필터링 규칙들은 CTI 제공자 조직들을 포함하는 CTI의 소스들에 의해 공급되는 위협 표시자들의 데이터베이스들에 기초할 수 있다. 패킷 필터링 규칙 세트는 네트워크를 보안/보호하기 위한 TIG-시행 보안 정책을 나타낼 수 있다. 위협 표시자들은 위험한 패킷들을 식별하기 위한 패킷 매칭 기준들로서 사용될 수 있다. 본원에서 기준에 대한 언급들은 개별 기준 및/또는 다수의 기준들을 지칭할 수 있다. CTI 표시자들 또는 위협 표시자들은, 위협 행위자들에 의해 제어되거나 동작될 수 있거나, 또는 그렇지 않으면 악의적인 활동과 연관될 수 있는 리소스들의 인터넷 네트워크 어드레스들(예를 들어, IP 어드레스들, IP 어드레스 범위들, L3/L4 포트들 및 프로토콜들, 도메인 네임들, 통합 리소스 식별자들(Uniform Resource Identifiers; URI들) 등)을 포함할 수 있다. CTI 표시자들/위협 표시자들은 또한 일부 TCP/IP 통신들을 보안하기 위해 사용되는 인증서들 및 연관된 인증 기관들에 대한 식별자들(예를 들어, HTTP(Hypertext Transfer Protocol)-매개 세션들을 보안하기 위해 TLS(Transport Layer Security) 프로토콜에 의해 사용되는 X.509 인증서들)을 포함할 수 있다. CTI 제공자들은, 예를 들어, 위협/공격 유형, 위협 명칭, 위협 위험 점수, 위협 행위자(속성) 등을 포함하는 각 위협 표시자와 연관된 위협 메타데이터를 포함한다. TIG 및 관련 애플리케이션들은 위협 메타데이터를 사용하여 위협들로부터의 보호를 더 증가시키고 네트워크 보안 태세를 더 개선할 수 있다.
네트워크 보안 정책 관리자는 하나 이상의 CTI 제공자들로부터 위협 표시자들 및 관련 위협 메타데이터를 수신하고 표시자들 및 메타데이터에 기초하여 패킷 필터링 규칙들을 생성함으로써 CTI-유도 패킷 필터링 규칙 세트로서 네트워크 보안 정책을 생성할 수 있다. 각 패킷 필터링 규칙은 적어도 (a) 패킷 데이터를 매칭하기 위한 기준, (b) 기준과 매치하는 경우 패킷에 적용될 액션 또는 액션들의 조합, 및 (c) 위협 메타데이터를 포함한다. 매칭 기준은 패킷 필드 명칭(예를 들어, L3 소스 IP 어드레스 필드) 및 필드 값으로 구성된 하나 이상의 쌍을 포함할 수 있다. 필드 값은 네트워크 어드레스(예를 들어, IP 어드레스, 도메인 네임, URI 등)의 형태의 위협 표시자 또는 인증서나 인증 기관에 대한 식별자일 수 있다. 액션 또는 액션들의 조합은 패킷을 차단 또는 드롭(drop)하는 것, 패킷을 허용 또는 포워딩하는 것, 패킷을 로깅(logging)하는 것, 패킷을 캡처하는 것, 패킷을 재지향(re-directing) 또는 재-라우팅(re-routing)하는 것, 및 네트워크를 보호하기 위해 패킷을 수정하는 것의 일부 조합을 포함할 수 있다. TIG들 및 CTI-유도 정책들의 맥락에서, 규칙 액션은 패킷 변환 함수(packet transformation function; PTF)라고 불릴 수 있으며, 이는 네트워크를 보호하는 방식으로 패킷을 변환할 수 있다. 예를 들어, PTF는 위협 엔드포인트와의 연결 셋업을 개시하고 있는 TCP SYN 패킷을 연결 셋업 프로세스를 중단시키는 대응되는 TCP RST 패킷으로 변환할 수 있다. 위협 메타데이터는 위협 위험 점수를 계산하고, 패킷에 적용될 위협 분석 방법론 및 패킷과 연관된 통신들을 선택하고, 또는 위협 위험에 따라 패킷에 적용될 액션(들)을 선택 또는 계산하는 데 사용될 수 있다.
하나 이상의 TIG들은 예를 들어 네트워크의 인터넷 액세스 링크들 중 하나 이상과 인라인으로 삽입될 수 있다. 하나 이상의 TIG들의 정책 관리자는 (a) 하나 이상의 CTI 제공자들로부터 CTI(위협 표시자들 및 관련 메타데이터)를 수신하고; (b) 위협 표시자들 및 메타데이터로부터 도출된 패킷 필터링 규칙으로 구성된 하나 이상의 정책들을 생성하고; (c) 하나 이상의 정책들을 다운로드하거나 하나 이상의 정책들을 정책 가입에 의해 정책 관리자와 연관될 수 있는 하나 이상의 (가입) TIG들로 전송하도록 구성될 수 있다. TIG들은 패킷이 인터넷 액세스 링크를 (어느 방향으로든) 통과할 때 각각의 수송중 패킷에 패킷 필터링 규칙들을 적용함으로써 정책들을 시행할 수 있다.
TIG들 및 관련 CTI를 사용하여 네트워크들을 보호하는 효과는 종종 TIG에 의해 적용되는 CTI 표시자들 및 메타데이터의 범위 및 품질, 및 TIG의 성능과 함수 관계에 있다. 현재 공개 시점에, 집합적으로, CTI의 다수의 소스들로부터 이용가능한 수백만의 위협 표시자들(및 관련 위협 메타데이터)이 있으며, 표시자들은 IP 어드레스들, 5-투플(tuple)들, 도메인 네임들, URI들, 등 뿐만 아니라 인증서 식별자들, 인증 기관 식별자들 등의 형태이다. CTI의 이러한 큰 데이터베이스들은 유사한 수의 패킷 필터링 규칙들로 변환될 수 있다. 주어진 네트워크의 통신 트래픽에서 실제로 관찰될 수 있는 위협 표시자들은 반드시 알 필요는 없기 때문에, 모든 이용가능한 CTI 또는 관련 패킷 필터링 규칙들은 효과적인 보호들을 보장하기 위해 언제든지 TIG에 의해 적용될 수 있다. TIG 정책들은 수백만, 수천만 또는 수억 만 개의 규칙들로 구성될 수 있다. 이와 같이, TIG는 네트워크 성능에 악영향을 미치지 않고 각 전송중인 패킷에 수백만 개의 패킷 필터링 규칙들을 적용할 수 있어야 한다. 10G 및 40/100G 네트워크 링크들은 TIG 삽입 지점들에서 사용될 수 있으며, 이는 패킷 전송 속도들이 초당 수백만 또는 수천만 패킷들일 수 있음을 의미한다. TIG는 네트워크 성능에 악영향을 미치지 않고, 정책을 시행하기 위해 수백만 개의 규칙들을 통해 각 전송중인 패킷을 필터링해야 한다. 이러한 큰 정책들 및 높은 패킷 속도들로, 정책들이 메인 메모리에 저장될 때에도, 그리고 고속(예를 들어, 서브선형) 정책 검색 알고리즘들이 사용될 때에도, TIG 성능은 불충분할 수 있고 수용 불가능한 성능 저하를 초래할 수 있다. 예를 들어, 높은 레이턴시들은 버퍼 오버플로우들로 인한 패킷 드롭들을 초래할 수 있다. 패킷 필터링 동안 발생하는 레이턴시는 낮아야 하고 패킷들은 (예를 들어, 버퍼 오버플로우들로 인해) 드롭되지 않아야 한다.
TIG는 (a) 네트워크 패킷 처리를 위해 설계 또는 구성될 수 있는 고성능 CPU들; (b) 규칙 표시자들과 현재 수송중 패킷의 관련 필드 값들 사이의 매치에 대한 규칙들을 검색하기 위한 고속/효율적인 알고리즘들 및 관련 데이터 구조들; 및 (c) CPU(들)가 고속, 고대역폭 데이터 버스를 통해 신속하게 메인 메모리에 액세스할 수 있도록 고속 로컬 메모리(예를 들어, 종종 메인 메모리라고 불리는 온-보드 SDRAM)에 정책(수백만 개의 패킷 필터링 규칙들을 포함할 수 있음)의 저장 중 일부 조합에 의해 필요한 성능을 달성하도록 설계될 수 있다.
그러나, 최근 네트워킹의 경향으로 인해 TIG들이 효과적인 네트워크 보호를 유지하는 데 필요한 수준에서 수행하기가 어렵게 하거나 비현실적으로 만들고 있다. CTI의 양의 증가율(위협 표시자들의 수 및 관련 메타데이터로 측정됨), 및 따라서 관련 정책들의 증가율(바이트 단위로 측정됨, 이는 패킷 필터링 규칙들의 수 및 이러한 규칙들의 바이트 단위의 크기의 함수임)은 프로세서 속도, 프로세서 비용, 프로세서 전력 요구 사항, 메모리 속도, 메모리 밀도, 메모리 비용 등의 개선율보다 높다. 그 결과 TIG들이 메모리 크기를 증가시킴으로써 정책 크기 증가를 증가시키도록 처리하는 것은 더 이상 실용적이지 않다. 이 문제는 네트워크 링크 속도가 지속적으로 증가하고 네트워크 트래픽 양이 지속적으로 증가하면서 더욱 악화된다. 따라서, CTI-유도 정책들의 크기의 큰 증가가 효과적인 네트워크 보호를 제공하면서 허용가능한 레벨들(예를 들어, 레이턴시가 비교적 낮고 패킷 드롭들이 최소이거나 없음)에서 TIG 성능을 유지하기 위해 필요한 계산 리소스들의 비교적 작은 증가만을 요구하도록 TIG 기술의 효율성에 있어 개선이 필요하다.
많은 공격들은 인터넷의 도메인 네임 시스템(Domain Name System; DNS)과 연관될 수 있다. DNS는 때로는 인터넷의 "전화번호부"라고 불리며, DNS는 인간 판독 가능 도메인 네임들을 기계 판독 가능 IP 어드레스들로 매핑하는 인터넷에 걸쳐 분산된 데이터베이스이다. 월드 와이드 웹(World Wide Web; WWW) 및 전자 상거래 애플리케이션들을 포함한 많은 인기 인터넷 애플리케이션들은 결정적으로 DSN에 따라 인터넷 인프라의 라우터들 및 상호 연결 링크들을 통해 웹 브라우저 요청들 및 웹 서버 응답들과 같은 트래픽의 라우팅을 가능하게 한다. 따라서, DNS에 대한 성공적인 공격으로 인해 DNS가 제대로 수행되지 않으면 이러한 인터넷 애플리케이션들 및 인터넷 자체가 효과적으로 기능하는 것을 중지하거나 또는 그렇지 않으면 이들의 동작을 심각하게 손상시킬 수 있다. 반대로, DNS 요청들은 DNS에 대한 분산형 서비스 거부(Distributed Denial-of-Service; DDoS) 공격을 포함하여 일부 다른 유형의 공격들에 대한 공격 벡터로 사용될 수 있으며, 이는 네트워크 자산에 손상 및 손실을 야기할 수 있다. 따라서, (a) DNS에 대한 공격을 방지하고, (b) DNS가 공격 벡터로 사용되는 것을 방지하는 효율적인 DNS 보호가 필요하다.
다음은 본 개시내용의 일부 양태들에 대한 기본적인 이해를 제공하기 위해 단순화된 요약을 제시한다. 이는 본 개시의 핵심 또는 중요 요소들을 식별하는 것도 본 개시의 범위를 기술하지 하려는 것도 아니다. 이하의 요약은, 아래의 설명의 서문으로서, 본 개시의 일부 개념들을 단순화된 형태로 제시하는 것에 불과하다.
본 개시의 양태들은 사이버 위협 인텔리전스(CTI) 애플리케이션들을 위한 효율적인 패킷 필터링에 관한 것이다. 패킷 필터링 방법은 시간과 공간 효율적일 수 있다. 실제로, 임의의 패킷 게이트웨이에 의해 필터링된 패킷들의 작은 부분만이 게이트웨이-시행 보안 정책의 임의의 CTI-유도 패킷-필터링 규칙과 매칭될 것이다. 따라서, 보안 정책의 규칙들을 검색하기 전에 패킷이 임의의 규칙과 매치할 것인지(또는 매치하지 않을 것인지) 여부를 결정하기 위한 시간-효율적인 방법은 많은 수의 정책 검색들을 제거할 수 있다. 상기 방법이 상기 정책을 통한 검색보다 빠른 경우, 충분한 양의 대표 패킷 트래픽에 대해 평균 낼 때 예상 검색 시간이 크게 줄어들 수 있다. 추가로, 보안 정책은 관련 위협 표시자 값들을 제외하고 동일한 다수의 규칙들을 포함할 수 있다. 규칙들에는 동일한 액션(들) 및 위협 메타데이터가 있다. 이와 같이, 공간(예를 들어, 메모리 리소스들) 효율들은 다수의 상이한 표시자들을 단일 규칙(예를 들어, 동일한 액션(들) 및 위협 메타데이터)과 연관시킴으로써 달성될 수 있다.
본 개시의 양태들은 또한 DNS와 연관된 일부 공격들의 효율적인 방지에 관한 것이다. 공격 벡터는 DNS에 등록되지 않은 도메인 네임을 포함하는 DNS 쿼리 요청 메시지들이다. 이하, 'DNS 쿼리 요청 메시지'는 'DNS 요청' 등으로 약칭될 수 있다. "DNS 쿼리 요청 메시지" 및 "DNS 요청"이라는 용어들은 메시지들, 메시지들을 포함하는 TCP/IP 패킷들 중 어느 하나 또는 둘 모두를 지칭할 수 있다. 또한, "DNS 쿼리 응답 메시지"는 마찬가지로 "DNS 응답" 등으로 약칭되거나 지칭될 수 있다.
본 발명의 양태들은 도메인 네임 시스템(DNS) 쿼리 요청을 포함하는 패킷들을 처리하는 방법들을 제공한다. 방법들은 호스트 또는 프록시(예를 들어, 엔드포인트 또는 중간 프록시 또는 네트워크 장치)와 같은 컴퓨팅 장치에서 복수의 패킷들을 수신하는 단계; 패킷 헤더 정보에 기초하여, 복수의 패킷들 각각이 DNS 쿼리 요청을 포함하는지 여부를 결정하는 단계; 및 DNS 쿼리 요청의 도메인 네임이 확률적 데이터 구조에 표시되는지 여부를 결정하기 위해 확률적 데이터 구조를 테스트하는 단계를 포함할 수 있다. 블룸 필터(Bloom filter)일 수 있는 확률적 데이터 구조는 DNS에 등록되어 있는 것으로 알려진 모든 도메인 네임들을 나타내는 데이터 세트로 구성될 수 있다. 상기 방법은 DNS 쿼리 요청의 도메인 네임이 확률적 데이터 구조에 표현되지 않는다는 결정에 기초하여 DNS 쿼리 요청이 정당한 DNS 쿼리 요청을 나타내는지 여부를 결정하고, 복수의 패킷들 중 패킷이 정당한 DNS 쿼리 요청을 나타내지 않는다는 결정에 기초하여 DNS 쿼리 요청을 드롭할 수 있다.
패킷이 DNS 쿼리 요청을 포함하는 것으로 결정되고, DNS 쿼리 요청의 도메인 네임이 확률적 데이터 구조에 표현되지 않는다고 결정되면, 방법들은 DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타내는지 여부를 결정할 수 있다. DNS 쿼리 요청은 합법적인 DNS 요청을 포함할 수 있고, 일부 불법적인 요청들을 포함할 수 있다. 불법적인 요청들은 도메인 네임 요청을 해결하기 위한 합법적인 시도들인 요청들과 같은 불량(bad) 요청들뿐만 아니라 다른 사람에게 서비스를 거부하고/하거나 손상된 시스템으로부터 정보를 유출하기 위한 시도로 제출된 요청들과 같은 위조(bogus) 요청들을 포함할 수 있다. 합법적이지 않은 것으로 판단된 DNS 쿼리 요청에 대한 데이터는 관리 서버로 전송될 수 있다. 합법적인 요청을 포함하는 것으로 결정된 패킷은 그 의도된 목적지를 향해 전송될 수 있다.
컴퓨팅 장치는 전송된 DNS 쿼리 요청에 대한 응답을 위해 네트워크 트래픽을 모니터링할 수 있다. DNS 쿼리 요청에 대한 응답이 DNS 쿼리 요청이 성공적으로 완료되었음을 나타낸다는 결정에 기초하여, 컴퓨팅 장치는 모니터링된 DNS 쿼리 요청의 도메인 네임을 확률적 데이터 구조에 삽입할 수 있다. 컴퓨팅 장치는 성공적으로 완료된 DNS 쿼리 요청의 도메인 네임을 관리 서버로 전송할 수 있다.
일부 실시예들에서, DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타내는지를 결정하기 위해, 컴퓨팅 장치는 수신된 무효 DNS 쿼리 요청들의 레이트(rate)를 결정할 수 있다. 컴퓨팅 장치는 또한 수신된 무효 DNS 쿼리 요청들의 수의 변화율을 결정할 수 있다. 이러한 레이트들이 임계치를 총족하는 경우, 컴퓨팅 장치는 처리되고 있는 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다고 결정할 수 있다. 컴퓨팅 장치는 또한 DNS 쿼리 요청과 연관된 국가 코드 또는 확률적 데이터 구조에 대해 수신된 업데이트들의 타이밍에 기초하여 DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타내는지 여부를 결정할 수 있다. 컴퓨팅 장치는 또한 요청 내 도메인 네임의 구문적 특성들에 기초하여 DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타내는지 여부를 결정할 수 있다. 컴퓨팅 장치는 미등록 도메인과 연관된 패킷이 관련 도메인 네임 등록 래그(lag)와 연관될 수 있다고 결정할 수 있다. 컴퓨팅 장치는 미등록 도메인과 연관된 패킷이 합법적인 데이터 교환 서비스와 연관될 수 있다고 결정할 수 있다. 컴퓨팅 장치는 또한 전술한 요인들 중 하나 이상에 기초할 수 있는 요청이 합법적일 확률의 결정에 기초하여 DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타내는지 여부를 결정할 수 있다.
본 개시는 첨부된 청구범위에서 구체적으로 지적된다. 본 개시의 특징들은 본원에 제공된 도면들을 포함하여 본 개시 전체를 검토하면 더욱 분명해질 것이다.
본원의 일부 특징들은 첨부 도면들의 도면들에서 제한이 아닌 예로서 예시된다.
도 1은 복수의 상이한 네트워크들 중 적어도 하나를 보호하는 효율적인 위협 인텔리전스 게이트웨이(TIG들) 및 관련 정책 서버들을 위한 예시적인 환경을 도시한다;
도 2는 메모리 계층을 갖는 효율적인 TIG의 기능 및 시스템 컴포넌트들을 도시한다;
도 3은 효율적인 동작을 위해 TIG를 구성한 다음 그에 따라 패킷들을 효율적으로 필터링하는 일반적인 동작 개념을 설명하는 흐름도이다;
도 4, 5, 6, 7, 8, 9, 10, 11, 12, 및 13은 본원에 설명된 하나 이상의 예시적인 양태들에 따라 효율적인 TIG들을 구성하고 동작시키기 위한 방법들을 예시하는 예시적인 이벤트 시퀀스들을 도시한다;
도 11은 TIG들이 인터넷(DNS)에 대한 공격들로부터 네트워크들을 효율적으로 보호하도록 구성되는 도 1에 도시된 환경에서 발생하는 예시적인 이벤트 시퀀스를 추가로 도시한다;
도 1과 동일하거나 유사할 수 있는 도 14는 위협들 및 공격들로부터 DNS를 사용하는 네트워크들 및 DNS 둘 모두의 부분들을 보호하는 DNS 공격 방지 시스템에 대한 예시적인 네트워크 환경을 도시한다;
도 15는 DNS 게이트키퍼(DNS-G/K) 보호 장치의 예시적인 컴포넌트들을 도시한다;
도 16은 DNS-G/K에 대한 예시적인 동작 개념의 흐름도를 도시한다;
도 17은 DNS-G/K에 대한 예시적인 동작 개념의 다른 흐름도를 도시한다;
도 18은 DNS 필터 관리자의 동작 개념의 흐름도를 도시한다;
도 19는 DNS에 대한 일부 공격들을 방지하기 위한 방법들을 예시하는 예시적인 이벤트 시퀀스를 도시한다;
도 20은 일부 DNS 터널링 공격들을 방지하기 위한 방법들을 예시하는 이벤트 시퀀스를 도시한다;
도 21은 본원에 설명된 하나 이상의 예시적인 양태들에 따라 사용될 수 있는 예시적인 컴퓨터 시스템 아키텍처를 도시한다; 그리고
도 22는 본원에 설명된 하나 이상의 예시적인 양태들에 따라 사용될 수 있는 예시적인 네트워크 시스템 아키텍처를 도시한다.
다음의 다양한 예시적인 실시예들의 설명에서, 그 일부를 형성하고, 본 개시의 양태들이 실시될 수 있는 다양한 실시예들이 예시로서 도시되는, 첨부 도면들에 대한 참조가 이루어진다. 본 개시의 범위를 벗어나지 않으면서, 다른 실시예들이 활용될 수 있고, 구조적 및 기능적 변형들이 이루어질 수 있음이 이해되어야 한다. 추가로, 본 개시의 양태들이 실시될 수 있는 특정 애플리케이션들, 프로토콜들, 및 실시예들에 대한 참조가 이루어진다. 본 개시의 범위를 벗어나지 않으면서, 다른 애플리케이션들, 프로토콜들, 및 실시예들이 활용될 수 있고, 구조적 및 기능적 수정들이 이루어질 수 있다는 것이 이해되어야 한다.
요소들 사이의 다양한 연결들은 다음의 설명에서 논의된다. 이러한 연결들은 일반적이며, 달리 명시되지 않는 한, 직접 또는 간접, 유선 또는 무선, 물리적 또는 논리적, 가상 또는 소프트웨어 정의될 수 있다. 마찬가지로, 호스트들 및 어플라이언스들을 포함하는 요소들은 물리적 또는 가상일 수 있다. 이러한 점에서, 본 명세서는 제한하는 것으로 의도되지 않는다.
블룸 필터는 세트 내의 요소들의 멤버십을 결정하기 위한 시간 효율적이고 공간 효율적인 확률적 데이터 구조일 수 있다. 블룸 필터는 (1) 세트의 요소들의 수(N); (2) N개의 요소들을 저장하는 데 필요한 저장 크기 또는 스토리지/메모리 비트 수(M); 및 위양성율(false positive rate)(P)로 파리미터화된다. 위양성율(P)은 세트 내의 요소 X에 대한 멤버십 테스트가 매칭 값 True를 거짓으로 반환할 확률이다(예를 들어, 실제로 X가 세트의 멤버가 아닐 때 멤버십 테스트는 X가 세트의 멤버라고 결정함). M의 값은 N 및 위양성율(P)에 따라 달라진다. 고정 값 N(세트의 요소들의 수)의 경우, 스토리지 크기(M)는 위양성율과 반대로 변한다. 즉, 위양성율(P)이 감소함에 따라, 스토리지 크기(M)는 증가한다. CTI 애플리케이션들 및 연관된 CTI-유도 정책들의 맥락에서 블룸 필터들에 대한 위양성율이 선택될 수 있다.
예를 들어, 5억 개의 도메인 네임들의 세트 및 0.01 또는 10-2의 위양성율(P)을 포함하는 블룸 필터의 경우, 스토리지 크기(M)는 대략 600MB일 수 있다. 비교를 위해, 인터넷(DNS)에 등록된 도메인 네임들의 평균 크기는 대략 20 바이트이다. 따라서, 압축되지 않은 5억 개의 도메인 네임들의 단순 목록에는 대략 10GB의 스토리지가 필요하며, 이는 스토리지 크기(M)보다 약 (10G/600M) = 16.66배 더 크다. 위양성율(P)이 1000배로 감소, 즉 0.00001 또는 10-5로 감소하면, 스토리지 크기(M)는 약 1.5GB로 증가하며, 2.5배(=1.5G/600M)에 불과하다. 이는 공간 효율적이다. 일반적으로, 스토리지 크기(M)는 위양성율(P)의 로그의 크기에 따라 변한다. 세트 멤버십 테스트 알고리즘은 마찬가지로 시간 효율적이며, 이론적 시간 복잡도 함수는 또한 위양성율(P)의 로그 크기의 순서이다. 실제로, 세트 멤버십 알고리즘의 구현은, 위양성율(P)이 몇 자릿수의 크기만큼 변하더라도, 매우 빠르고 거의 일정한 시간일 수 있다.
공간 효율 및 시간 효율을 실현하기 위해, 블룸 필터와 같은 확률적 데이터 구조는 패킷 필터링 규칙들의 불필요한 탐색을 피하거나, 예를 들어, 공통 규칙 액션의 반복된 저장을 피하는 데 사용될 수 있다. 예를 들어, (위양성율 P = 0.01일 때) 약 600MB 크기의 블룸 필터에 5억 개의 도메인 네임들이 저장될 수 있다. 실제로, 5억 개의 패킷 필터링 규칙들(도메인 네임 표시자들 포함)로 구성된 정책은 예를 들어 각 규칙의 평균이 100 내지 1000 바이트(예를 들어, 도메인 네임 표시자를 위한 20 바이트, 액션들 및 관련 옵션들을 지정하기 위한 30 바이트, 및 메타데이터를 위한 50 내지 950 바이트)인 경우 50GB 내지 500GB의 스토리지/메모리가 필요할 수 있다. 즉, 블룸 필터는 블룸 필터가 없는 패킷 필터링 규칙 기반 정책보다 2 내지 3배 크기만큼 적은 스토리지/메모리를 필요로 할 수 있다. 동일한 오퍼레이터 또는 액션(들)(예를 들어, 블록 동작) 및 동일한 메타데이터와 연관된 복수의 위협 표시자들을 그룹화함으로써, 블룸 필터의 사용은 각 규칙에 대한 액션(들) 및 메타데이터를 개별적으로 저장하는 것과 연관된 리던던트 스토리지를 제거할 수 있고, 대신에 복수의 위협 표시자들을 포함하는 블룸 필터에 대해 액션(들) 및 메타데이터를 한번 저장할 수 있다. 즉, 각 규칙 및 관련 규칙 액션을 저장하는 것이 아니라, 규칙 액션은 특정 블룸 필터와 연관되며, 매치를 나타내는 블룸 필터의 테스트에 기초하여 수행될 규칙 액션으로 한 번 저장될 수 있다. 따라서, 블룸 필터 기술을 통합하는 정책에 대한 메모리/공간 요건들은 블룸 필터 기술을 통합하지 않는 패킷 필터링 규칙 정책들에 대한 메모리/공간 요건들에 비해 잠재적으로 자릿수의 크기만큼 상대적으로 훨씬 더 작을 수 있다.
CTI 애플리케이션들의 경우, 블룸 필터의 위음성율(false negative rate)은 항상 0(0이 아닌 위양성율(P)에 관계 없음)이며, 이는 블룸 필터 없이 시행된 정책과 동일한 보안 수준을 유지하거나 보존한다. 즉, 요소 X가 세트 I의 멤버인지 여부를 결정하기 위한 테스트가 음성 또는 False를 반환하면, X는 확실히 세트 I의 멤버가 아니다. 따라서 시간 효율성을 위해 블룸 필터 기술을 사용하는 TIG는 위양성율(P)의 확률로 불필요하게 정책을 검색/패킷을 필터링할 수 있지만, TIG는 정책에 매치하는 규칙이 있을 때 정책 검색을 건너뛰거나 패킷을 필터링하지 않는다.
블룸 필터라는 용어가 본 명세서 전반에 걸쳐 사용될 수 있지만, 필터 또는 데이터 구조의 선택은 예시적이며, 어떠한 방식으로든 제한적이거나 한정적인 것을 의미하지는 않는다. 세트 멤버십을 테스트하기 위한 충분한 시간 및 공간 효율성을 갖고 보안을 유지하는 임의의 데이터 구조가 사용될 수 있다. 예를 들어, 쿠쿠 필터(Cuckoo filter)는 블룸 필터와 유사한 시간 및 공간 효율성을 갖는 확률적 데이터 구조이다. 쿠쿠 필터는 또한 세트로부터 요소들을 효율적으로 삭제하거나 제거할 수 있는 능력을 가지고 있는 반면, 표준 블룸 필터는 (삭제 기능을 지원하는 블룸 필터 변형이 개발되었지만) 세트로부터 요소들을 제거할 수 있는 능력을 가지고 있지 않다. 세트로부터 요소들을 효율적으로 삽입, 업데이트 또는 삭제하는 능력은 일부 애플리케이션들, 구현들, 및/또는 실시예들에서 유용하다는 것이 입증될 수 있다. 보안 정책 업데이트는 규칙을 추가 또는 제거하거나, 특정 위협 표시자와 연관된 규칙 동작을 변경하기 위한 업데이트를 포함할 수 있다. 예를 들어, 업데이트는 규칙 액션을 모니터 액션에서 드롭(drop) 액션으로 변경할 수 있다. 데이터 구조들은 세트에 요소를 추가하기 위한 Insert() 함수, 요소의 세트 멤버십을 테스트하기 위한 Boolean-valued Member() 함수, 및 세트로부터 요소를 제거하기 위한 Delete() 함수와 같은 복수의 함수들을 지원할 수 있다. 이하의 설명은 또한 데이터 구조가 확률적이고 따라서 (0이 아닌) 위양성율(P)과 연관된다고 가정하지만, 다시 한번 이 선택은 예시적이며 제한적인 것을 의미하는 것은 아니다.
블룸 필터 기술이 CTI 애플리케이션들/TIG 특징들에 대한 효율성을 향상시킬 수 있는 다수의 방법들이 있다. 이하에서, (위에 이미 제공된 방법 이외에) 8개의 예시적인 방법들이 설명되어 있다. 단순화를 위해, 처음 6개의 예시적인 방법들은 네트워크 어드레스들(예를 들어, IP들, 도메인 네임들, URL들 등) 형태의 표시자들과 관련되고, 일곱 번 째 방법은 인증서 식별자들 형태의 표시자들과 관련되며, 여덟 번 째 방법은 표시자 유형들과 관련하여 일반적이다.
제1 예에서, 블룸 필터 기술은 성능을 향상시키는 데 사용될 수 있다. 검색될 필터링 규칙들의 세트 내의 각 규칙의 경우, 연관된 표시자가 추출될 수 있고 표시자는 정책 블룸 필터에 삽입될 수 있다. 결과적인 정책 블룸 필터는 패킷 필터링 장치의 메인 메모리에 저장될 수 있다. 현재 전송중인 패킷의 네트워크 어드레스(들)와의 매칭에 대한 패킷 필터링 규칙들의 세트의 검색 이전에, 패킷 필터링 장치는 네트워크 어드레스가 정책 블룸 필터의 멤버인지 여부를 결정할 수 있다. 결정의 결과가 TRUE이거나 매칭을 나타내는 경우, 패킷 필터링 장치는 매칭 규칙에 대한 해당 규칙 세트를 검색할 수 있고 패킷에 규칙 액션(들)을 적용할 수 있다. 패킷 필터링 장치가 FALSE의 결과를 결정하거나 매칭을 나타내지 않으면, 장치는 (예를 들어, 매칭 규칙이 발견되지 않을 것이기 때문에) 패킷 필터링 규칙들의 불필요한 검색을 스킵할 수 있다. 불필요한 검색들을 스킵함으로써, 패킷당 평균 정책 검색 시간이 줄어들 수 있고 TIG 성능이나 처리량이 향상될 수 있다. 이러한 확률적 데이터 구조 또는 블룸 필터는 시간-효율적 확률적 데이터 구조 또는 블룸 필터, 또는 정책 확률적 데이터 구조 또는 블룸 필터로 지칭될 수 있다.
제2 예에서, 정책은 그들의 매칭 기준 또는 위협 표시자들과 연관된 기준들을 제외하고 동일한 패킷 필터링 규칙들의 서브셋을 포함할 수 있다. 규칙들은 동일한 액션(들), 동일한 위협 메타데이터, 및 동일한 매칭 기준 또는 기준들(이는 예를 들어 하나 이상의 위협 표시자들과 연관될 수 있음)을 가질 수 있다. 정책 스토리지를 위한 공간(예를 들어, 메모리 사용량) 효율들은 다수의 상이한 표시자들을 단일 규칙(예를 들어, 동일한 액션(들) 및/또는 위협 메타데이터)과 연관시킴으로써 달성될 수 있다. TIG 또는 정책 관리 서버는 예를 들어 보안 정책의 복수의 규칙들(또는 보안 정책의 일부)을 규칙들과 연관된 위협 표시자(들)의 유형에 기초하여, 및/또는 규칙들과 연관된 액션들 및 위협 메타데이터에 기초하여 서브셋들로 소트(sort)하거나 나눌(partition) 수 있다. 단일 유형의 패킷 매칭 기준 또는 위협 표시자와 연관된 서브셋은 해당 서브셋과 연관된 규칙들의 불필요한 검색들을 피할 수 있다. 서브셋의 확률적 데이터 구조 또는 블룸 필터의 검색은 패킷이 해당 서브셋과 연관된 패킷 매칭 기준의 유형을 포함하지 않는 경우 스킵될 수 있다. 단일 규칙 액션과 연관된 서브셋은 규칙 액션의 불필요한 반복된 스토리지 및 개별 규칙들의 불필요한 스토리지를 피할 수 있으며, 이는 메모리 공간을 절약할 수 있다. 각각의 이러한 서브셋의 경우, 연관된 서브셋 블룸 필터는 연관된 규칙들의 모든 표시자들을 포함하도록 구성될 수 있고, 서브셋 블룸 필터는 연관된 규칙들의 공통 규칙 액션(들) 및 위협 메타데이터와 추가로 연관될 수 있다. 서브셋의 공통 규칙 액션(들) 및 위협 메타데이터는 서브셋 각 규칙에 대해 저장되고 이와 연관되기 보다는 확률적 데이터 구조에 대해 한 번만 저장될 수 있다. 그런 다음, 각각의 이러한 서브셋에 대해, 연관된 서브셋 블룸 필터는 정책에서 규칙들의 서브셋을 대체할 수 있어, 정책을 저장하기 위한 공간 요건들을 줄일 수 있다. 따라서, 정책은 이러한 확률적 데이터 구조들 또는 블룸 필터들의 세트로서 표현될 수 있다. 정책 검색 동안, 패킷 필터링 장치는 패킷의 네트워크 어드레스들이 임의의 서브셋 확률적 데이터 구조 또는 블룸 필터의 멤버들인지를 테스트한다. 패킷 필터링 장치가 서브셋 블룸 필터 테스트로부터의 매치를 결정하면, 서브셋 블룸 필터와 연관된 액션(들) 및 위협 메타데이터가 패킷에 적용될 수 있다. 서브셋 블룸 필터에서의 멤버십에 대해 네트워크 어드레스와 같은 요소를 테스트하는 시간이 규칙들의 서브셋을 통해 검색하는 데 걸리는 시간보다 적은 경우 시간 효율성도 또한 얻어질 수 있다. 일부 애플리케이션들에서, 블룸 필터 멤버십 테스트가 FALSE를 반환하거나 패킷과 세트의 매칭이 없다고 결정할 때 적용되는 패킷 필터링 규칙을 포함하는 것이 유용할 수 있다. 즉, 서브셋 블룸 필터는 2개의 연관된 패킷 필터링 규칙들을 가질 수 있는데, 이는 멤버십 테스트가 매칭의 표시에 대해 TRUE를 반환할 때 적용되는 제1 규칙 및 멤버십 테스트가 매칭이 없다는 표시에 대해 FALSE를 반환할 때 적용되는 제2 규칙을 포함한다. 이러한 서브셋 블룸 필터는 공간 효율의 블룸 필터로 지칭될 수 있다.
제3 예에서, TIG 정책들이 이용 가능한 메인 메모리에 저장되기에는 너무 커지게 될 수 있기 때문에, 상품 비용, 레이아웃 및 밀도 제약, 및 전력 또는 열 제한과 같은 요인들로 인해 메인 메모리 용량을 충분히 증가시키는 것은 비현실적일 수 있다. 2차 메모리는 더 느리지만(예를 들어, 판독-액세스 시간에서 측정된 바와 같음) 그에 대응하여 저장 용량이 더 클 수 있지만, 1차 메인 메모리보다 더 조밀하고, 더 쌀 수 있으며(예를 들어, 바이트 당), TIG에 추가될 수 있다. 이러한 2차 메모리는 빠른 검색 알고리즘들을 지원하기 위해 바이트-어드레싱 능력(byte-addressability)과 같은 일부 다른 RAM과 유사한 속성들을 필요로 할 수 있다. 2차 메모리의 용량은 너무 커서 1차 메인 메모리에 맞지 않는 정책들을 저장하도록 크기 조절될 수 있다. TIG 성능이 충분한 것을 보장하기 위해, 1차 메인 메모리 속도에 대한 2차 메모리 속도의 비는 CTI-유도 패킷 필터링 규칙들과 매치할 패킷들의 (예상되는) 부분 이상일 수 있다. 제2 메모리에 저장된 정책 내 규칙들에 대한 모든 표시자들을 저장하는 시간-효율 블룸 필터는 1차 메인 메모리에 저장될 수 있다. 2차 메모리에 저장된 정책을 검색하기 전에, 패킷 필터링 장치는 블룸 필터의 빠른 초기 검색을 수행할 수 있다. 블룸 필터의 초기 검색이 매치를 나타내는 경우, 패킷 필터링 장치는 2차 메모리를 통해 정책 검색 및 패킷 필터링을 수행할 수 있다. 블룸 필터의 초기 탐색이 매치를 나타내지 않으면, 2차 메모리 내의 패킷 필터링 규칙들의 (비교적 느린) 검색은 스킵될 수 있다.
제4 예에서, 블룸 필터들 및 패킷 필터링 정책의 일부 부분을 고속 메모리(예를 들어, 1차 메인 메모리)에 저장하고 다른 부분들/정책의 나머지 부분을 저속 메모리(예를 들어, 2차 메모리)에 저장하는 것이 유리할 수 있다. 예를 들어, 도메인 네임 및 URI 표시자들을 갖는 패킷 필터링 규칙들의 제1 세트를 2차 메모리에 저장하고, IP 어드레스 및 IP 어드레스 범위 표시자들을 갖는 패킷 필터링 규칙들의 제2 세트를 1차 메인 메모리에 저장하고, 시간-효율 블룸 필터들은 1차 메인 메모리에 저장된 규칙 세트들 모두에 대응된다. 특정 보호된 네트워크와 연관된 트래픽의 유형에 따라, 특정 유형들의 규칙들에 대해 우선순위화(예를 들어, 고속 메모리를 활용)하는 것이 유리할 수 있다. 예를 들어, 덜 자주 검색될 것으로 예상되는 도메인 네임들 및 URL들과 같은 표시자들 유형들을 갖는 규칙들보다 더 자주 검색될 것으로 예상되는 IP 어드레스들 및 IP 어드레스 범위들과 같은 표시자 유형들을 갖는 패킷 필터링 규칙들을 저장하기 위해 메인 메모리를 사용하는 것이 유리할 수 있다. TCP/IP 네트워크에서, 모든 패킷은 L3/IP 헤더에 IP 어드레스들을 포함하는 반면, 패킷들의 더 작은 부분은 도메인 네임들을 포함하고, 심지어 더 작은 부분은 URL들을 포함한다. 따라서, 정책에 모든 필터링 규칙들을 저장하기에 메인 메모리가 충분하지 않는 경우, 예를 들어, 메인 메모리에 IP 어드레스 표시자들을 갖는 규칙들을 저장하고, 2차 메모리에 도메인 네임 및 URL 표시자들을 갖는 규칙들을 저장하는 것이 유익할 수 있다. 예를 들어, 포트(80/443) 상의 HTTP/HTTPS(웹)와 같은 인기 프로토콜과 연관된 규칙들 뿐만 아니라, 도메인 네임 및 URI 표시자들에 대한 필터링 규칙들보다 더 빈번하게 검색될 수 있는 IP 어드레스 및 IP 어드레스 범위 표시자들에 대한 필터링 규칙들과 같은 더 높은 빈도 매칭 CTI 규칙 속성들(higher frequency matching CTI rule properties)(예를 들어, 더 낮은 충실도 위협 표시자들과 연관된 규칙들 및 유형별 더 많은 양의 표시자들과 연관된 규칙들)을 저장하기 위해 메인 메모리를 사용하는 것이 유익할 수 있다.
제5 예에서, 추가 효율을 달성하기 위해, 임의의 조합으로, 그리고 방법들에 대한 변형들과 함께, 상기 설명된 방법들을 통합하는 것이 유리할 수 있다. 예를 들어, 시간-효율 블룸 필터는 CTI-유도 패킷 필터링 규칙들의 서브셋과 연관될 수 있으며, 서브셋은 공간-효율 블룸 필터(들)에 의해 표현되는 규칙들의 일부 부분(들)을 가질 수 있다. 실제로, 증가된 효율을 달성하는 조합들 및 변형들은 CTI 특성들, 성능 요건들, 비용들, 및 동작 환경과 같은 팩터들을 포함하는 많은 팩터들에 따라 달라질 수 있다.
제6 예에서, 상기에 설명된 바와 같은 블룸 필터 또는 필터들의 조합이 일부 사이버 공격들로부터 도메인 네임 시스템(DNS)을 보호하는 데 사용될 수 있다. DNS는 인간 판독 가능 도메인 네임들을 기계 판독 가능 IP 어드레스들로 변환하는 서비스이다. DNS는 {도메인 네임, IP 어드레스} 쌍들의 큰, 전역적으로 분산된 메모리/저장소 및 인간 판독 가능 도메인 네임들을 기계 판독 가능 IP 어드레스들로 변환하기 위한 연관된 처리 시스템으로 보여질 수 있다. 많은 인기 애플리케이션들, 예를 들어, 월드 와이드 웹(WWW)은 효율적인 동작을 위해 DNS에 따라 달라진다. DNS에 대한 일부 사이버 공격들은 위조 DNS 쿼리 요청들을 공격 벡터로 사용한다. 위조 DNS 쿼리 요청은 DNS에 등록되지 않은 도메인 네임을 분해하기 위한 요청이다.
위조 DNS 쿼리 요청들을 사용할 수 있고 본원에 설명된 처리 방법들에 의해 완화될 수 있는 DNS에 대한 공격득의 적어도 2가지 유형들이 존재한다. 첫째, DNS에 대한 분산형 서비스 거부(DDoS) 공격은 많은 멀웨어에 감염된 장치들이 DNS에 등록되지 않은 도메인 네임들에 대해 위조 DNS 쿼리 요청들을 발행하게 함으로써 작동한다. 이러한 도메인 네임들은 부분적으로 도메인 생성 알고리즘들(domain generation algorithms; DGA들)에 의해 생성될 수 있으며, 이는 DNS에 등록된 도메인 네임들과 매치하지 않을 수 있는 임의의 영숫자 문자열들을 생성할 수 있다. DNS는 발견되지 않을 매치에 대해 전역적으로 분산된 데이터베이스를 통해 능숙하게 검색할 수 있으며, 이는 DNS에 등록된 도메인 네임들을 검색하는 것보다 훨씬 더 많은 작업/계산 리소스들을 필요로 할 수 있다. 이러한 다수의 위조 요청들이 동시에 발행된 경우, DNS는 위조 요청들을 서비스하기 위해 시도한 많은 양의 계산 리소스들을 지출할 수 있고, 이는 합법적인 DNS 요청들을 서비스하기 위해 불충분한 계산 리소스들을 초래할 수 있고, 서비스의 거부를 초래할 수 있다. 웹과 같은 많은 네트워크 애플리케이션들이 DNS를 사용할 수 있으므로, DNS에 대한 효과적인 DDoS 공격은 DNS를 사용하는 합법적인 인터넷 애플리케이션들에 대한 간접적인 공격으로 작용할 수 있다. 애플리케이션들(예를 들어, 웹 브라우저들)이 DNS 서비스를 거부하는 경우, 해당 애플리케이션들은 패킷들이 인터넷을 통해 타겟 도메인들(예를 들어, 웹 서버들)로 라우팅될 수 있도록 패킷들을 어드레싱하는 방법을 알지 못한다.
블룸 필터 기술 및 관련 효율 방법들은 이러한 공격들을 완화시키는 데 사용될 수 있다. DNS에 등록된 도메인 네임들은 약 5억 개이다. 저장 크기(M)가 약 600MB이고 위양성율 P = 0.01인 (공간 효율) 블룸 필터는 N = 5억개의 등록된 도메인 네임들로 구성될 수 있다. 이 블룸 필터의 사본들은, 예를 들어, 임의의 DNS 쿼리 요청 내의 도메인 네임이 DNS에 등록되었는지 여부를 체크하도록 구성되는 TIG들과 같은 (인라인) 패킷 필터링 장치들에 분배될 수 있다. 블룸 필터 테스트가 DNS 필터가 매치(예를 들어, True)를 나타낸다는 것을 나타내는 경우, 패킷 필터링 장치는 패킷의 목적지(예를 들어, DNS 서버)를 향해 연관된 패킷을 포워딩할 수 있다. 블룸 필터 테스트가 DNS 필터가 매치되지 않음(예를 들어, False)을 나타내는 것을 나타내는 경우, 패킷 필터링 장치는 패킷을 드롭(그리고 예를 들어, 적절한 리턴 코드로 DNS 쿼리 응답을 포함하는 대응되는 패킷을 생성 및 포워딩)할 수 있다. 패킷을 드롭함으로써, DNS를 통한 검색은 스킵된다. 블룸 필터들로 구성된 이러한 패킷 필터링 장치들을 전략적 지점들, 예를 들어 인터넷 액세스 링크들, 그리고 특히 DNS 인프라 제공자들에 의해 동작되는 네트워크들에 대한 인터넷 액세스 링크들에 위치시킴으로써, 다수의 위조 DNS 쿼리 요청들이 드롭삭제되거나/서비스되지 않을 수 있다. 따라서, DNS를 통한 많은 검색들이 스킵되고, 이는 합법적인 DNS 쿼리 요청들이 허용가능한 레이트로 서비스되도록 DDoS 공격을 충분히 완화할 수 있다;
제2 유형의 DNS 공격은 도난된 민감 정보를 DNS 쿼리 요청들 내의 (위조) 도메인 네임으로 인코딩하여 DNS를 악용할 수 있는 유출 공격(exfiltration attack)이다. 이러한 위조 요청들은 DNS 서버들로 가장하거나 악의적인 행위자들이 제어할 수 있는 합법적인 DNS 서버들일 수 있는 수집 서버들로 전송되어 요청들 내 도메인 네임들을 추출하고 기록할 수 있다. DNS 쿼리 요청들에 표시된 도난 정보를 추출 및 기록함으로써, 민감 정보가 유출되거나 도난된다. 이러한 유형의 사이버 공격을 DNS 터널링 공격이라고 할 수 있다.
이러한 공격을 방지하기 위해, 이러한 터널링 공격의 도메인 네임들이 DNS에 등록된 도메인 네임들에 매핑될 가능성이 낮다는 것을 관찰한다. 따라서, 이러한 공격을 방지하기 위해, DNS에 등록된 모든 도메인 네임들을 포함하는, "DNS 블름 필터"라고 하는, (공간-효율성) 블룸 필터로 구성된 패킷 필터링 장치들이, 예를 들어, 보호된 기업 네트워크에 대한 인터넷 액세스 링크들에 배치될 수 있다. 각 DNS 쿼리 요청은 DNS 블룸 필터로 구성된 패킷 필터링 장치에 의해 필터링될 수 있다. 패킷 필터링 장치는 DNS 블룸 필터의 테스트에 기초하여, 임의의 DNS 쿼리 요청 내의 도메인 네임이 DNS에 등록되는지를 결정할 수 있다. 패킷 필터링 장치가 DNS 블룸 필터가 매치를 나타낸다고 결정하는 경우(예를 들어, 멤버십 테스트가 True 결과를 반환하는 경우), 패킷 필터링 장치는 연관된 패킷을 그의 목적지(예를 들어, DNS 서버)를 향해 포워딩할 수 있다. 패킷 필터링 장치가 DNS 블룸 필터가 매치되지 않는 것(예를 들어, False 결과)을 나타내는 것으로 결정하는 경우, 패킷 필터링 장치는 연관된 패킷을 드롭할 수 있고, 이는 DNS 터널링 공격을 방지할 수 있다.
전술한 DNS 공격 완화 애플리케이션들의 경우, CTI 제공자에 의해 제공되는 CTI를 사용하는 것은 불필요할 수 있다. 대신, 이러한 DNS 공격 완화 애플리케이션들은 CTI 데이터의 소스가 될 수도 있다. 멤버십 테스트가 매치를 나타내지 않을 때(예를 들어, false 결과), 테스트되는 도메인 네임은 DNS에 등록되지 않은 것으로 결정된다. 이와 같이, 도메인 네임은 위협 표시자로서 식별될 수 있다. 따라서, DNS 공격 완화 애플리케이션들은 CTI의 소비자들보다는, CTI의 소스들로서 고려될 수 있다.
제7 예에서, 블룸 필터 기술은 일부 네트워크 통신들을 보안하기 위해 사용되는 인증서들로부터 도출되는 위협 인텔리전스를 적용함으로써 성능 및 보안을 향상시키는 데 사용될 수 있다. 예를 들어, 보안 웹/HTTP 통신들을 위한 하이퍼텍스트 전송 규약(Hypertext Transfer Protocol Secure; HTTPS) 프로토콜은 TLS 프로토콜을 사용하여 HTTP를 안전하게 터널링할 수 있다. TLS 터널 설정 핸드쉐이크 동안, X.509 인증서들은 두 네트워크 엔드포인트들 사이에서 교환될 수 있다. 이러한 인증서들은 인증 기관(certificate authority; CA) 조직들에 의해 발급됐을 수 있다. 그러나, 인증서들 및 CA들은 공격들과 연관될 수 있거나 그렇지 않으면 위협 위험과 연관될 수 있다.
따라서, CTI는 인증서 및 CA 데이터에 대해 제공되고 결정될 수 있다. 예를 들어, CTI는 해지된 인증서들과 연관될 수 있다. CA는 인증서가 어떤 방식으로 손상되었다고 CA가 믿을 수 있기 때문에 CA가 발급한 인증서들을 해지하기로 결정할 수 있다. 예를 들어, 인증서 생성 동안 사용되는 개인 키들은 도난된 것으로 결정될 수 있다. CA들은 해지된 인증서들의 일련 번호들을 포함하는 인증서 해지 목록들(certificate revocation lists; CRL들)을 게시할 수 있다. 관련 위협 표시자는 인증서를 고유하게 식별하는 소스 및 인증서 데이터 쌍(예를 들어, {CA-식별자, 일련 번호}, 여기서 "CA-식별자"는 CA에 의해 발행된 X.509 인증서들의 "발행자 이름" 값에 대응함)을 포함할 수 있다. CA는 요청 시 CRL을 다운로드하거나 인증서의 폐기 상태에 대해 쿼리될 수 있는 서버를 제공할 수 있다. CRL들 및 CRL 서버들은, 예를 들어, 통신 세션 터널 설정 동안 TLS 엔드포인트 애플리케이션들(예를 들어, 웹 브라우저들) 및 중개자들(예를 들어, SSL/TLS 프록시들)에 의해 사용되어, 통신 세션과 연관된 인증서가 해지되었는지 여부를 결정할 수 있다. 통신 세션과 연관된 인증서가 해지된 것으로 결정되면, 손상될 수 있는 인증서를 사용하는 것과 연관된 위험을 완화하기 위해 통신 세션 터널 설정이 종료, 경고, 모니터링 또는 아니면 처리될 수 있다.
엔드포인트들이 인증서의 해지 상태를 종종 체크하지 않는 경우에, 악성 행위자에 의해 결과적인 TLS 터널이 쉽게 해독될 수 있다. 이러한 위협을 완화시키기 위해, CTI 제공자는 복수의 공인 인증 기관들에 의해 발행된 CRL 데이터를 수집할 수 있고, CRL들을 위협 표시자들(예를 들어, {CA-식별자, 일련 번호} 쌍들)로 변환할 수 있고, 가입자들에게 이용가능한 결과적인 CTI를 제공할 수 있다. 이러한 가입자들은 TIG들 및/또는 TIG들을 서비스하는 보안 정책 관리자들을 포함할 수 있다. 인증서-기반 CTI가 수백만의 표시자들(약 2천만 개의 해지된 인증서들이 존재함)을 포함할 수 있기 때문에, TIG는 네트워크를 보안하기 위한 패킷-필터링 정책을 구성할 때 이 CTI에 대한 시간-효율 및 공간-효율 블룸 필터들 및 연관된 패킷 필터링 규칙들을 사용할 수 있다. 인증서를 포함하는 패킷이 TIG를 통과할 때, TIG는 인증서로부터 발행자 이름 데이터(이는 CA-식별자에 해당할 수 있음) 및 인증서로부터의 일련 번호를 추출할 수 있다. TIG는 인증서의 폐기 상태를 결정하기 위해 적절한 블룸 필터(들)를 통해 {CA-식별자, 일련 번호} 쌍에 기초하여 패킷들을 필터링할 수 있다. 인증서가 해지되면, TIG는 해지된 인증서를 포함하는 것으로 결정된 관련 패킷에 관련 패킷 필터링 규칙을 적용할 수 있다.
제8 예에서, 활발하게 시행되는 정책에 규칙 또는 규칙들을 삽입할 필요가, 예를 들어, 사이버 공격 이벤트 동안 발생할 수 있다. 패킷 필터링 장치, 예를 들어 TIG, 네트워크 방화벽, 라우터 액세스 제어 목록(Access Control List; ACL) 등에 의해 현재 네트워크 패킷 트래픽에 시행(인라인)되고 있는 정책에 패킷 필터링 규칙이 삽입될 수 있다. 성능 및 무결성 이유들로, 정책의 패킷 필터링 규칙들은 최적성, 성능, 및 무결성을 유지하면서 새로운 패킷 필터링 규칙을 삽입하는 것이 시간 및 계산 복잡성에 대한 고가의 동작일 수 있고, 추가적인 메모리의 할당 및/또는 메모리에 저장된 데이터(규칙들)의 메모리 내 공간 재구성을 야기할 수 있는 방식으로 순서화, 정렬, 인덱싱 및/또는 아니면 최적화될 수 있다. 예를 들어, 패킷 필터링 규칙들의 세트는 (서브-선형) 이진 검색을 지원하는 방식으로 소팅 및 인덱싱될 수 있다. 새로운 패킷 필터링 규칙을 세트에 삽입하는 것은 이진 검색을 지원하기 위해 새로운 규칙을 저장하기 위한 메모리 할당 및 세트의 재-인덱싱을 야기할 수 있다. 따라서, 패킷 필터링 서비스의 (일시적) 중단을 야기하지 않고 활성 정책에 새로운 규칙을 삽입하는 것은 비현실적일 수 있고, 이는 패킷 전송 서비스들의 손실을 야기할 수 있고, 및/또는 버퍼 오버플로우들로 인한 패킷 손실들, 및/또는 패킷 필터링 서비스로부터 도출된 애플리케이션 또는 기능(예를 들어, 네트워크 보안)의 손실들을 야기할 수 있다.
데이터 구조 필터링 기술은 패킷 전송 서비스의 중단 및/또는 보안의 손실을 야기할 수 있는 새로운 메모리 할당 및 재구성의 동적 규칙 삽입 문제들을 해결하는 데 사용될 수 있다. 적어도 하나의 빈 공간-효율 블룸 필터는, 정책 생성 동안 또는 보안 정책의 변경에 기초하여, 패킷 필터링 장치에 의한 활성 정책 시행 동안 규칙 삽입을 위해 사용하기 위해 프로비저닝될 수 있다. 이러한 동적으로 채울 수 있는 블룸 필터들은 위양성율(P)을 지정된 값 미만으로 유지하면서 일부 개수(N)의 요소들(예를 들어, 위협 표시자들)을 포함하도록 크기(M)가 조절될 수 있다. 예를 들어, 동적으로 채울 수 있고, 초기에 비어 있는 블룸 필터는 "차단" 액션과 연관되어 프로비저닝될 수 있으며, 최대 100,000개의 표시자들(모든 유형)의 삽입을 허용할 수 있으며, 이 때 위양성율은 10-12이다. 새로운 표시자들이 블룸 필터에 (효율적으로) 삽입될 때, 새로운 표시자를 저장하기 위한 추가 메모리를 할당할 필요가 없을 수도 있고, 세트의 표시자들을 재구성할 필요가 없을 수도 있다. 따라서, 정책에 새로운 규칙들을 추가하는 것은 어떤 새로운 메모리 할당이나 메모리 내의 데이터의 공간적 재구성을 야기하지 않을 수 있고, 따라서 서비스 또는 보안의 손실이 없다. 표시자 삽입의 부작용은 블룸 필터의 위양성율이 증가하는 것이다. 그러나, 100,000개 미만의 표시자들이 동적으로 채울 수 있는 이 블룸 필터에 삽입되면, 위양성율이 필요한 최대값 10-12 미만일 것이다. 100,000개 이상의 표시자들이 삽입된 경우, 위양성율이 최대 위양성율 10-12를 초과할 수 있지만, 이로 인해 서비스 또는 보안이 손실되지 않을 수 있다. 삽입 동작은 세트의 크기가 임계치를 초과하고(예를 들어, 검색의 시간 복잡도가 위양성율(P)의 로그의 크기에 따라 변할 수 있음) 임의의 새로운 메모리 할당도 메모리 내의 데이터의 임의의 공간적 재구성도 야기하지 않을 때 효율적인 것으로 간주되지 않을 수 있다. 따라서, 패킷 필터링 서비스, 이에 따른 패킷 전송 서비스는 활성 정책에 규칙을 삽입함으로써 악영향을 받지 않아야 한다.
동적 규칙 삽입 문제에 대한 또 다른 접근법은 동적으로 채울 수 있는 초기 빈 블룸 필터를 프로비저닝하지 않고 능동적으로 시행되는 정책에 새로운 위협 표시자 및 규칙을 삽입할 수 있도록 하는 것이다. 새로운 규칙은 적절한 공간-효율 블룸 필터에 관련 표시자를 삽입함으로써 활성 정책에 추가되거나 삽입될 수 있다. 추가적인 표시자들이 추가됨에 따라, 연관된 필터의 위양성율은 증가할 것이다. 이러한 블룸 필터는 추가적인 표시자들에 대한 임계 제한을 가질 수 있고, 그 제한은 연관된 애플리케이션에 대해 허용 가능할 것으로 고려되는 임계 위양성율과 연관될 수 있다. 임계 위양성율은 시스템 또는 정책 관리자에 의해 설정될 수 있다.
동적으로 채울 수 있는, 초기에 비어 있는 블룸 필터를 사용하는, 활성 정책 시행 동안 규칙 삽입들에 대한 제1 접근법은, 규칙 삽입들의 수가 정책에서의 규칙들의 수에 비해 상대적으로 클 것으로 예상되는 경우(정책 생성 시), 그리고 위양성율들이 엄격하게 유지되어야 하거나 상대적으로 낮은 허용오차들을 가질 때 더 효과적일 수 있다. 활성 정책 시행 동안 규칙 삽입들에 대한 제2 접근법은 규칙 삽입들의 수가 정책에서의 규칙들의 수에 비해 상대적으로 적을 것으로 예상되는 경우(정책 생성 시), 그리고 위양성율들이 상대적으로 높은 허용오차들을 갖는 경우 더 효과적일 수 있다. 위에서 언급된 바와 같이, 표준 블룸 필터는 세트로부터의 요소 삭제를 지원하지 않는다. 이와 같이, 규칙 삭제들을 필요로 할 수 있는 애플리케이션들에 대해, 표준 블룸 필터들과 유사한 특성들을 갖지만 또한 일부 블룸 필터 변형들, 쿠쿠 필터들 등과 같은 효율적인 요소 삭제들을 지원하는 (확률적) 데이터 구조들이 정책들을 나타내는 데 사용되어야 한다.
블룸 필터들이 또한 일부 CTI 애플리케이션들에 대한 프라이버시를 보장하는 데 사용될 수 있다. 예를 들어, 네트워크 어드레스들의 형태로 위협 행위자들에 대한 위협 인텔리전스/위협 표시자들을 수집하는 제1 조직(Org X)를 고려하기로 한다. 제1 조직(Org X)은 제2 조직(Org Y)에 이러한 표시자들의 세트를 분배하여, 조직(Org Y)이 네트워크 통신 트래픽에서 이러한 표시자들을 검색/검출할 수 있도록 하고자 할 수 있다. 그러나, 일부 경우에, 이러한 표시자들은 매우 민감한 것(예를 들어, 분류 또는 민감한 개인 정보)으로 간주될 수 있다; 따라서 Org X는 표시자들의 프라이버시를 침해할 수 있는 형태로 표시자들을 게시/분배하고 싶지 않을 수 있다. Org X는 일부 경우에, 예를 들어, Org Y는 악의적인 행위자들에 의해 이를 유출하거나 도용하도록 허용하는 경우에 Org Y가 세트의 표시자들을 식별할 수 있기를 원하지 않을 수 있다. 그러나 Org X는 Org Y가 네트워크 통신 트래픽에 이러한 표시자들이 나타나는 시점을 검출할 수 있기를 원한다.
블룸 필터 기술은 이러한 다수의 목적들을 달성하는 데 사용될 수 있다. Org X는 민감한 데이터 블룸 필터(B)에 표시자들을 Insert()할 수 있고, 표시자 인코딩 알고리즘은 민감한 데이터 블룸 필터(B)를 채우는 데 사용될 수 있다. Insert() 함수는 Insert() 함수에 의해 사용되는 인코딩 알고리즘이 알려진 경우라도, 인코딩된 표시자들을 반전(invert)시켜 세트의 표시자들을 결정하기 위해 계산적으로 어려운 방식으로 표시자들의 세트를 인코딩한다. 따라서 Org X는 B에 포함된 표시자들의 프라이버시를 손상시키지 않고 민감한 데이터 블룸 필터(B)를 Org Y에 분배할 수 있다. 또한, 민감한 데이터 블룸 필터(B) 또는 데이터 구조의 비트 벡터가 악의적인 행위자들에 의해 도난되는 경우, 악의적인 행위자들도 마찬가지로 세트의 표시자들을 결정할 방법이 없다. 동시에, Org Y는 민감한 데이터 블룸 필터(B)를 사용하여 트래픽에서 네트워크 어드레스들을 추출한 다음 B에서 멤버십에 대한 네트워크 어드레스들을 테스트함으로써 네트워크 통신 트래픽에서 표시자들의 발생을 검출할 수 있다.
또한, 제1 조직(Org X)은 민감한 데이터 블룸 필터(B)에 대한 멤버십 테스트를 수행할 수 있는 외부 엔티티들을 제어하려고 할 수 있다. 예를 들어, 일부 상황들에서, Org X는 제2 조직(Org Y)이 민감한 데이터 블룸 필터(B)에 대한 멤버십 테스트들을 수행할 수 있기를 원할 수 있지만, Org X는 일부 위협 표시자들의 세트와 연관된 제3 조직(Org Z)이 민감한 데이터 블룸 필터(B)에 포함된 비트 벡터의 사본을 얻은 경우 Org Z가 민감한 데이터 블룸 필터(B)에 있는 해당 표시자들의 멤버십에 대해 테스트할 수 있기를 원하지 않을 수 있다. 즉, Org X는 Org X가 Org Z와 연관된 위협 인텔리전스를 수집했다는 것을 알기를 원하지 않을 수 있다.
민감한 데이터 블룸 필터(B)에 대한 멤버십 테스트 Member()를 수행하기 위해, Member() 함수가 Insert() 함수에 의해 사용된 것과 동일한 인코딩 알고리즘(A)을 사용하여 민감한 데이터 블룸 필터(B)를 표시자들로 채워야 한다. 인코딩 알고리즘(A)은 특정 선택된 해시 함수들과 시뮬레이션된 해시 함수들의 특정 산술 조합들로 구성된다. 따라서, Org X는 비밀리에 및/또는 Org Y와 인코딩 알고리즘(A)을 안전하게 공유할 수 있고, B 자체 대신에 B에 포함된 비트 벡터만을 Org Y에 별도로 분배할 수 있다. Org Y는 민감한 데이터 블룸 필터(B)에 대한 멤버십 테스트들을 수행할 수 있다. Org X는 인코딩 알고리즘(A)을 Org Z와 공유하지 않을 수 있으므로, Org Z가 B에 포함된 비트 벡터의 복사본을 획득하더라도, Org Z는 민감한 데이터 블룸 필터(B)에 대한 멤버십 테스트들을 수행할 수 없다.
본원에 설명된 주제는 하드웨어, 소프트웨어 또는 펌웨어의 임의의 조합을 사용하여 구현될 수 있다. 예를 들어, 본원에 설명된 주제는, 단계들을 수행하도록 기계를 제어하기 위한 기계-실행 명령어들(machine-executed instructions)이 저장된 비-일시적 기계-액세스 가능 및 판독 가능 매체를 사용하여 구현될 수 있다. 본원에 설명된 주제를 구현하기에 적합한 예시적인 기계 판독 가능 매체는 디스크 메모리 장치들, 칩 메모리 장치들, 프로그램가능 로직 장치들, 애플리케이션별 집적 회로들, 및 다운로드 가능한 전기 신호들을 포함한다. 추가로, 본원에 설명된 주제를 구현하는 기계 판독 가능 매체는 단일 장치 또는 컴퓨팅 플랫폼을 사용하여 구현될 수 있거나, 다수의 장치들 또는 컴퓨팅 플랫폼들에 걸쳐 분산될 수 있다. 기타 세부 정보 및 특징은 다음의 섹션들에서 설명될 것이다.
DNS들의 주제로 돌아가서, 월드 와이드 웹(www)와 같은 HTTP 매개 애플리케이션들과 같은 많은 네트워크 애플리케이션들이 인터넷이나 다른 네트워크를 통해 효과적으로 기능하기 위해 DNS가 꼭 필요한 것은 아니다. 본원에 사용되는 바와 같이, DNS는 예를 들어, 본원에서 논의된 DNS들이 인터넷 또는 인트라넷과 연관될 수 있도록 공개 또는 비공개일 수 있다. 그러나, 실제로, 많은 인터넷 네트워크 애플리케이션들이 도메인 네임들을 IP 어드레스들로 빠르고 효율적으로 해결하기 위해 이용 가능한 DNS에 따라 종종 중요하게 달라지기 때문에 인터넷의 DNS가 필요할 수 있다. 따라서, DNS가 이러한 네트워크 애플리케이션들에 쉽게 서비스를 제공할 수 없는 경우, 네트워크 애플리케이션들은 사용할 수 없게 될 수 있다. 전세계 경제와 사회가 이러한 네트워크 애플리케이션들에 따라 결정적으로 달라지게 되기 때문에, 이는 일부 인터넷 애플리케이션들이 효과적으로 기능하지 않을 때 재앙이 될 수 있다.
악의적인 행위자들이 DNS 자체를 성공적으로 공격할 수 있다면 전세계 경제와 사회에 막대한 혼란을 초래할 수 있다. 실제로, 이러한 공격들이 발생했으며, 이러한 공격은 DNS가 이러한 공격들을 방지하기 위한 적절한 보호 수단들을 가지고 있지 않다는 사실을 공개적으로 폭로하였다. DNS에 대한 한 유형의 직접 공격은 다수의 감염된 사물 인터넷(Internet of Things; IoT) 장치들과 같은 큰 봇넷(botnet)을 사용하여 DNS에 등록되지 않을 수 있는 도메인 네임들을 분해하기 위해 많은 DNS 쿼리 요청들을 보낼 수 있다. 이러한 각 요청은 도메인 네임이 DNS에 없으므로 IP 어드레스로 분해될 수 없음을 결정하기 전에 DNS가 전역적으로 분산된 데이터베이스를 통해 검색하게 한다. 충분히 많은 수의 이러한 악의적인 분해할 수 없는 요청들이 충분히 높은 레이트로 전송될 때, DNS는 합법적인 요청들에 대한 충분한 서비스가 부족하거나 서비스를 거부하는 동안, 이러한 악의적인 요청들을 서비스하는 그 리소스들의 대부분을 소비할 수 있으며, 이는 연관된 합법적인 네트워크 애플리케이션들이 이용 불가능하게 할 수 있다. 이 유형의 공격은 DNS에 대한 애플리케이션-레벨의 DDoS 공격이다.
등록되지 않은 도메인 네임들은 인터넷을 통해 민감한 데이터를 훔치기 위해 일부 유출 공격들을 실행하는 데 사용될 수도 있다. 예를 들어, 악의적인 행위자는 개인 기업 네트워크를 뚫고 신용카드 정보의 데이터베이스와 같은 잠재적인 가치를 가진 민감한 정보를 찾고 수집하는 멀웨어를 설치했을 수 있다. 악의적인 행위자는 기업 네트워크 관리에 의해 검출되지 않고 인터넷을 통해 이러한 민감한 정보를 검색/전송 및 수집하기를 원할 수 있다. 즉, 악의적인 행위자가 정보의 유출을 시도할 수 있다. 신용 카드 정보(예를 들어, card1234123412341234)와 같은 민감한 정보를 유출하는 하나의 방법은 위조 도메인 네임(예를 들어, card1234123412341234.www.example.com)으로 민감한 정보를 인코딩하고, 위조 도메인 네임을 DNS 쿼리 요청 메시지에 삽입하고, 위조 DNS 쿼리 요청 메시지를 DNS 서버로 가장하여 외부 호스트에 전송하는 것이며, 여기서 호스트는 악의적인 행위자에 의해 소유/동작되거나 아니면 제어된다. 기업은 종종 외부 목적지에 대한 대부분의 또는 모든 아웃바운드 DNS 쿼리 요청들을 허용하도록 네트워크 방화벽들을 구성하므로, 이러한 유형의 공격이 종종 성공할 수 있다. 위조 도메인 네임이 DNS에 등록된 도메인 네임과 매치할 가능성은 거의 없다. 이와 같이, 등록되지 않은 도메인 네임을 공격 벡터로 사용하여 DNS 공격들을 식별하는 것이 가능할 수 있다.
등록되지 않은 도메인 네임들을 가진 DNS 요청들을 DNS로 보내는 데는 몇 가지 합법적이고 비악의적인 이유들이 있다는 점에 유의한다. 예를 들어, DNS는 특정 유형의 정보에 대한 "조회(lookup)" 서비스(예를 들어, 도메인 네임들을 IP 어드레스들로 변환)로 구축 및 구현되기 때문에, 일부 회사들과 해당 제품들은 자체 목적을 위해 DNS의 조회 서비스를 활용하며, 등록되지 않은 도메인 네임들은 정보를 전송 및 교환하는 데 사용된다. 이러한 회사의 일반적인 접근법은 DNS에 도메인(예를 들어, "leverage-DNS.net")을 등록한 다음, "leverage-DNS.net"에 대한 DNS 권한 네임 서버를 구성 및 운영하는 것이다. 따라서, DNS는 접미사 "leverage-DNS.net"을 사용하여 도메인 네임들을 분해하기 위한 DNS 요청들을 이 권한 네임 서버로 라우팅할 것이다. 예를 들어, 호스팅된 애플리케이션 인스턴스 X는 (등록되지 않은) 도메인 네임 "lookup.5h6di89wp77.leverage-DNS.net"을 포함하는 DNS 요청을 발행할 수 있다. DNS는 이 DNS 요청을 이름 서버 "leverage-DNS.net"으로 라우팅한다. 네임 서버는 예를 들어, 도메인 네임으로부터 라벨 "5h6di89wp77"을 추출하고, 키(key) "5h6di89wp77"로 인덱싱된 레코드를 로컬 데이터베이스에서 검색한 다음, DNS 요청에 대응되는 DNS 응답에서 레코드를 반환하는 로직을 실행할 수 있다. 이 DNS 응답은 애플리케이션 인스턴스 X로 라우팅되어 데이터 교환을 완료할 수 있다.
본 개시의 실질적인 구현들은 등록되지 않은 도메인 네임들을 갖는 DNS 요청들의 이러한 비악의적인 사용을 고려해야 한다. 예를 들어, 합법적인 데이터 교환을 위해 사용되는 권한 네임 서버들의 네임들의 데이터베이스는, 특정 미등록 도메인 네임이 합법적인 데이터 교환 동작의 컴포넌트일 수 있는지를 결정하고자 하는 애플리케이션들에 의해 유지 및 액세스될 수 있다. 실용적인 구현들은 또한 이러한 연관된 시스템들이 악의적인 행위자들에 의해 어떤 방식으로 악용될 수 있는 시나리오들을 고려해야 한다.
다음의 설명에서, DNS 요청들에 포함된 등록되지 않은 도메인 네임들을 공격 벡터로 사용하는 공격으로부터 DNS를 보호하기 위한 일반적인 접근 방식이 제시된다. 시스템은 네트워크의 전략적 위치들에 삽입된 장치들에 배치되거나 네트워크의 하나 이상의 장치들에 의해 실행되도록 구성될 수 있는 DNS 공격 방지 로직을 포함할 수 있다. 예를 들어, DNS 공격 방지 로직은 DNS 쿼리 요청들의 발신자들에 또는 발신자들 근처에 있을 수 있는 네트워크 경로들 내의 (투명 또는 비-투명) 컴퓨팅 장치들(예를 들어, 어플라이언스들)에 설치될 수 있거나, DNS 요청들을 분해하는 DNS 네임 서버들 근처에 설치될 수 있거나, 엔드포인트들 상에 설치될 수 있거나, DNS 세션들을 종료할 수 있는 프록시들 상에 설치될 수 있다. 예를 들어, DoT(RFC 7858) 및 DoH(RFC 8484)와 같은 DNS 세션들을 암호화하는 프로토콜들의 사용은 DNS 공격 방지 로직이 프록시 장치들의 중간자 내부에 설치될 것을 요구할 수 있다. 이러한 어플라이언스들 및 연관된 DNS 공격 방지 로직 각각은 DNS 및 그 리소스들에 대한 액세스를 제어할 수 있는 DNS 게이트키퍼 기능(이하, "DNS-G/K"로 약칭함)을 포함할 수 있다. DNS-G/K는 DNS 공격 방지 로직 및 관련 알고리즘들을 실행할 수 있다. DNS 공격 방지 로직은 (전송 중인 패킷들에 포함된) 전송중인 DNS 쿼리 요청 메시지들을 검출할 수 있고, DNS 공격 방지 로직은 정규화된 이름, 또는 QNAME, 필드에 포함된 도메인 네임을 결정할 수 있다.
DNS 공격 방지 로직은 분석되는 메시지로부터의 도메인 네임이 DNS를 쿼리하지 않고 DNS에 등록되었는지 여부를 결정할 수 있다. DNS 공격 방지 로직이 도메인 네임이 DNS에 등록됨을 나타내는 True 값을 결정하면, DNS 공격 방지 로직은 DNS 쿼리 요청 메시지를 포함하는 패킷을 그 목적지로 포워딩할 수 있다. 즉, DNS 공격 방지 로직은 쿼리 요청 메시지를 권한 네임 서버와 같은 DNS 리소스로 포워딩할 수 있다. 그렇지 않으면, DNS 공격 방지 로직이 도메인 네임이 DNS에 등록되어 있지 않음을 나타내는 False 값을 결정하는 경우, DNS 공격 방지 로직은 DNS 보호 액션을 수행할 수 있다. 예를 들어, DNS 공격 방지 로직은 DNS 리소스들의 낭비 또는 도난 데이터의 전송을 피하기 위해 불량 DNS 쿼리 요청(예를 들어, 잘못 타이핑된 도메인 네임) 또는 위조 DNS 쿼리 요청(이는 유출 시도 또는 DDoS 공격의 일부일 수 있음)을 포함하는 패킷을 드롭할 수 있다. DNS 공격 방지 로직은 ('NXDOMAIN'과 같은) 응답 코드로 대응되는 DNS 쿼리 응답을 생성하고 응답을 다시 불량 또는 위조 DNS 쿼리 요청의 소스로 전송할 수 있거나, 불량 또는 위조 DNS 쿼리 요청을 로그 및 캡처할 수 있고, (i) 네트워크 권한들이 멀웨어 감염에 대해 소스 호스트를 검사할 수 있고, 필요한 경우, 멀웨어를 제거하거나 아니면 호스트가 DNS를 공격하는 것을 방지할 수 있고; 및/또는 (ii) 등록되지 않은 도메인 네임을 보고하여 권한들/분석가들이 도메인 네임을 벡터로 사용하고/하거나 도메인 네임을 위협 인텔리전스로 사용하고/하거나 기계 학습 시스템들에 대한 트레이닝 데이터로 사용하고/하거나 글로벌 DNS/인터넷 보호 시스템들에 대한 입력 등으로 사용하는 잠재적인 공격들을 체크하도록 할 수 있다. 네트워크 보호를 위해 아래에 설명된 여러 요인들에 기초하여, 요청의 출처에 대한 DNS 응답을 생성하지 않거나 전송을 방지하도록 하는 것이 더 보호적일 수 있다.
DNS에서 도메인 네임의 존재 및/또는 등록에 대한 상기 논의된 테스트는 잘못된 요청들을 처리하기 위한 DNS 리소스들의 사용을 최소화하거나 제거할 수 있고, 또한 유리하게는 패킷 송신 시간들 및 네트워크 성능 메트릭들에 비해 가능한 한 순간적인 것에 근접할 수 있다. 즉, 테스트 및 전체 DNS-G/K 함수에 의해 추가되는 레이턴시는 상대적으로 낮거나 구현되지 않을 수 있고, 계산 시간, 공간/메모리, 및 처리 리소스들에 대해 효율적이어야 한다. 위에서 예를 들어, 블룸 필터라고 불리는 확률적 데이터 구조가 이러한 기준을 충족시킬 수 있음을 상기한다. 블룸 필터는 (a) 세트의 요소들을 공간 효율적으로 저장하고, (b) 세트에 요소들을 시간 효율적으로 삽입하고, (c) 요소가 세트의 멤버인지 여부를 시간 효율적으로 결정한다. 블룸 필터들은 P, 즉 위양성율로 파라미터화되며, 이는 사실상 요소가 세트의 멤버가 아닐 때 요소에 대한 세트 멤버십 테스트가 True를 반환할 확률을 포함할 수 있다. 블룸 필터들의 경우, 위음성율은 0이다. 즉, 요소에 대한 세트 멤버십 테스트가 False를 반환하면, 요소가 세트의 멤버가 아닌 것으로 결정될 수 있다.
블룸 필터들은 주어진 도메인 네임이 DNS에 현재 등록될 수 있는 모든 도메인 네임들의 세트의 멤버인지 여부를 효율적으로 결정하기 위해 DNS에서 도메인 네임의 존재/등록을 테스트하는데 사용될 수 있다. 예를 들어, 위양성율 P = 10-6일 때 약 1.8GB 크기의 블룸 필터는 5억 개의 블룸 필터로 인코딩된 도메인 네임들을 저장하기에 충분하다. 이 블룸 필터는 위양성율(P)이 매우 낮은 경우(예를 들어, 10-6 또는 100만 중 하나)에도 5억 개의 요소들을 포함하는 이 블룸 필터가 주어진 도메인 네임이 세트의 멤버인지 여부를 즉시 결정할 수 있다. 공간 및 시간 요구 사항들은 로그 P의 크기에 따라 다르다. 이와 같이, 위양성율 P = 10-6을 백만 배 감소시켜 위양성율 P = 10-12 또는 1조 분의 1로 감소시키면, 공간 및 시간 요구 사항들이 2 배만 증가하게 된다. 비교를 위해, 현재 공개 시점에서, DNS는 5억 또는 5억 개 정도의 등록된 도메인 네임들을 포함한다. 비교를 위해, DNS에 있는 도메인 네임들의 평균 크기가 약 20 바이트이므로 인코딩되지 않은 5억 개의 도메인 네임들을 저장하기 위한 메모리 요구 사항은 약 10GB라고 가정하며; 반면에 P=10-6인 위의 블룸 필터는 약 1.8GB의 메모리를 필요로 한다.
본 명세서의 나머지에 대해, 블룸 필터(이는 이제부터 "B/F"로 약칭될 수 있음) 데이터 구조가 본 개시의 설명에 사용될 것이지만, 이러한 선택은 예시적이며 임의의 방식으로 제한되거나 한정되도록 하려는 것은 아니다. 또한 위에서 논의된 바와 같이, 요소들의 세트를 저장하고, 요소들을 세트에 삽입하고, 세트에서의 요소들의 멤버십을 테스트하기 위한 충분한 그리고 유사한 시간 및 공간 효율들을 갖는 임의의 데이터 구조가 사용될 수 있다. 예를 들어, 쿠쿠 필터는 블룸 필터와 유사한 시간 및 공간 효율들을 가지며, 표준 블룸 필터에는 없는 능력인 세트로부터 요소들을 효율적으로 삭제하거나 제거할 수 있는 능력도 있다. 삭제 능력을 지원하는 일부 블룸 필터 변형들이 개발되었다. 세트로부터 요소들을 효율적으로 삭제하는 능력은 일부 애플리케이션들, 구현들, 및/또는 실시예들에서 유용하다는 것이 입증될 수 있다. 데이터 구조는 세트에 요소를 추가하기 위한 Insert() 함수를 지원할 수 있고, 요소의 세트 멤버십을 테스트하기 위한 Boolean-valued Member() 함수를 지원할 수 있으며, 세트로부터 요소를 제거하기 위한 Delete() 함수를 지원할 수 있다. 이하의 설명은 또한 데이터 구조가 확률적이고 따라서 (0이 아닌) 위양성율(P)과 연관된다고 가정하지만, 다시 한번 이 선택은 예시적이며 어떤 방식으로든 제한적인 것을 의미하는 것은 아니다.
DNS에 등록된 모든 도메인 네임들의 목록은 등록된 도메인 네임들의 목록들 및 하위 목록들(종종 영역 목록들 또는 영역 파일들이라고 함)을 집계하여 생성될 수 있다. 목록들은 다수의 DNS 레지스트리 운영자 조직 또는 관련 대리자로부터, 그 영역 파일들을 발견하거나 게시하는 권한 네임 서버들로부터, 뿐만 아니라 도메인 목록 집계 서비스들로부터 얻을 수 있다. 그러나, 국가 코드 영역들의 일부 등록자들은 일반적으로 그 영역 파일들을 임의의 제3자들에게 게시하지 않는다. 이와 같이, 일부 등록된 국가 코드 도메인들은 웹 크롤링과 같은 다른 방법들에 의해 발견되어 게시되어야 할 수 있다. 이러한 도메인들은 제3자 서비스 제공자들에 의해 발견될 수 있다. 수집 방법들에 관계없이, 등록된 국가 코드 도메인들의 100% 전체 목록들은 이용 가능하지 않을 수 있다. 이러한 불확실성은 DNS 게이트키퍼(DNS-G/K)의 DNS 보호 로직에 반영될 수 있다.
블룸 필터(추가로 및/또는 대안으로 DNS-REG 또는 블룸 필터(DNS-REG)이라고 함)가 이 목록으로부터 생성될 수 있다. 블룸 필터(DNS-REG)는 블룸 필터(DNS-REG)를 생성하고 블룸 필터(DNS-REG) 및 관련된 DNS 보호 로직의 사본들을 하나 이상의 DNS 게이트키퍼들(DNS-G/K)을 포함할 수 있는 가입자들에게 배포할 수 있는 중앙 서비스 또는 서버에 의해 생성될 수 있다. 중앙 집중형 서비스는 블룸 필터(DNS-REG)에 대한 가입 서비스들을 관리하는 관리 서버와 연관될 수 있다. 관리 서버는 복수의 블룸 필터(DNS-REG)를 저장할 수 있고, 특정 블룸 필터(DNS-REG)를 서비스에 등록하는 각 장치에 할당하도록 구성될 수 있다. 특정 블룸 필터(DNS-REG)는 가입 장치의 처리 능력들에 기초하여 관리 서비스에 의해 선택될 수 있다.
블룸 필터(DNS-REG)는 DNS에 등록된 모든 도메인 네임들을 포함할 수 있으며, 논리 함수들과 연관될 수 있다. 논리 함수들은 도메인 네임을 입력으로 수락하는 부울 값 함수(Insert-Into-DNS-REG())를 포함할 수 있고, 도메인 네임을 설정된 DNS-REG에 삽입할 수 있으며, 삽입 동작이 성공적이면 True 값을 반환하고, 상기 동작이 성공적이지 않으면 False 값을 반환할 수 있다. 또한, 논리 함수들은 도메인 네임을 입력으로 받아들이고, 입력 도메인 네임이 블룸 필터(DNS-REG)의 요소 또는 멤버이면 True 값을 반환하고, 입력 도메인 네임이 세트의 요소가 아니면 False 값을 반환하는 부울 값 테스트 함수(Member-of-DNS-REG())를 포함할 수 있다. 다른 논리 함수는 세트 DNS-REG로부터 지정된 요소를 제거할 수 있는 삭제 요소 함수(Delete-from-DNS-REG())일 수 있다. 삭제 요소 함수는 도메인 네임들이 DNS로부터 등록 해제될 때 블룸 필터(DNS-REG)를 업데이트하는 것을 포함하여 일부 애플리케이션들에 유용할 수 있다.
DNS 게이트키퍼(DNS-G/K)는 전송 중인 패킷을 수집/수신하고, 패킷을 패킷들을 버퍼링 및 큐잉(queueing)하고, DNS 요청들을 포함하는 패킷들을 포워딩 또는 드롭하고, DNS 요청들로부터 도메인 네임들(예를 들어, QNAME 필드 값들)을 추출하고, DNS-REG 및 관련 구독들의 로컬 사본을 중앙 집중화된 서비스로 관리하고, Insert-Into-DNS-REG() 및 Member-of-DNS-REG() 및 Delete-From-DNS-REG()의 함수들을 호출하고, False를 반환하는 Member-of-DNS-REG()의 호출들을 로깅(logging) 및 보고하고, 불량 또는 위조 DNS 요청들의 소스들 또는 발신자들에게 대응되는 DNS 응답들을 생성 및 포워딩할지 여부를 결정 등을 하기 위한 로직을 포함할 수 있다. DNS-G/K는 애플리케이션 인스턴스들을 대신하여 DNS 요청들을 관리하는 리눅스(Linux)와 같은 호스트 운영 체제에 포함되거나 임베디드될 수 있다. 예를 들어, DNS-G/K 로직은 DNS 요청들을 발생/소스/발행하는 웹 브라우저들에 포함될 수 있거나, DNS 권한 네임 서버들 및 DNS 재귀 리졸버(resolver)들 모두에서 사용되는 알려진 DNS 서버 소프트웨어인 BIND와 같은 DNS 스택들에 임베디드될 수 있다. DNS-G/K는 블룸 필터(DNS-REG)를 관리하고 블룸 필터(DNS-REG)를 통해 DNS 요청들을 필터링하는 마이크로 서비스로 구현될 수 있다.
이러한 DNS 게이트키퍼들(DNS-G/K)은 인터넷을 통해 광범위하게 분산될 수 있고, 출발지 엔드포인트들 및 목적지 엔드포인트들의 경로 터미널들을 포함하는 DNS 요청들의 네트워크 경로들에 삽입될 수 있는 엔드포인트 요소들을 포함하는 어플라이언스들 및 호스트 컴퓨터들에 구현될 수 있다. 이러한 어플라이언스들 및 호스트들은 DNS 프록시들, DNS 서버들, DNS 리졸버들, DNS 네임 서버들, 네트워크 방화벽들, 네트워크 프록시들, 네트워크 게이트웨이들, 네트워크 어플라이언스들, 라우터들, 스위치들, 엔드포인트들 등을 포함할 수 있다. DNS-G/K는 또한 DNS 등록자 회사들, DNS 인프라 및 호스팅 서비스 공급자들, 그리고 다수의 DNS 등록자 회사들 또는 많은 DNS 요청들이 그 네트워크들에 들어오고 나갈 수 있는 기타 조직들에 대해 DNS 등록 서비스들 또는 DNS 네임 서버들을 운영할 수 있는 기타 조직들에 의해 동작되는 인터넷 결합 네트워크들에 배치될 수 있다.
DNS가 새로운 도메인 네임들을 계속 등록하고 있을 수 있기 때문에, 블룸 필터(DNS-REG)는 주기적으로(예를 들어, 시간마다, 매일 또는 매주) 업데이트될 수 있다. 블룸 필터(DNS-REG)는 중앙 집중형 서비스 또는 관리 서버에 의해 업데이트될 수 있고, 푸시(push) 또는 풀(pull) 메커니즘들을 통해 DNS-G/K 가입자들에게 분산될 수 있다. 대안으로 또는 동시에, 중앙 집중형 서비스 또는 관리 서버는 등록자 조직들 또는 그 대리인들로부터, 제3자 도메인 목록 집계 조직들로부터, 그들의 구역 파일들을 발견하는 권한 네임 서버들로부터, 및/또는 ICANN과 같은 DNS 권한 기관들 등으로부터 새롭게 등록된 도메인 네임들을 수집할 수 있다. 새롭게 수집된 도메인 네임들은 DNS-G/K 가입자들에게 피드로 제공될 수 있거나, 또는 업데이트 패키지의 일부로서 DNS-G/K 가입자들에게 제공될 수 있다. DNS-G/K 가입자들이 이러한 피드를 수신함에 따라, 가입자들은 Insert-Into-DNS-REG() 함수를 호출하거나 업데이트된 DNS-REG를 생성함으로써, 블룸 필터(DNS-REG)의 로컬 사본들에 도메인 네임들을 삽입할 수 있다. 마찬가지로, 중앙 집중형 서비스 또는 관리 서버는 새롭게 등록 해제된 도메인 네임들을 수집할 수 있고, 새롭게/최근에 등록 해제된 도메인 네임들을 포함하는 피드를 DNS-G/K 가입자들에게 제공할 수 있다. DNS-G/K 가입자들이 이 피드를 수신함에 따라, DNS-G/K 가입자들은 Delete-From-DNS-REG() 함수를 호출함으로써 블룸 필터(DNS-REG)의 로컬 사본들로부터 도메인 네임들을 삭제할 수 있다.
DNS 게이트키퍼(DNS-G/K)는 위양성들을 처리하기 위한 로직을 포함할 수 있고, 블룸 필터(DNS-REG)와 연관된, 아래에서 더 상세히 설명되는, 래그(lag) 이슈들을 처리하기 위한 로직을 포함할 수 있다. 이러한 로직은 DNS 쿼리 요청 메시지를 포함하는 패킷을 그 목적지로 포워딩하기 위한 로직 또는 상기의 DNS 보호 액션을 실행하기 위한 로직에 대한 대안들에서 사용될 수 있다.
위양성들과 관련하여, 위에서 언급된 바와 같이, 블룸 필터는 위양성율(P)에 의해 파라미터화될 수 있는 확률적 데이터 구조이다. 요소가 블룸 필터에 포함되는지를 결정하기 위한 멤버십 테스트와 연관되는 위양성(P)의 확률은 멤버십 테스트가 True 값을 잘못 반환할 수 있는 가능성이다. 블룸 필터는 블룸 필터(DNS-REG)의 일 인스턴스(instance)일 수 있다. 로직은 테스트되고 있는 패킷의 도메인 네임이 DNS에 등록되어 있는지를 결정할 수 있다. 시스템은 위양성(P)의 확률을 갖는, 블룸 필터(DNS-REG)에 있는 주어진 도메인 네임에 대한 멤버십 테스트를 수행할 수 있다. 도메인 네임이 블룸 필터(DNS-REG)에 포함되어 있지 않은 경우 멤버십 테스트는 True 값을 잘못 반환할 수 있다. DNS 쿼리 요청 메시지를 포함하는 패킷을 그 의도된 목적지를 향해 포워딩하기 위한 로직이 실행될 수 있으며, 이는 불량 또는 위조 DNS 요청을 그 목적지를 향해 포워딩할 수 있다. 즉, 불량 또는 위조 DNS 요청과 연관된 잠재적인 공격은 방지되거나 완화되지 않을 수 있다.
불량 또는 위조 DNS 요청이 DNS에 대한 DDoS 공격의 일부인 경우, 위양성 테스트 결과의 부작용은 작을 수 있다. 이는 위양성율(P)에 대해 합리적인 값을 가정하면, 대부분의 위조 DNS 요청들은 검출될 가능성이 높기 때문이다. 대부분의 위조 DNS 요청들이 검출될 때, 이러한 검출된 위조 요청들은 위양성들을 야기하지 않으므로, DNS 보호 액션을 실행하기 위한 로직에서와 같이 차단/드롭 또는 아니면 처리될 수 있다. 따라서, DDoS 공격이 성공하도록 하기 위해서는 다수의 위조 요청들이 허용되어야 하므로, 위양성들로 인해 DDoS 공격이 성공할 가능성은 낮다. DNS 요청이 예를 들어 데이터 유출 동작의 일부로서 DNS 터널링 공격의 일부인 경우에, DNS 보호 액션을 실행하기 위해 로직에서 차단/드롭되는 다른 정보에 대한 유출된 정보의 민감도 및/또는 유출된 정보의 의존도에 따라 위양성의 부작용이 클 수 있다. 예를 들어, 위양성이 도난 루트 패스워드(stolen root password)를 포함하는 경우, 악영향이 클 수 있다. 반대로, 위양성이 큰 파일의 작은 부분을 포함하는 경우, 그 값은 파일의 나머지의 문맥에 따라 달라지기 때문에, 유출된 정보는 거의 또는 전혀 값을 가질 수 없고, 이는 연관된 정보의 나머지가 DNS 보호 액션을 실행하기 위해 로직에 의해 차단/드롭될 수 있는, 진양성들(true positives)인 것으로 결정된, 개별 DNS 요청들에 포함되기 때문에 성공적으로 유출되지 않을 수 있다.
위양성율(P)은 실제로 위양성이 발생할 가능성이 낮도록 선택될 수 있다. 예를 들어, 위양성율은 위양성율 P = 10-12 이하가 되도록 선택될 수 있다. 위양성율(P)이 작을수록 블룸 필터(DNS-REG)를 저장하는 데 더 많은 메모리가 필요하다는 것이 트레이드오프(tradeoff)다. 메모리 스토리지는 위양성율(P)에 실질적인 제한을 부과한다. 그러나, 다른 DNS-G/K 가입자들은 위양성율(P)에 대한 서로 다른 요구 사항들과 제약 조건들을 가질 수 있으며, 블룸 필터(DNS-REG)의 메모리/스토리지에 대한 다른 요구 사항들과 제약 조건들을 가질 수 있다. 따라서, 블룸 필터(DNS-REG)를 제공하는 중앙 집중형 서비스 또는 관리 서버는 또한 서로 다른 위양성율들(P) 및 이에 따라 블룸 필터(DNS-REG)의 서로 다른 인-메모리(in-memory) 크기들로 파라미터화될 수 있는 서로 다른 버전들의 블룸 필터(DNS-REG)를 제공할 수 있다. 중앙 집중형 서비스 또는 관리 서버는 각 가입자가, 선택 기준들이 위양성율(P) 및 관련 메모리 크기의 조합인, 가입자들이 액세스하거나 전달하기를 원하는 블룸 필터(DNS-REG)의 버전을 선택하도록 허용할 수 있다.
관리 서버에 의해 제공될 수 있는 중앙 집중형 서비스는 컴퓨팅 장치의 처리 능력에 기초하여 특정 블룸 필터(DNS-REG)를 선택 또는 할당할 수 있다. 관리 서버는 제3자 장치로부터, 예컨대 제조사 웹사이트 또는 판매 웹사이트로부터의 제품 데이터 시트로부터 메모리 용량 정보를 검색하도록 구성될 수 있다. 관리 서버는 컴퓨팅 장치의 메모리 크기, 컴퓨팅 장치와 연관된 보안 정책에 대한 위양성율(P) 제한, 또는 컴퓨팅 장치의 래그(lag) 제한들에 기초하여 컴퓨팅 장치에 할당할 특정 블룸 필터(DNS-REG)를 결정할 수 있다.
관리 서버는 또한 복수의 상이한 DNS-G/K 가입자들로부터 DNS 요청 처리에 관한 정보를 수신할 수 있다. 이 정보는 특정 로컬 블룸 필터(DNS-REG)에서 발견되지 않았지만, 요청이 계속되도록 허용되고 DNS로부터의 응답에 기초하여 DNS-G/K에 의해 유효한 것으로 확인되었을 때 유효한 도메인 네임을 포함하는 것으로 확인된 모니터링되는 DNS 쿼리 요청들의 도메인 네임들을 포함할 수 있다. 정보는 또한 특정 로컬 블룸 필터(DNS-REG)를 테스트하거나 의도된 목적지로 계속하도록 허용된 DNS 쿼리 요청에 대한 DNS 응답을 모니터링함으로써 위조된 것으로 결정되는 DNS 요청들에 관한 로그된 데이터를 포함할 수 있다. 정보는 적어도 소스, 의도된 목적지, 및 이러한 DNS 쿼리 요청들의 다른 패킷 정보를 포함할 수 있다.
DNS-G/K의 DNS 보호 로직은 다른 파라미터 값들과 함께 위양성율(P)의 값을 반영할 수도 있다. 다른 파라미터 값들은 DNS 요청들을 처리하는 방법을 결정할 때, DNS 요청 레이트 값들(아래에서 설명됨)을 포함할 수 있다. 예를 들어, Member-of-DNS-REG()의 True 인스턴스의 처리는 로컬 블룸 필터(DNS-REG)와 연관된 위양성율(P)의 값에 따라 상이할 수 있다. 예를 들어, 상대적으로 높은 위양성율(P)을 갖는 로컬 블룸 필터(DNS-REG)를 갖는 제1 DNS-G/K는 멤버십 테스트의 True 결과가 더 낮은 값 P를 갖는 로컬 DNS-REG를 갖는 제2 DNS-G/K보다 위양성일 수 있다고 결론지을 가능성이 더 높을 수 있다. 따라서, 제1 DNS-G/K는 관련 DNS 요청을 제2 DNS-G/K와 다르게 처리할 수 있다. 예를 들어, 제1 DNS-G/K는 DNS 요청 레이트 값 및 다른 결정된 공격 상태 값들과 같은 다른 파라미터 값들과 조합하여, 위양성의 비교적 높은 가능성 때문에 어쨌든 DNS 요청을 드롭하기로 결정할 수 있는 반면, 제2 DNS-G/K는 DNS를 향해 요청을 포워딩할 수 있다.
위에서 언급된 래그(lag)와 관련하여, DNS-REG의 인스턴스가 실제 DNS와 동일한 세트의 등록된 도메인 네임들을 포함하지 않을 때 래그가 발생할 수 있다. 예를 들어, 도메인 네임 XYZ가 최근에 DNS에 등록되었을 수 있지만, 도메인 네임 XYZ는 블룸 필터(DNS-REG)를 구현하는 분산형 시스템들에 대한 업데이트로서 중앙 집중형 서비스 또는 관리 서버에 의해 분산되지 않았을 수 있다. 즉, 특정 시점에서, DNS-G/K는 새로 이용가능한 버전의 블룸 필터(DNS-REG)를 다운로드하지 않았을 수 있다. 이러한 유형의 래그를 동기화 래그(synchronization lag)라고 할 수 있다. 다른 예는 국가 코드 도메인들에서 발생할 수 있는 래그 유형이다. 위에서 논의된 바와 같이, 국가 코드 영역들에 대한 등록자들은 일반적으로 자신의 영역 파일들을 임의의 제3자들에게 발견되지 않기 때문에, 웹 크롤링과 같은 비결정적 방법들은 국가 코드 도메인들의 목록을 컴파일하는데 사용될 수 있으며, 그 결과는 등록된 국가 코드 도메인들의 100% 완전한 목록들이 특정 장치 또는 시스템에서 이용 가능하지 않을 수 있다. 이러한 유형의 래그는 등록 래그 또는 국가 코드 래그로 지칭될 수 있다.
이러한 유형들의 래그에 기초하여, Member-of-DNS-REG() 테스트의 소정의 실행된 인스턴스에 대해, 테스트되고 있는 패킷의 도메인 네임 XYZ가 DNS-REG에 있는지를 결정하고, 도메인 네임 XYZ가 DNS에 등록되지 않았다는 결정을 나타내는 False를 반환하는 것이 가능할 수도 있다. 그 결정에 기초하여, DNS 보호 액션을 실행하기 위한 로직이 실행될 수 있고, 그 로직은 테스트된 DNS 요청을 드롭 또는 차단하도록 구성될 수 있다. DNS-REG의 마지막 업데이트 후에 도메인 네임 XYZ가 등록되는 경우, 이 테스트는 최근에 등록된 도메인 네임 XYZ의 유효성을 반영하지 않는다. DNS-REG를 업데이트 시 지연으로 인해, 유효한 DNS 요청의 드롭은 "래그-드롭(lag-drop)"으로 지칭될 수 있다.
래그-드롭의 악영향은 연관된 DNS 요청을 발행한 행위자의 의도에 따라 달라질 수 있다. 예를 들어, 합법적이거나 악의적이지 않은 행위자가 래그로 인해 DNS-G/K에 의해 드롭되는 유효한 DNS 요청을 발행하는 경우, 래그-드롭의 악영향은 합법적인 비즈니스 거래가 완료되지 않을 수 있기 때문에 중요한 것으로 간주될 수 있다. 이 예는 상기 DNS 보호 액션을 실행하기 위한 로직에서, DNS 요청을 드롭하거나 차단하는 것이 바람직하지 않을 수 있음을 나타낸다. 반대로, 최근에 등록된 도메인 네임들의 해결을 위한 일부 DNS 요청들은 악의적인 활동과 연관될 수 있으며, 이 경우 래그-드롭의 효과는 불리하지 않거나, 바람직하거나, 유익하다고 간주될 수 있다. 악의적인 활동과 연관된 이러한 요청들에 대해, 로직은 DNS 요청을 드롭 또는 차단하기 위해 DNS 보호 액션을 실행하는 것이 바람직하다. 상기에 설명된 바와 같이, 일부 구현들에서, Member-of-DNS-REG()에 대한 False 반환 값이 래그로 인한 것인지 또는 입력 도메인 네임이 DNS에 등록되도록 의도되지 않은 위조 네임인 것으로 인한 것인지를 결정하는 것은 실용적이지 않을 수 있다. 실제로, False 반환 값이 래그 문제보다 위조 DNS 네임으로 인한 것일 가능성이 더 높다; 따라서, DNS 보호 액션을 실행하기 위한 로직에서, DNS 요청을 드롭하거나 차단하는 것은 DNS 요청을 포워딩하거나 허용하는 것이 바람직할 수 있다.
DNS 보호 액션을 실행하기 위해 로직에서 드롭하거나 차단하는 것에 대한 하나의 대안은 DNS 요청을 포워딩하거나 허용하지만, DNS 요청을 로그하고 DNS에 의해 반환되는 대응되는 DNS 응답에 대한 후속 네트워크 트래픽을 모니터링하는 것일 수 있다. 연관된 도메인 네임이 DNS에 등록되지 않은 것으로 결정된 경우, 대응되는 DNS 응답은 NXDOMAIN의 응답 코드를 포함할 수 있다. 또한, 대응되는 DNS 응답이 없는 경우, 로직은 해당 요청이 공격과 연관된 불량 또는 위조 DNS 요청이라고 결정할 수 있다. 그런 다음, 사이버 보안 애플리케이션은 로그된 DNS 요청을 분석하여, 예를 들어, DNS 요청이 DNS 터널링 공격 또는 유출 공격과 연관될 수 있는지를 결정할 수 있다. 로직은 요청이 적법한 요청과 연관될 확률을 결정할 수 있고, 요청이 합법적일 확률이 임계치를 초과한다는 결정에 기초하여, 로직은 합법적인 것으로 결정된 요청이 해결을 위해 DNS로 진행하도록 허용할 수 있다.
대응되는 DNS 응답이 도메인 네임을 분해하는 IP 어드레스를 포함하거나, 또는 로직이 도메인 네임이 DNS에 등록된다고 결정하는 경우, Member-of-DNS-REG()의 False 반환 값은 래그와 연관되는 것으로 결정될 수 있다. 예를 들어, DNS 요청이 국가 코드 최상위 도메인(country code top-level domain; ccTLD)인 접미사를 갖는 도메인 네임을 포함하는 경우, 로직은 DNS 요청이 모든 국가 코드 도메인들을 수집하는 것에 대한 이슈들로 인한 래그 이슈와 연관된다고 결정할 수 있다. 이와 같이, 로직은 DNS 요청이 비악의적일 수 있는 통신들과 연관될 가능성이 있다고 결정할 수 있다. DNS 요청이 국가 코드(TLD)를 갖는 도메인 네임을 포함하지 않는 경우, 로직은 최근에 등록된 도메인 네임들을 포함하는 DNS 요청들에 대해 위에서 논의된 바와 같이, 임의의 래그 이슈가 동기화 래그 시나리오일 수 있다고 결정할 수 있다. 로직은 DNS 요청이 악성적인 활동과 연관될 수 있다고 결정할 수 있기 때문에, 로직은 DNS 요청과 연관된 후속 활동 및/또는 요청 응답에 대해 사이버 보안 애플리케이션으로 DNS 요청을 모니터링할 수 있다. 그 모니터링은 로직이 DNS 응답에 의해 제공되는 IP 어드레스와 연관되는 HTTP(S) 세션과 같은 후속 활동, 및 임의의 연관된 행위자(들)가 이 악의적일 수 있는지를 결정하는 것을 허용할 수 있다. 요청 내의 도메인 네임이 유효하다는 결정에 기초하여, DNS-G/K는 등록된 도메인 네임을 블룸 필터(DNS-REG)의 로컬 사본에 삽입할 수 있고, 등록된 도메인 네임으로 결정된 도메인 네임을 가입자들에게 블룸 필터(DNS-REG)의 사본들을 분배하는 중앙 집중형 서비스 또는 관리 서버에 전달할 수 있다.
DNS에 대한 DDoS 공격과 연관될 수 있는 불량 또는 위조 DNS 요청이 검출될 때, 로직은 공격을 방지 또는 완화시키기 위해 요청을 드롭 또는 차단하기 위해 DNS 보호 액션을 실행할 수 있다. 상기에 설명된 바와 같이, 불량 또는 위조 DNS 요청이 DDoS 공격 또는 다른 유형의 공격과 연관되는지를 결정하는 것은 실용적이지 않을 수 있다. 그러나, 로직은, 연관된 시스템이 DDoS 공격의 특징인, 높은 레이트의 위조 DNS 요청들을 보고 있을 때를 결정함으로써 불량 또는 위조 DNS 요청이 DDoS 공격과 연관되는지 여부를 추정할 수 있다. 관찰된 유효하지 않은 DNS 요청들의 현재 레이트가 정상보다 높을 때 유효하지 않은 DNS 요청이 관찰되면, 로직은 유효하지 않은 요청들의 높은 레이트가 DDoS 공격이 발생하고 있음을 나타낸다고 결정할 수 있다. 유효하지 않은 DNS 요청들의 레이트는 임계치와 비교될 수 있다. 로직이 DDoS 공격이 발생할 가능성이 있다고 결정하는 경우, 로직은 DNS 요청을 드롭 또는 차단하기 위해 DNS 보호 액션 로직을 실행할 수 있다. 로직은 유효하지 않은 DNS 요청들의 레이트가 임계치와 비교될 수 있을 때 DNS 요청을 드롭 또는 차단하기 위해 DNS 보호 액션 로직을 실행할 수 있다.
레이트 임계치들은 각 장치에 대해 설정될 수 있다. 유효하지 않은 DNS 요청들의 임계 레이트는 정상 동작의 기간 동안(예를 들어, 발생한 활성 DDoS 공격들이 없을 때) 유효하지 않은 DNS 요청들의 초기 레이트에 기초하여 결정될 수 있다. 예를 들어, 로직은 일정 기간 동안 유효하지 않은 DNS 요청들의 레이트를 모니터링할 수 있다. 네트워크 트래픽은 시간 및 요일에 따라 달라질 수 있으므로, 유효하지 않은 DNS 요청들의 레이트는 특정 시간 또는 요일로 조정될 수 있다. 예를 들어, 엔터프라이즈 네트워크의 경우, 불량 DNS 요청들의 예상된 레이트는 주말 저녁보다 근무일 점심 시간 동안 더 높을 수 있다. 홈 네트워크의 경우, 유효하지 않거나 위조 DNS 요청들의 예상된 레이트는 근무일 점심 시간 동안보다 주말 저녁 시간 동안 더 높을 수 있다. 각각의 특정 게이트키퍼 장치는 장치와 연관된 위치 및 네트워크를 포함하는 복수의 팩터들에 기초하여 상이한 레이트들을 가질 수 있다. 예를 들어, 홈 네트워크 기반 장치는 기업 네트워크에 비해 실질적으로 더 낮은 전체 트래픽을 가질 수 있다. 각각의 특정 게이트키퍼 장치는 유효하지 않은 또는 위조 DNS 요청들의 예상된 레이트를 조정하기 위해 시간에 따른 레이트들을 모니터링하도록 구성될 수 있다.
레이트 임계치들은 블룸 필터(DNS-REG)의 위양성율(P)에 대해 설정될 수 있다. 즉, 블룸 필터(DNS-REG)의 위양성율(P)과 관련하여, 임계치는 더 가능성이 높은 위조 요청들이 블룸 필터(DNS-REG)와의 가능한 등록 래그들을 결정하기 위한 응답들을 모니터링하기 위해 의도된 목적지로 전달되도록 설정될 수 있다. 더 낮은 위양성율이 존재할 때, DNS-G/K는 더 낮은 레이트 임계치를 설정할 수 있고, 이는 더 가능성이 높은 위조 DNS 쿼리 요청들이 그들의 의도된 목적지들로 포워딩되도록 허용할 수 있다. 위양성율이 더 높은 경우, DNS-G/K는 더 높은 레이트 임계치를 설정할 수 있고, 이는 더 적은 가능한 위조 DNS 쿼리 요청들이 그들의 의도된 목적지들로 포워딩되도록 허용할 수 있다.
연관된 DNS 응답을 생성하는 것은 임의의 중간 DNS 서버들에 DNS 캐시들을 충전함으로써 DDoS 공격을 악화시킬 수 있다. 로직이 DDoS 공격이 발생하고 있을 가능성이 있다고 결정할 때, 로직은 연관된 DNS 응답(예를 들어, RCODE:3 = NXDOMAIN을 갖는 응답)을 생성하지 않고 DNS 요청을 드롭하거나 차단할 수 있다. 대신에, 관찰된 위조 DNS 요청들의 현재 레이트가 정상보다 높지 않은 동안, 요청이 위조 DNS 요청이라고 로직이 결정하면, 로직은 DNS 요청을 포워딩하거나 허용하고, 또한 연관된 이벤트를 로그, 모니터링 및/또는 사이버 분석하여 공격의 가능성, 공격의 심각도 및 잠재적인 개선 액션을 결정하기 위해 DNS 보호 액션을 실행할 수 있다. DDoS 공격이 발생하고 있는지 여부를 결정하기 위해, 로직은 불량 DNS 요청 쿼리들의 현재 레이트가 임계치를 충족하는지 여부를 결정할 수 있다.
위조 DNS 요청들의 정상 레이트를 추정하는 하나의 방법은 위조 DNS 요청의 각각의 관측 사이의 시간 간격을 측정한 다음, 효율적인 알고리즘을 사용하여 평균 간격(및 그에 따른 정상 레이트)을 추정하는 것이다. DDoS 공격이 발생하지 않는 기간 동안 위조 DNS 요청들 사이의 관찰된 평균 간격은 DDoS 공격이 발생하는 기간 동안 위조 DNS 요청들 사이의 관찰된 평균 간격보다 클 수 있다. 로직은 관측값들 사이의 평균 시간을 모니터링하고 연속적으로 추정할 수 있거나, 또는 역으로 관측값들의 레이트를 모니터링하고 연속적으로 추정할 수 있다. 이러한 평균 간격은 지수적 이동 평균 가중(Exponential Weighted Moving Average; EWMA)법 또는 지수 평활(Exponential Smoothing)법에 기초하여 추정될 수 있다. 지수 평활법은 시간 및 공간 효율적인데, 이는 각 관측 후 추정치에 대한 각 업데이트가 일정한 시간 계산(일반적으로 두 번의 곱셈과 한번의 덧셈)만 필요하며, 일반적으로 언제든지 세 개의 값들만 저장하면 되기 때문이다.
위조 DNS 요청들의 평균 레이트의 추정은 기준선을 확립하도록 결정될 수 있다. 위조 DNS 요청들의 평균 레이트의 추정이 결정되면, 위조 DNS 요청들의 추정된 평균 레이트의 변화가 효율적으로 결정될 수 있다. 변화는, 예를 들어, 위조 DNS 요청들의 평균 레이트의 추정치들의 시퀀스에 적용된 지수 평균화 계산을 사용하여 추정될 수 있다. DDoS 공격이 없는 경우, 위조 DNS 요청들의 추정 평균 레이트의 계산된 변화는 0에 가까워야 한다. 시스템이 DDoS 공격이 없다고 결정할 때, 로직은 DNS 보호 액션을 실행하여 위조 DNS 요청들을 포워딩하거나 허용하는 한편, 위조 DNS 요청 및 대응되는 DNS 응답(있는 경우)에 대한 로그, 모니터링 또는 분석 기능을 또한 수행할 수 있다. DDoS 공격이 런칭될 때, 추정된 평균 레이트의 계산된 변화는 0이 아니고 양수여야 한다. DDoS 공격이 런칭되는 것으로 결정될 때, DNS 보호 액션을 실행하기 위한 로직은 위조 DNS 요청들을 드롭 또는 차단할 수 있다. 또한, 위조 DNS 요청들의 추정된 평균 레이트의 계산된 변화가 비교적 크고 양수(증가)가 되면, DNS 보호 액션을 실행하기 위한 로직은 NXDOMAIN 응답 코드를 갖는 대응되는 DNS 응답을 생성하지 않고 위조 DNS 요청을 드롭하도록 수정될 수 있다.
이러한 대안적인 보호 액션은, DDoS 공격 동안 이러한 요청들을 포함하는, 위조 DNS 요청들을 생성할 수 있는 장치들이 일반적으로 DNS 응답을 수신하는 것에 대해 관심을 갖지 않기 때문에 구현될 수 있다. 요청들을 생성하는 장치들은 응답들에 대해 관심을 갖지 않기 때문에, DNS 응답들을 생성하기 위해 DNS-G/K에 의해 소비되는 계산 리소스들이 낭비될 수 있고, DNS-G/K에 대한 서비스 거부 공격의 효율성을 증가시킬 수 있다. 이러한 DDoS 공격 동안 NXDOMAIN 응답 코드들을 갖는 DNS 응답들이 생성될 수 있을 때, 중간 DNS 서버들에서의 DNS 캐시들은 위조 DNS 요청들에 대한 NXDOMAIN 응답들로 채워질 수 있다. 이 경우, 합법적인 DNS 요청들에 대한 분해된 IP 어드레스들을 포함할 수 있는 DNS 응답들은 중간 DNS 서버들에 캐싱되지 않을 수 있고, 이는 합법적인 DNS 요청들을 서비스하기 위한 DNS 리소스 소비를 증가시키게 하고, 이는 DDoS 공격을 더욱 악화시킬 수 있다. 이 시나리오는 DNS 캐시들에 대한 서비스 거부 공격 및 DNS에 대한 공격으로 확장되는 것으로 간주될 수 있다.
DDoS 공격이 가라앉을 때, 로직은 위조 DNS 요청들의 추정된 평균 레이트의 변화를 검출할 수 있다. 위조 DNS 요청들의 추정된 평균 레이트의 변화는 공격이 가라앉기 시작함에 따라 음수가 되는 것으로 결정될 수 있다. 공격이 가라앉기 시작했다는 결정에 기초하여, 로직은 위조 DNS 요청들이 검출되고 드롭될 때 NXDOMAIN 응답 코드들을 갖는 DNS 응답들을 생성하기 위해 DNS 보호 액션을 실행하기 시작할 수 있다.
공격들이 현재 발생하는 것으로 결정되지 않는 시나리오들에서, 위조 DNS 요청 레이트들을 측정하는 초기 기간들 동안, 및/또는 DNS-G/K가 상대적으로 적은 수의 위조 DNS 요청들만을 (예를 들어, 잘 보호된 사설 네트워크의 에지에서) 관측하도록 위치될 때, 위조 요청들의 샘플 크기는 정확한 추정치들을 계산하기에 너무 작을 수 있다. 이러한 시나리오들에서, 상기 더 상세히 설명된 바와 같이, 모든 DNS 요청들과 연관된 레이트들을 또한 추정하는 것이 유용할 수 있다. 시스템은 위조 및 합법적인 DNS 요청들 모두와 연관된 요청 레이트들을 결정할 수 있고, 모든 DNS 요청들의 요청 레이트들에 대한 위조 DNS 요청들의 요청 레이트들의 비율들을 비교할 수 있다. 모든 요청들에 대한 위조 요청들의 비율이 상당히 변할 때, 로직은 공격이 발생하고 있다고 결정할 수 있다. 모든 요청들에 대한 위조 요청들의 비율은 시스템이 가능한 위조 요청들에 대한 DNS 응답을 생성하고 전송해야 하는지를 결정하는 데 사용될 수 있다.
도 1은 보안 정책 관리자(security policy manager; SPM)(120)에 의해 제공된 CTI-유도 정책들을 시행함으로써 네트워크들(112 및 114)을 보안하기 위한 위협 인텔리전스 게이트웨이들(TIG들)(200 및 250)과 같은 패킷 필터링 장치들을 포함할 수 있는 대표적인 환경(100)을 도시한다. TIG들(200 및 250)은 네트워크들(112 및 114)을 네트워크(110)와 연결하는 네트워크 액세스 링크들(106)에 인라인으로 삽입될 수 있다. 네트워크(110)는 네트워크들(112, 114, 116 및 118) 사이에 상호접속 서비스들을 제공하고 네트워크들에 결합된 IP-어드레스 가능한 호스트들(120 및 130 내지 137) 사이의 통신들을 가능하게 할 수 있다. TIG들(200 및 250)은 물리적 또는 논리적일 수 있고, 네트워크들의 연결들 내(intra-connections) 및 연결들 간(inter-connections)은 임의의 조합으로 유선, 무선, 물리적, 가상, 및/또는 정의된 논리적/소프트웨어일 수 있다.
네트워크(112)는 CTI-유도 정책들 및 본 개시에 의해 달성되는 공간, 시간 및 리소스 효율들을 요구하는 매우 큰 정책들과 같은 본 개시의 양태들을 구현하는 TIG(200)를 사용하여 그 네트워크화된 기업 자산들을 보호하는 예시적인 기업 네트워크일 수 있다. TIG(200)는 많은 CTI 제공자들에 의해 공급되고 표시자들, 표시자 유형들, 공격 유형들, 위험 값들, 표시자 충실도들 등의 범위에 걸쳐 있는 CTI로부터 도출된 정책들에 대해 SPM(120)에 가입될 수 있고, 그 결과, 그들의 관련된 위협 표시자들에 의해 특징지어질 수 있는 수천만 또는 수억 개의 패킷 필터링 규칙들로 구성된 정책들을 생성한다.
네트워크(114)는, DNS 도메인 네임 레지스트리 운영자들, 권한 네임 서버 제공자들, 대형 글로벌 기업들, 콘텐트 전달 네트워크 제공자들, ISP들 등과 같은 고성능 DNS 서비스들을 중요시하는 조직들을 대신하여 종종 대량의 DNS 트래픽을 처리하는, 예를 들어 호스트들(132 및 133)과 같은 DNS 서버들 및 프록시들을 포함하는 네트워크화된 기업 자산들을 갖는, DNS 인프라 및 관리 서비스 제공자 조직에 의해 동작되는 예시적인 네트워크일 수 있다. 네트워크(114)는 TIG(250)에 의해 보호되며, 이는 CTI로부터 도출된 정책들을 위해 SPM(120)에 가입될 수 있고, 패킷들에 포함된 도메인 네임들이 DNS에 등록되는지를 결정할 수 있는 패킷 필터링 로직으로 구성될 수 있다.
네트워크(116)는 TIG들 및 연관된 정책들에 의해 보호/보안되지 않는 회사 기업 네트워크일 수 있다. 네트워크(116)에 결합된 호스트들(134 및 135)은 멀웨어에 의해 감염되거나 또는 아니면 악의적인 행위자들에 의해 제어될 수 있다.
네트워크(118) 및 관련 네트워크 자산들은 악의적인 행위자들의 조직에 의해 제어/동작될 수 있다. 네트워크(118)는 TIG들 및 관련 정책들에 의해 보호/보안되지 않는다. 네트워크(118)에 결합된 호스트들(136 및 137)은 네트워크들(112, 114 및 116)과 같은 네트워크(110)(예를 들어, 인터넷)를 통해 원격 네트워크 자산들에 대한 다양한 공격들을 실행하기 위해 조직에 의해 사용될 수 있다.
도 2 는 본 개시의 양태들을 지원하는 TIG(200)에 대한 시스템 아키텍처를 도시한다. 컴포넌트들은 TIG(200)를 구성 및 동작하기 위한 로직을 실행할 수 있는 프로세서 CPU(220), 네트워크 인터페이스들(212 및 214), 관리 인터페이스(240), 및 메모리 모듈들(TIER-0 MEM(230), TIER-1 MEM(231), ..., TIER-N+1 MEM(239))의 계층을 포함할 수 있다. 컴포넌트들은 TIG(200)의 컴포넌트들 사이에서 정보를 전달하는데 사용될 수 있는 버스(210)에 연결될 수 있다. 버스(210)는 TIG(200)의 컴포넌트들 사이에서 데이터 통신 채널을 제공할 수 있다. 버스(210)는 비교적 빠르고 작은 형태 및 성능의 범위를 가질 수 있으며, 예를 들어, 온-칩 실리콘 버스는 프로세서 로직을 온-칩 캐시 메모리와 연결하여 상대적으로 느리고 전역적인 예를 들어 인터넷에 연결한다. 버스의 다른 형태들은 예를 들어, 인쇄 회로 기판(PCB)의 통합된/임베디드된 데이터 버스, 컴퓨터들 및 주변 장치들을 연결하는 병렬 데이터 케이블, 네트워크 스위치들 및 라우터들의 포트들/인터페이스들을 연결하는 직렬 광학 케이블, L2/L3 스위칭된 네트워크, L3 라우팅된 네트워크 등을 임의의 조합으로 포함할 수 있다. 버스(210)는 임의의 조합의 실리콘, 유선, 무선, 물리적, 논리적, 가상, 소프트웨어 정의 등일 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 버스(210)의 일부는 네트워크 인터페이스들/포트들(212 및 214)을 네트워크들(112 및 110)과 연결하는 네트워크 링크들(106)로 식별될 수 있다.
메모리 모듈들(230 내지 239)은 속도(판독/기입 액세스 시간), 밀도(3D 공간에서 단위 볼륨당 바이트), 용량(바이트 단위로 측정됨), 및 바이트당 비용에 의해 계층화/파라미터화되는 계층을 형성할 수 있다. 바이트 단위로 측정되는 용량은 메모리 유형 및 위치와 관련된 공간 제한 때문에 밀도와 매우 상관될 수 있다. (용량 및 밀도는 본 개시에서 혼용하여 사용될 수 있다.) 더 작은-열거된 메모리 모듈들(예를 들어, TIER-0 MEM(230))은 더 높은-열거된 메모리 모듈들(예를 들어, TIER-3 MEM(233))보다 더 높은 속도들, 더 낮은 용량들, 및 더 높은 비용들과 연관될 수 있다. 일반적으로, 열거가 230에서 239로 증가함에 따라 속도 및 비용 감소, 및 용량이 증가한다. 인접 티어(tier)들의 파라미터들은 한 자릿수 이상의 크기만큼 변할 수 있다. 예를 들어, TIER-0 MEM(230)은 온-칩 SRAM 캐시 메모리일 수 있고; TIER-1 MEM(231)은 온-PCB SDRAM "메인 메모리"일 수 있고; TIER-2 MEM(232)은 온-PCB NVRAM(예를 들어, NAND 플래시 SSD)일 수 있고; TIER-3 MEM(233)은 자기 기계/스피닝 디스크 등일 수 있고; TIER-N+1 MEM(239)는, 예를 들어, {도메인 네임, IP 어드레스} 쌍들 및 연관된 정보를 저장하기 위해 인터넷(DNS)에 의해 사용되는 전역적으로 분산된 메모리로 식별된다.
계층적 메모리는 시간 및 공간 효율성과 관련된 본원에 설명된 특징들의 비용 효율적인 구현을 가능하게 할 수 있다. 정책 또는 정책의 파티션(들), 뿐만 아니라 임의의 연관된 블룸 필터들은 충분한 공간/이용 가능한 용량을 갖는 최고 속도 메모리에 저장될 수 있다. 정책들은, 규칙 매칭 레이트들/확률들 및 규칙 리던던시들을 활용하기 위해 블룸 필터들을 사용하는 것과 같이, 시간-효율성 및/또는 공간-효율성 측정들을 달성하기 위해 정책 규칙들을 처리한 후에 저장될 수 있다. 즉, 블룸 필터의 크기를 최소화하거나, 블룸 필터의 위양성율을 최소화하거나, 블룸 필터 내의 리던던트 규칙들을 제거하기 위해 규칙들 또는 정책이 처리될 수 있다. TIG의 성능 측정 값이 허용 가능한 임계치를 충족하지 않으면, TIG는 TIG 구성의 메모리 계층에 하나 이상의 메모리 티어들을 할당할 수 있다. TIG는 또한 보안을 손상시키지 않고 정책에서 패킷 필터링 규칙 검색들의 수를 줄이기 위해 블룸 필터의 계층적 시스템을 제공할 수 있다.
도 3은 효율적인 TIG를 구성 및 동작시키기 위한 대표적인 동작들을 설명하는 흐름도를 도시한다. 단계(3-1)에서, 위협 인텔리전스 게이트웨이(TIG)(200)와 같은 패킷 필터링 장치는 보안 정책 관리자(SPM)(120)로부터 CTI-유도 정책을 다운로드할 수 있다. CTI-유도 정책은 리던던시들을 제거하기 위해 전처리될 수 있는 복수의 규칙들을 포함할 수 있다. 패킷-필터링 장치들은 패킷 필터링 규칙들을 그들이 정책 파일에 배열되는 순서로 처리 또는 적용할 수 있다(그러나, 정책의 무결성이 영향을 받지 않는 경우 규칙들은 재정렬/재배열될 수 있음). 패킷 필터링 장치들은 규칙들이 공간적으로 배열되는 순서로 패킷 필터링 규칙들을 처리 또는 적용할 수 있다. 본원에 설명된 특징들 중 일부는 규칙 순서화에 대응되는 프로세스들을 포함할 수 있다. TLS 인증서 메시지 및 다른 패킷 데이터가 다수의 L2 패킷들에 걸쳐 세그먼트화될 수 있기 때문에, 본 설명에서 "패킷"에 대한 언급은 단일 인증서 메시지 또는 다른 패킷 데이터를 포함하는 다수의 패킷들을 지칭할 수 있다. 방법들을 설명하는 것을 도울 수 있는 예시적인 목적들을 위해, 일부 예시적인 순서들이 설명되어 있다.
SPM 또는 TIG는 일부 요건들을 충족시키고/시키거나 TIG 능력들을 지원하기 위해 규칙들을 순서화하고 그룹화할 수 있다. CTI로부터 도출된 정책들에 대해, 보안성을 개선하고, TIG 성능을 개선하고(예를 들어, 정책 검색 시간을 감소시키기 위해), 사이버 분석 효율성을 향상시키는 등의 방식으로 규칙들이 순서화/그룹화될 수 있다. 규칙들은 예를 들어, 표시자 유형 및 연관된 충실도에 의해, 또는 규칙들이 동일한 액션들 및 위협 메타데이터(그러나 상이한 표시자들을 가짐)를 갖는 경우, 순서화되고 서브 순서화될 수 있다. 네트워크-어드레스 표시자 유형들은 URI, 도메인 네임, 및 IP 어드레스일 수 있고, 연관된 규칙들은 충실도를 감소시킴으로써 순서화될 수 있다. 예를 들어, URI 규칙들이 도메인 네임 규칙들 앞에 올 수 있고, 도메인 네임 규칙들이 IP 어드레스 규칙들 앞에 올 수 있다. 마찬가지로, 인증서-관련 표시자 유형들의 경우, 인증서들은 연관된 패킷 필터링 규칙들의 순서화에 반영될 수 있는 인증 권한들보다 더 높은 충실도를 갖는다. 규칙들은 규칙 액션(들)에 의해 또는 종속성 (내) 순서에 의해 순서화 및 서브 순서화될 수도 있다. 예를 들어, 차단/거부/삭제 액션이 있는 규칙들은 비차단 액션(들)이 있는 규칙들 앞에 올 수 있다. 순서에 독립적인 규칙들은 정책의 무결성을 변경하지 않고 재배열될 수 있다. 순서화 및 그룹화 기준들의 다양한 조합들이 사용될 수 있다. 규칙들은 시간 및/또는 공간 효율들을 지원/최적화하는 방식으로 순서화되고 그룹화될 수 있다.
단계(3-2)에서, 정책은 본원에 설명된 방법들에 따라, 각각의 서브셋이 시간 및/또는 공간 효율들을 허용할 수 있는 규칙들의 서브셋들로 파티셔닝될 수 있다. 예를 들어, 필터링된 패킷들의 네트워크 어드레스들의 매칭의 비교적 낮은 레이트를 가질 것으로 예상될 수 있는 표시자들을 갖는 규칙들의 서브셋은, 현재의 네트워크 어드레스가 서브셋의 규칙들 내의 임의의 표시자들과 매치하지 않을 경우 검색을 개시하기 전에 알려지면, 매칭 규칙에 대한 검색을 스킵함으로써 시간 효율을 달성할 수 있다. 다른 공간 효율은, 규칙들의 서브셋이 동일한 액션(들) 및 위협 메타데이터의 단일 인스턴스와 연관된 (상이한) 표시자들의 세트로서 메모리에 효율적으로 저장될 수 있기 때문에, 서브셋의 각각의 규칙이 동일한 액션(들) 및 동일한 위협 메타데이터(그러나 상이한 표시자)를 갖는 경우에 달성될 수 있다.
단계(3-3)에서, 각 서브셋에 대해, 서브셋의 각 규칙에 대한 각 표시자를 포함하는 블룸 필터가 구성될 수 있다. 각 블룸 필터는 규칙들의 서브셋과 연관될 수 있고, 또한 추가적인 효율들을 허용하기 위해 필터가 포함하는 표시자들의 유형 또는 유형들과 연관될 수 있다. 예를 들어, 블룸 필터 및 관련 규칙 서브셋은 URI 및 도메인 네임 표시자들만 포함할 수 있다; 그런 다음 패킷 필터링 장치는 유형 IP 어드레스의 표시자를 갖는 규칙에 대해 정책을 검색할 수 있고, URI 및 도메인 네임 서브셋 블룸 필터(및 관련된 규칙들의 서브셋)를 통한 검색은 스킵될 수 있다. 시간-효율 블룸 필터들에 대해, 연관된 필터링 규칙들의 서브셋이 저장될 수 있는 (계층적) 메모리 내의 위치에 대한 포인터. 시간-효율 블룸 필터 및 그의 연관된 규칙 서브셋은 메모리 계층의 동일한 티어에 저장될 수 있거나, 또는 규칙들의 서브셋이 너무 커서 그의 블룸 필터와 동일한 티어에 맞지 않을 수 있기 때문에 블룸 필터가 그의 연관된 서브셋보다 메모리 계층의 상이한(예를 들어, 더 빠른) 티어에 저장될 수 있는 경우일 수 있다. 따라서, 연관된 규칙 서브셋은 더 많은 용량을 갖는(그러나 더 느린 속도를 갖는) 메모리 티어에 저장될 수 있다. 공간 효율을 달성하기 위해, 블룸 필터는 액션(들)의 단일 인스턴스와, 블룸 필터 내의 모든 (상이한) 표시자들 및 연관된 패킷 필터링 규칙들의 서브셋과 연관된 위협 메타데이터와 연관될 수 있다.
일부 경우들에서, 규칙 서브셋은 시간 또는 공간 효율들을 생성하지 않을 수 있고, 및/또는 서브셋이 항상 검색되는 요구 사항이 있을 수 있고, 및/또는 규칙들은 CTI로부터 도출되지 않을 수 있거나 그렇지 않으면 위협 표시자들에 의해 특성화되지 않을 수 있다. 서브셋 블룸 필터를 정책의 각 서브셋과 연관시키기 위해, 범용 블룸 필터는 임의의 네트워크 어드레스/요소 입력에 대한 임의의 세트 멤버십 테스트에 대해 항상 TRUE 값을 반환할 수 있는 이러한 규칙 서브셋과 연관될 수 있다. 범용 블룸 필터는 연관된 규칙 요소들을 저장하기 위한 임의의 메모리/저장 공간을 필요로 하지 않을 수 있다. 범용 블룸 필터는 연관된 서브셋 내의 각 규칙이 이들 하나 이상의 표시자 유형들의 표시자들만을 포함하는 경우 하나 이상의 표시자 유형들과 연관될 수 있다. 이는 연관된 서브셋 내의 규칙들이 유형 "IP 어드레스"의 표시자들만을 가질 때 효율들을 생성할 수 있고, 검색되는 현재 네트워크 어드레스는 URL일 수 있다. 따라서, 유니버설 블룸 필터 내에 있는 URL에 대한 멤버십 테스트가 TRUE 결과를 반환할 수 있더라도, 서브셋 검색은 안전하게 스킵될 수 있다. 유니버설 블룸 필터는 시간-효율 블룸 필터의 특수한 경우로 간주될 수 있다.
또한, 일부 상황들에서, 단일 시간-효율 블룸 필터를 다수의 서브셋들 또는 심지어 모든 서브셋들(예를 들어, 전체 정책)과 연관시키는 것이 유리할 수 있다. 단일 세트 X의 파티션과 연관된 각 서브셋과 연관된 복수의 서브셋 블룸 필터들에 대한 멤버십 테스트를 개별적으로 수행하는 것보다 단일 세트 X에서의 엘리먼트 멤버십에 대해 테스트하는 것이 더 시간 효율적일 수 있다. 예를 들어, 도메인-네임 표시자들과 연관된 필터링 규칙들의 서브셋(J) 및 또한 도메인-네임 표시자들과 연관된 필터링 규칙들의 서브셋(K)를 포함하는 정책에 대해, J에서의 도메인-네임 표시자들은 K에서의 도메인-네임 표시자들과 모두 상이하다. J의 도메인-네임 표시자들 및 K의 도메인-네임 표시자들을 각각 포함하는 2개의 블룸 필터들(J' 및 K')이 생성될 수 있고, J 및 K 둘 모두의 도메인-네임 표시자들을 포함하는 조합된 서브셋 필터의 역할을 하는 제3 블룸 필터(L')가 생성될 수 있다(각 블룸 필터는 동일한 위양성율(P)을 가질 수 있음). 단일의 조합된 서브셋 블룸 필터(L')에서의 멤버십을 테스트하는 시간은 블룸 필터(J')에서의 멤버십을 테스트하는 시간과 블룸 필터(K')에서의 멤버십을 테스트하는 시간의 합보다 작을 수 있다.
단계들(3-2 및 3-3)은 본원에서 TIG(200)에 의해 실행되는 것으로 설명되지만, 이들 단계들은 SPM(120)에 의해 실행될 수 있거나, 단계들의 일부 부분들은 TIG(200)와 SPM(120) 사이에서 분할될 수 있다. 블룸 필터들 중 일부 부분이 SPM(120)에 의해 계산될 수 있는 경우, 정책은 TIG(200)에 의해 다운로드될 수 있고, 정책 파일은 또한 임의의 연관된 블룸 필터들 및 연관된 정보를 포함할 수 있다. 다른 예는 SPM(120)이 정책을 서브셋으로 파티셔닝하는 것을 수행하고 각 서브셋에 대해 사용될 효율의 유형(들) 또는 블룸 필터(들)을 지정하지만(예를 들어, 시간 효율, 공간 효율, 효율 없음(범용) 등), TIG(200)가 블룸 필터들을 구성하는 경우이다.
단계(3-4)에서, 서브셋 블룸 필터들 및 그들의 연관된 정책의 서브셋들은 패킷 필터링 장치 또는 SPM(120)에 의해 분산될 수 있고, 메모리 계층 내에 저장될 수 있다. 블룸 필터들 및 이들의 연관된 서브셋들은 충분한 이용 가능한 용량을 갖는 가장 빠른 메모리 모듈에 저장될 수 있다. 시간-효율 블룸 필터들은 필터와 연관된 규칙 서브셋들을 저장하는 메모리만큼 빠르거나 그보다 빠른 메모리 모듈들에 저장될 수 있다. 블룸 필터들은 메모리 용량에 관하여 정책의 서브셋들보다 우선순위를 가질 수 있다. 패킷 필터링 장치는 패킷 필터링 장치의 각 메모리에 대한 결정된 잔여 용량에 기초하여, 블룸 필터 또는 정책의 규칙 서브셋을 저장하기 위한 메모리 모듈을 결정할 수 있다. 패킷 필터링 장치는 블룸 필터들의 저장을 우선순위화할 수 있어서, 규칙 서브셋이 용량의 이유로 블룸 필터를 대체하지 않을 수 있다.
단계(3-5)에서, TIG(200)는 패킷 필터링 프로세스를 시작하기 위해 (네트워크 인터페이스/장치 포트를 통해) 적어도 하나의 전송중인 패킷을 수신할 수 있다. 단계(3-6)에서, 정책 내 규칙들의 위협 표시자들에 대응할 수 있는 네트워크 어드레스들 및 인증서-관련 식별자들(있는 경우)이 패킷으로부터 추출된다. 네트워크 어드레스들은 L3/IP-층 패킷 헤더 내의 소스 IP 어드레스 및/또는 목적지 IP 어드레스, L7/애플리케이션-층 패킷 내의 DNS 쿼리 요청 메시지 내의 도메인 네임, L7/애플리케이션-층 패킷 내의 HTTP GET 요청 방법 내의 URL 및 도메인 네임 등일 수 있다. 인증서-관련 식별자들은 TLS 인증서 메시지들에 포함될 수 있는 X.509 인증서들에 포함된 필드들로부터 추출된 데이터, 이를 테면 X.509 인증서를 고유하게 식별하거나 특징짓는 쌍 {발행자 이름, 일련 번호}, 및 인증서의 발행자 이름을 포함할 수 있는 인증서를 발행한 인증 기관과 연관된 식별 데이터를 포함할 수 있다.
단계(3-7)에서, 패킷 필터링 장치(200)는, 패킷으로부터 추출된 각 네트워크 어드레스 및 인증서-연관된 식별자(있는 경우)에 대해, 적절히 또는 연관된 위협 표시자의 결정에 기초하여, 각 서브셋 블룸 필터 내의 네트워크 어드레스 또는 다른 식별자를 검색할 수 있고, 정책에 의해 정의된 순서화에 대응되는 순서로 데이터를 검색할 수 있다. 검색은 (T) 네트워크 어드레스가 블룸 필터의 요소/멤버인 것으로 발견될 때까지(매칭은 참(true) 결과임) 또는 (F) 모든 블룸 필터들이 성공적으로 검색되지 않을 때까지(매칭이 없거나 매칭이 거짓(false)임) 수행될 수 있다. 블룸 필터 검색의 매치 결과가 없는 것에 기초하여, 네트워크 어드레스 또는 식별자는 임의의 서브셋 블룸 필터 세트의 멤버가 아닌 것으로 결정될 수 있고, 따라서, 매칭할 필터링 규칙이 정책에 없고, 적용되어야 하는 필터링 규칙 연산자가 없다. 매치 결과가 없는 것(F)에 기초하여, 단계(3-8F)에서, 패킷 필터링 장치(200)는 매칭 표시자를 갖는 정책에 규칙이 없다고 결정되었기 때문에 검색 프로세스를 중지할 수 있고, 다음 전송중인 패킷을 필터링하기 위해 단계(3-5)로 검색 처리를 반환할 수 있다. 매치 결과(T)에 기초하여, 단계(3-8T)에서, 패킷 필터링 장치(200)는 네트워크 어드레스 또는 식별자와 매치하는 표시자를 갖는 블룸 필터와 연관된 정책 서브셋(들)에서 패킷 필터링 규칙을 검색할 수 있다. 단계(3-9)에서, 패킷 필터링 장치(200)는 패킷에 필터링 규칙의 액션(들)을 적용할 수 있고, 다음 전송중인 패킷을 필터링하기 위해 단계(3-5)로 패킷 처리를 반환할 수 있다.
단계(3-6)에서 패킷으로부터 다수의 네트워크 어드레스들 또는 인증서-관련 식별자들이 추출되면, 패킷 필터링 장치(200)는 단계(3-8)에서, 각 네트워크 어드레스 또는 식별자가 각 네트워크 어드레스 및 식별자와 연관된 표시자 충실도에 기초하여 서브셋 블룸 필터들에서 검색될 수 있는 순서를 결정할 수 있다. 예를 들어, 패킷으로부터 URL 및 IP 어드레스가 추출되면, 패킷 필터링 장치(200)는 (일반적으로) URL 표시자들이 IP 어드레스 표시자들 보다 더 높은 충실도를 갖기 때문에, IP 어드레스에 대한 유사한 검색을 수행하기 전에 블룸 필터들에서 URL을 검색할 수 있다. 마찬가지로, 인증서 식별자 및 인증 기관 식별자가 패킷으로부터 추출되면, 패킷 필터링 장치(200)는 인증 기관 식별자에 대한 유사한 검색을 수행하기 전에 서브셋 블룸 필터들에서 인증 식별자를 검색할 수 있는데, 이는 (일반적으로) 인증 표시자들이 인증 기관 표시자들 보다 더 높은 충실도를 가질 수 있기 때문이다.
도 4는 TIG(200)가 정책이 2개의 서브셋들로 파티셔닝(partitioning)될 때 효율적인 패킷 필터링을 위해 구성되는 일 실시예 및 관련 이벤트 시퀀스를 예시하며, 여기서 정책과 연관된 패킷 필터링 규칙들의 파티셔닝은 표시자 유형들에 의해 그리고 패킷이 서브셋에서의 규칙과 매칭할 가능성에 의해 결정될 수 있다. 시간-효율 블룸 필터는 하나의 서브셋과 연관될 수 있고, 범용 블룸 필터는 다른 서브셋과 연관될 수 있다. 규칙들의 서브셋들 및 이들의 연관된 블룸필터들 둘 모두는 동일한 메모리 모듈에 저장될 수 있다. 이 예시는 일반적으로 도 3의 단계들(3-1 내지 3-4)에 대응한다.
단계(4-1)에서, SPM(120)은 전송중인 패킷들에 대해 TIG(200)에 의해 시행될 정책을 포함하는 파일을 (예를 들어, 인터넷일 수 있는 네트워크(110)를 통해) TIG의 관리 인터페이스(MGMT I/F)(240)에 전송할 수 있다. 정책 파일은 정책을 2개의 서브셋들로 파티셔닝하는 파티셔닝 방식, 각 서브셋에 적용될 효율의 유형 또는 유형들, 정책의 크기, 각 서브셋의 크기, 및 각 서브셋에서의 표시자들의 유형들과 같은 정보를 포함할 수 있는 정책 디스크립터(policy descriptor)를 갖는 헤더(header)를 포함할 수 있다. 단계(4-2)에서, MGMT I/F(240)는 (버스(210)를 통해) 정책 파일을 TIER-3 MEM(233)으로 전송할 수 있으며, 이는 로컬 기계/스피닝 자기 디스크(비휘발성, 비교적 큰 용량, 비교적 저렴, 비교적 느린 판독/기록 액세스)와 같은 저속 메모리일 수 있다. 단계(4-3)에서, CPU(220)는 TIER-3 MEM(233)으로부터 정책 파일 헤더를 검색할 수 있다. 정책 파일 헤더는 정책이 어떻게 규칙들의 서브셋들로 파티셔닝되는지, 어떤 효율들이 적용될 수 있는지, 및 서브셋들이 (필요한 경우, 크기 정보에 기초하여) 다수의 메모리 모듈들에 걸쳐 어떻게 분산될 수 있는지를 나타낼 수 있다. CPU(220)가 정책 헤더 파일 정보를 처리함에 따라, CPU(220)는 예를 들어, 온-칩 캐시 메모리로 식별될 수 있는 TIER-0 MEM(230) 및 온-PCB 메인 메모리(도시되지 않음)로 식별될 수 있는 TIER-1 MEM(231)에 정보의 일부들을 일시적으로 저장할 수 있다.
단계(4-4)에서, 정책 파일 헤더 정보에 기초하여, CPU(220)는 패킷 필터링 규칙들의 서브셋들을 검색할 수 있고, 연관된 서브셋 블룸 필터를 생성할 수 있다. 예를 들어, CPU(220)는 URL 및 도메인 네임 표시자들을 갖는 패킷 필터링 규칙들로 구성되는 디스크(233)로부터 제1 서브셋(SS-1)을 검색할 수 있다. 정책 헤더 정보는 제1 서브셋(SS-1)에 대해 정책 와이드 시간-효율 블룸 필터가 생성되어야 한다는 것을 나타낼 수 있다. CPU(220)는 제1 서브셋 내의 모든 표시자들을 추출할 수 있고, 추출된 표시자 데이터를 시간-효율 또는 정책 블룸 필터(B/F-1)(이는 위양성율(P)에 대해 구성될 수 있음)에 삽입할 수 있다. CPU(220)는 블룸 필터(B/F-1)를 제1 서브셋(SS-1)과 연관시킬 수 있고, 블룸 필터(B/F-1)를 블룸 필터를 포함하는 표시자들의 유형들("URL", "도메인 네임")과 연관시킬 수 있다. 단계(4-5)에서, CPU(220)는 메모리 용량을 분석할 수 있고, 메인 메모리(231)가 블룸 필터(B/F-1) 및 그와 연관된 제1 서브셋(SS-1), 뿐만 아니라 제2 서브셋(SS-2)을 저장하기에 충분한 잔여 가용 용량을 갖는다고 것을 결정할 수 있다. 따라서, CPU(220)는 시간-효율 블룸 필터(B/F-1) 및 제1 서브셋(SS-1)을 메인 메모리(231)에 저장할 수 있다.
단계(4-6)에서, 정책 파일 헤더 정보에 기초하여, CPU(220)는 유형 IP 어드레스 및 IP 어드레스 범위의 표시자들을 갖는 패킷 필터링 규칙들로 구성될 수 있는 디스크(233)로부터 제2 서브셋(SS-2)을 검색할 수 있다. 정책 헤더 정보가 제2 서브셋(SS-2)에 대한 특정 서브셋 효율을 지정하지 않는다는 결정에 기초하여, 패킷 필터링 장치는 SS-2와 연관될 유형들 {"IP 어드레스", "IP 어드레스 범위"}을 갖는 범용 블룸 필터(B/F-2)를 생성할 수 있다. 범용 블룸 필터(B/F-2)는 복수의 위협 표시자 유형들과 관련될 수 있다. 메모리 용량의 분석에 기초하여, 단계(4-7)에서, CPU(220)는 범용 블룸 필터(B/F-2) 및 제2 서브셋(SS-2)을 메인 메모리(231)에 저장할 수 있다. 각 정책의 서브셋이 처리 또는 저장되었다고 결정되면, TIG(200)는 현재 정책에 대한 패킷 필터링 구성이 완료된 것으로 결정할 수 있다.
도 5는 도 4에서 구성된 TIG(200)에 대한 대표적인 사용 사례 및 연관된 효율적인 패킷 필터링 프로세스를 예시한다. 이 예시는 일반적으로 도 3의 단계들(3-5 내지 3-9)에 대응된다. 단계(5-1)에서, 예를 들어, 네트워크(112)에 결합된 데스크탑 컴퓨터(130)에 의해 호스팅되는 웹 브라우저를 동작시키는 인간 사용자는 네트워크(116)에 결합된 서버(134)에 의해 호스팅되는 www.enterprise-xyz.com라는 웹 사이트와의 웹/HTTP 세션을 개시할 수 있다. DNS에서 www.enterprise-xyz.com을 (예를 들어, 12.34.56.78과 같은 IP 어드레스로) 분해한 후, 컴퓨터(130)는 포트 80/HTTP(도 5에 도시되지 않음) 상의 130과 134 사이의 TCP 연결을 확립할 수 있다. 컴퓨터(130)는 http://www.enterprise-xyz.com에 대한 HTTP GET 요청(이는 홈페이지에 대한 URL, 예를 들어, http://www.enterprise-xyz.com/index.html로 디폴트될 수 있음)을 포함하는 적어도 하나의 패킷을 웹 사이트(134)를 향해 포워딩할 수 있다.
단계(5-2)에서, TIG(200)의 네트워크 인터페이스(212)는 전송 중인 HTTP 겟 도메인 네임 패킷을 수신 및 수집할 수 있고, 수신된 패킷들을 필터링을 위해 BUS(210)를 통해 CPU(220)로 전송할 수 있다. CPU(220)는 (a) 요청/패킷으로부터의 도메인 네임(www.enterprise-xyz.com), (b) 목적지 IP 어드레스(12.34.56.78)와 같은 패킷 필터링에 사용될 데이터를 추출할 수 있다. CPU(220)는 정책 규칙들에 기초하여 추출된 데이터를 소트(sort)할 수 있고, 정책에 의해 정의된 바와 같이 표시자 유형 충실도의 내림차순 순서로 각 표시자에 대한 정책을 검색할 수 있다. CPU(220)는 도메인 네임(www.enterprise-xyz.com)과 같은 더 높은 충실도 표시자에 기초하여 매칭 규칙들에 대한 정책을 검색할 수 있다. 매치되는 것이 없다고 결정되면, CPU(220)는 IP 어드레스(12.34.56.78)와 같은 더 낮은 충실도 표시자와 매치하는 규칙들을 검색할 수 있다.
단계(5-3)에서, CPU(220)는 패킷 필터링 규칙들의 제1 서브셋(SS-1)에 대한 시간-효율 블룸 필터인 B/F-1과 연관된(그리고 그 내에 포함된) 표시자 유형들을 테스트하여, 이들이 www.enterprise-xyz.com(도메인 네임)의 유형과 매치하는지를 결정할 수 있다. B/F-1은 유형 "도메인 네임" 및 "URL" 유형의 표시자들을 포함하기 때문에, CPU(220)는 www.enterprise-xyz.com이 B/F-1의 멤버인지 여부를 결정할 수 있다. 정책의 제1 서브셋(SS-1)이 위협 표시자(www.enterprise-xyz.com)를 갖는 패킷 필터링 규칙을 포함하지 않는다고 결정될 때, www.enterprise-xyz.com에 대한 B/F-1 멤버십 테스트는 FALSE 또는 매치 값 없음을 반환하고, CPU(220)는 패킷 필터링 규칙들의 제1 서브셋(SS-1)을 통한 검색을 스킵할 수 있다. IP 어드레스를 포함하는 패킷에 대해, CPU(220)는 패킷 필터링 규칙들의 제1 서브셋(SS-1)와 연관된 블룸 필터인, B/F-1와 연관된(그리고 그 내에 포함된) 표시자 유형들을 결정하여, 그들이 12.34.56.78(IP 어드레스)의 유형과 매치하는지를 결정할 수 있다. B/F-1이 유형 "도메인 네임" 및 "URL"의 표시자들을 포함하기 때문에, CPU(220)는 B/F-1에 대한 멤버십 테스트를 스킵할 수 있다(따라서 SS-1의 규칙들을 통해 검색을 스킵할 수 있음).
그런 다음, 단계(5-4)에서, CPU(220)는 패킷 필터링 규칙들의 제2 서브셋(SS-2)과 연관된 범용 블룸 필터인, B/F-2와 연관된 표시자 유형들을 결정할 수 있다. B/F-2와 연관된 표시자 유형들이 "IP 어드레스" 및 "IP 어드레스 범위"이기 때문에, CPU(220)는 도메인 네임(www.enterprise-xyz.com)에 대한 B/F-2에 대한 멤버십 테스트를 스킵할 수 있고, 또한 제2 서브셋(SS-2)과 연관된 규칙들을 통해 검색을 스킵할 수 있다. IP 어드레스(12.34.56.78)를 포함하는 패킷에 대해, CPU(220)는 패킷 필터링 규칙들의 제2 서브셋 SS-2와 연관된 블룸 필터인, B/F-2와 연관된 표시자 유형들을 결정하여, 이들이 12.34.56.78(IP 어드레스)의 유형과 매치하는지를 결정할 수 있다. 표시자 유형 매치가 있으므로, CPU(220)는 패킷과 연관된 IP 어드레스(12.34.56.78)가 B/F-2에 포함되는지를 결정할 수 있다. B/F-2 가 범용 블룸 필터인 경우, 검색은 TRUE 값을 반환할 수 있다. CPU(220)는 12.34.56.78과 매치하는 표시자를 갖는 패킷 필터링 규칙에 대해 SS-2에 대한 규칙들의 제2 서브셋을 검색할 수 있다. 매치가 발견되지 않을 때, 패킷에 적용되는 액션들 또는 규칙 연산자들이 없으며, 패킷이 그 의도된 목적지로 포워딩될 수 있다. 매치 없음 결정에 기초하여, 단계(5-5)에서, CPU(220)는 패킷을 BUS(210)를 통해 네트워크 인터페이스(214)로 전송할 수 있다. 단계(5-6)에서, 네트워크 인터페이스(214)는 패킷 필터링 규칙과 매치하지 않는 패킷들을 타겟 목적지 웹 사이트(www.enterprise-xyz.com)(이는 IP 어드레스(12.34.56.78)를 갖는 서버(134)에 의해 호스팅됨)를 향해 네트워크(110)로 포워딩할 수 있다.
단계(5-7)에서, 네트워크(112)에 결합된 데스크탑 컴퓨터(131)에 의해 호스팅되는 이메일 애플리케이션을 동작시키는 인간 사용자는 피싱(phishing) 이메일에 임베디드된 URL 링크(http://www.cyber-threat-network.com/download/malware.exe)를 클릭할 수 있다. 그 액션에 기초하여, 컴퓨터(131)는 네트워크(118)에 결합된 서버(136)를 향해 패킷들을 전송함으로써 호스팅된 www.cyber-threat-network.com라는 웹 사이트와의 웹/HTTP 세션을 개시할 수 있다. DNS에서 도메인 네임(www.cyber-threat-network.com)을 87.65.43.21과 같은 IP 어드레스로 분해한 후, 컴퓨터(131)는 포트 80/HTTP에서 컴퓨터(131)와 컴퓨터(136) 사이에 TCP 연결을 확립할 수 있고, 컴퓨터(131)는 URL(http://www.cyber-threat-network.com/download/malware.exe)에 대한 HTTP GET 요청을 포함하는 패킷을 호스트(136)를 향해 포워딩할 수 있다. 단계(5-8)에서, TIG(200)의 네트워크 인터페이스(212)는 전송 중인 패킷을 수신 및 수집할 수 있고, 필터링을 위해 BUS(210)를 통해 CPU(220)로 패킷을 전송할 수 있다. CPU(220)는 요청/패킷으로부터 (a) URL(http://www.cyber-threat-network.com/download/malware.exe) 및 (b) 목적지 IP 어드레스(87.65.43.21)를 추출할 수 있다. CPU(220) 로직은 충실도를 감소시키는 표시자들에 대해 정책을 검색하도록 구성될 수 있다. 패킷과 연관된 위협 표시자의 각 유형에 대해 결정된 충실도에 기초하여, CPU(220)는 먼저 URL(예를 들어, http://www.cyber-threat-network.com/download/malware.exe)과 매치하는 규칙들에 대한 정책을 검색할 수 있고, 그런 다음 (필요한 경우) 87.65.43.21과 매치하는 규칙들을 검색할 수 있다.
단계(5-9)에서, CPU(220)는 B/F-1 표시자 유형들이 유형 URL(예를 들어, http://www.cyber-threat-network .com/download/malware.exe)과 매치하는지를 결정하기 위해 수신된 요청/패킷과 연관된 표시자 유형들과 비교하여, 패킷 필터링 규칙들의 제1 서브셋(SS-1)에 대한 블룸 필터인, B/F-1와 연관된(그리고 그 내에 포함된) 표시자 유형들을 결정할 수 있다. B/F-1이 유형 "도메인 네임" 및 "URL"의 표시자들을 포함하는 경우, CPU(220)는 URL(http://www.cyber-threat-network.com/download/malware.exe)이 B/F-1의 멤버인지 여부를 결정할 수 있다. 정책의 제1 서브셋(SS-1)이 위협 표시자(http://www.cyber-threat-network.com/download/malware.exe)를 갖는 패킷 필터링 규칙을 포함하는 경우, B/F-1 멤버십 테스트는 TRUE 값을 반환한다. B/F-1 멤버십 테스트로부터의 매칭의 결정에 기초하여, 단계(5-10)에서, CPU(220)는 매칭 규칙을 찾기 위해 패킷 필터링 규칙들의 제1 서브셋(SS-1)을 검색할 수 있다. CPU(220)는 패킷을 차단(BLOCK) 또는 드롭(drop)할 수 있는 규칙에 대한 액션 또는 연산자를 적용한다. 그런 다음, CPU(220)는 정책을 통한 그의 검색을 중단할 수 있고, 연결 요청(도 5에 도시되지 않음)을 종료하기 위해 발신 컴퓨터에 값, 예를 들어 TCP RST 패킷을 반환할 수 있다.
도 6은 정책이 2 개의 서브셋들로 파티셔닝될 수 있을 때 TIG가 효율적인 패킷 필터링을 위해 구성되는 일 실시예 및 연관된 이벤트 시퀀스를 예시하며, 여기서 파티셔닝은 서브셋에서의 규칙들의 표시자 유형들에 기초하여 그리고 패킷이 서브셋에서의 규칙과 매치할 가능성에 의해 결정될 수 있다. 시간-효율 또는 정책 블룸 필터는 양쪽 서브셋들과 연관될 수 있다. 서브셋들은 함께 너무 커서 사용 가능한 메인 메모리(231)에 맞지 않을 수 있지만, 각 서브셋은 그 자체로 메인 메모리(231)에 맞을 것이다. 규칙과 매치할 가능성이 낮은 서브셋은 충분한 가용 용량을 갖지만 메인 메모리(231)보다 느릴 수 있는 상이한 메모리 모듈에 저장하기 위해 선택될 수 있다. 느린 메모리에도 불구하고, TIG 성능은 서브셋들의 각 규칙의 불필요한 검색들을 피하기 위해 블룸 필터들을 검색하는 시간 효율 방법 때문에 유지될 수 있다. 이 예시는 일반적으로 도 3의 단계들(3-1 내지 3-4)에 대응된다. 단계들(6-1, 6-2 및 6-3)은 도 4의 단계들(4-1, 4-2 및 4-3)과 유사하고, 정책 파일을 수신하는 상세한 설명은 반복되지 않는다.
단계(6-4)에서, 정책 파일 헤더 정보에 기초하여, CPU(220)는, 디스크(233)로부터, URL 및 도메인 네임 표시자들을 갖는 패킷 필터링 규칙들로 구성될 수 있는 제1 서브셋(SS-1)을 검색할 수 있다. 정책 헤더 정보는 시간-효율 블룸 필터가 제1 서브셋(SS-1)에 대해 구성되어야 함을 나타낼 수 있고, CPU(220)는 제1 서브셋 내의 모든 표시자들을 추출할 수 있으며, 이러한 표시자들을 블룸 필터(B/F-1)(이는 예를 들어, 위양성율(P)에 대해 구성됨)에 삽입할 수 있다. CPU(220)는 블룸 필터(B/F-1)를 제1 서브셋(SS-1), 및 SS-1에 포함된 규칙들의 표시자 유형들("URL", "도메인 네임")과 연관시킬 수 있다. 단계(6-5)에서, 정책 헤더 파일 정보에 기초하여, CPU(220)는 메인 메모리(231)가 서브셋(SS-1)를 저장하기에 충분한 가용 용량을 갖지만, 서브셋(SS-1) 및 서브셋(SS-2) 둘 모두를 저장하기에 충분한 가용 용량을 갖지 않는다고 결정할 수 있다. SS-1이 검색되어야 할 낮은 가능성 때문에, CPU(220)는 SS-1이 2차 메모리 모듈(TIER-2 MEM)(232)(제1 서브셋(SS-1)를 저장하기에 충분한 가용 용량을 갖지만, 메인 메모리(231)보다 느림)에 저장될 것이라고 결정할 수 있다. 용량 결정들에 기초하여, 단계(6-5A)에서, CPU(220)는 메모리 모듈(232)에 제1 서브셋(SS-1)을 저장할 수 있고, SS-1의 메모리 위치를 그의 연관된 블룸 필터(B/F-1)와 연관시킬 수 있다. 단계(6-5B)에서, CPU(220)는 메인 메모리(231)에 블룸 필터(B/F-1)를 저장할 수 있다.
단계(6-6)에서, 정책 파일 헤더 정보에 기초하여, CPU(220)는 유형 "IP 어드레스" 및 "IP 어드레스 범위"의 표시자들을 갖는 패킷 필터링 규칙들로 구성될 수 있는 디스크(233)로부터 제2 서브셋(SS-2)를 검색할 수 있다. 정책 헤더 정보는 시간-효율 블룸 필터가 SS-2에 대해 구성되어야 한다는 것을 나타낼 수 있다. CPU(220)는 SS-2의 모든 표시자들을 추출할 수 있고, 추출된 위협 표시자들을 블룸 필터(B/F-2)(이는 예를 들어, 위양성율(P)에 대해 구성됨)에 삽입할 수 있다. CPU(220)는 또한 블룸 필터(B/F-2)를 제2 서브셋(SS-2)과 연관시킬 수 있고, 블룸 필터(B/F-2)를 그것이 포함하는 표시자들의 유형들("IP 어드레스", "IP 어드레스 범위")과 연관시킬 수 있다. 단계(6-7)에서, CPU(220)는 블룸 필터(B/F-2) 및 제2 서브셋(SS-2)을 저장하기에 충분한 가용 메모리가 메인 메모리(231)에 있다고 결정할 수 있다. 용량 결정에 기초하여, CPU(220)는 B/F-2 및 서브셋(SS-2)의 규칙들을 메인 메모리(231)에 저장할 수 있다. TIG(200)가 수신된 정책에 대한 효율적인 패킷 필터링을 위한 구성을 완료했다는 결정에 기초하여, TIG(200)는 패킷들을 수신하기 시작하고 생성된 블룸 필터들을 사용하여 이러한 패킷들을 필터링하기 시작할 수 있다.
도 7은 도 6에서 구성된 TIG(200)에 대한 대표적인 사용 사례 및 연관된 효율적인 패킷 필터링 프로세스를 예시한다. 이 예시는 일반적으로 도 3의 단계들(3-5 내지 3-9)에 대응된다. 단계들(7-1 및 7-2)은 도 5의 단계들(5-7 및 5-8)과 실질적으로 동일하며, 처리를 위한 패킷을 수신 및 수집하는 단계들(7-1 및 7-2)에 대한 구체적인 설명은 생략된다. 단계(7-3)에서, CPU(220)는, 표시자 유형들이 http://www.cyber-threat-network.com/download/malware.exe의 유형("URL")과 매치하는지를 결정하기 위해, 패킷 필터링 규칙들의 제1 서브셋(SS-1)에 대한 블룸 필터인, B/F-1과 연관된(그리고 그 내에 포함된) 표시자 유형들을 결정할 수 있다. B/F-1이 유형 "도메인 네임" 및 "URL"의 표시자들을 포함할 때, CPU(220)는 수신된 패킷의 URL(http://www.cyber-threat-network.com/download/malware.exe)이 B/F-1의 멤버인지 여부를 결정할 수 있다. 정책의 제1 서브셋(SS-1)이 위협 표시자(http://www.cyber-threat-network.com/download/malware.exe)를 갖는 패킷 필터링 규칙을 포함할 때, B/F-1 멤버십 테스트는 TRUE 값을 반환한다. 단계(7-4)에서, CPU(220)는 B/F-1로부터 TIER-2 MEM(232) 내의 SS-1의 메모리 위치를 획득할 수 있고, 서브셋(SS-1)의 규칙들을 검색하여 매칭 패킷 필터링 규칙(예를 들어, 표시자(http://www.cyber-threat-network.com/download/malware.exe)를 갖는 규칙)을 찾을 수 있다. 그런 다음, CPU(220)는 패킷을 차단(BLOCK) 또는 드롭할 수 있는 규칙에 대해 지정된 액션 또는 연산자들을 적용할 수 있다. 그런 다음, CPU(220)는 정책을 통한 추가 또는 병렬 검색을 중단할 수 있고, 통신 세션이 방지 또는 종료되었음을 나타내는 메시지 또는 패킷을 발신 컴퓨터에 반환할 수 있다(이는 예를 들어, TCP 연결을 종료하기 위해 발신 컴퓨터로 타임-아웃 메시지 또는 TCP RST 신호/패킷을 전송하는 것을 포함할 수 있음).
도 8은 정책이 4개의 서브셋들로 파티셔닝될 때 TIG가 효율적인 패킷 필터링을 위해 구성되는 일 실시예 및 연관된 이벤트 시퀀스를 예시한다. 4개의 서브셋들 중 3개는 공간-효율 블룸 필터들 및 관련 정보로 표현된다. 제4 서브셋은 시간-효율 블룸 필터와 연관된다.
패킷 필터링 규칙들의 제1 서브셋(SS-1)은 공간-효율 확률적 데이터 구조 또는 블룸 필터(B/F-1) 그리고 연관된 위협 표시자 유형 및 연관된 규칙 액션과 같은 아래에서 논의되는 바와 같은 연관된 정보에 의해 표현될 수 있다. 규칙들에 대한 표시자들은 인터넷(DNS)에 등록된 모든 도메인 네임 세트의 요소들이다. 이러한 표시자들은 DNS Bloom 필터(B/F-1)에 포함되어 있다. SS-1과 연결된 메모리 모듈은 {domain name, IP address} 쌍의 전역적으로 분산된 데이터베이스로 간주될 수 있는 인터넷(DNS) 자체일 수 있다. 이 메모리 모듈은 도 2 및 도 8의 TIER-N+1 MEM(239)으로 식별될 수 있다. DNS 확률적 데이터 구조(B/F-1)는 2개의 규칙 액션들과 연관될 수 있다. 제1 규칙으로서, 멤버십 테스트가 TRUE 값을 반환할 때(예를 들어, 현재 도메인 네임이 DNS에 등록될 때), 연관된 규칙의 액션 또는 연산자는 조건부 동작이다. 현재 패킷이 (도메인 네임을 IP 어드레스로 분해하기 위한) DNS 쿼리 요청을 포함하면, 규칙 액션은 DNS 쿼리 요청을 포함하는 패킷을 DNS 쿼리 응답을 포함하는 패킷으로 변환하는 패킷 변환 함수(예를 들어, 도메인 네임을 IP 어드레스로의 분해)를 적용하는 것이다. 이러한 패킷 변환은 DNS 쿼리 요청을 포함하는 현재 패킷을 대응되는 DNS 쿼리 응답(패킷)을 생성할 인터넷(DNS)로 포워딩함으로써 달성될 수 있다. 현재 패킷이 ELSE 조건을 결정하는 경우(예를 들어, 패킷이 DNS 쿼리 요청을 포함하지 않는 경우), 액션은 널(null)일 수 있고, 이는 패킷 필터링 로직이 추가적인 블룸 필터들 및 규칙들의 서브셋들을 포함하는 정책의 나머지 부분을 통해 계속 검색하도록 시그널링할 수 있다. 현재 패킷이 DNS 쿼리 요청이 아닌 경우, B/F-1과 연관된 멤버십 테스트(및 B/F-1 패킷 필터링 규칙(들)의 후속 애플리케이션)를 스킵하는 것이 적절할 수 있다. 멤버십 테스트가 FALSE를 반환할 때(예를 들어, 도메인 네임이 DNS에 등록되지 않을 때), 연관된 규칙의 액션은 또한 조건부 액션일 수 있다. 멤버십 테스트가 FALSE를 반환할 때 그리고 현재 패킷이 (도메인 네임을 IP 어드레스로 분해하기 위한) DNS 쿼리 요청을 포함하는 경우, 규칙 액션들은 패킷을 드롭하고 (선택적으로) RCODE=3(NXDOMAIN 또는 존재하지 않는 인터넷 또는 인트라넷 도메인 네임의 다른 표시)을 갖는 대응되는 DNS 쿼리 응답을 포함하는 패킷을 생성하는 패킷 변환 함수를 적용하고 요청을 종료하기 위해 패킷을 발신 호스트로 전송할 수 있다. 멤버십 테스트가 FALSE를 반환하고 그 결과가 현재 패킷이 DNS 쿼리 요청을 포함하지 않음을 나타내는 ELSE 응답인 경우, 액션은 규칙들의 추가적인 서브셋들 및 그들의 연관된 필터들을 포함하는 정책의 나머지를 통해 검색을 계속하도록 패킷 필터링 로직에 시그널링할 수 있는 널(null) 동작일 수 있다.
제2 및 제3 서브셋들 각각(SS-2 및 SS-3)은 또한 공간-효율 블룸 필터들(B/F-2 및 B/F-3)(그리고 연관된 정보)에 의해 각각 표현된다. 예시적인 목적들을 위해, B/F-2 및 B/F-3 둘 모두가 단일 CTI 제공자로부터의 도메인 네임들의 목록으로부터 도출되지만(그리고 그에 따라 임의의 대응되는 규칙들은 동일한 위협 메타데이터를 가질 수 있지만), 대응되는 패킷 필터링 규칙들 각각은 단일 액션, 즉 BLOCK 액션(예를 들어, 패킷을 드롭하는 동작) 또는 MONITOR 액션(예를 들어, 패킷을 허용/포워딩하지만 또한 가능한 후속 위협 분석을 위해 패킷을 기록하고 캡처할 수 있는 동작) 중 하나를 갖는다고 가정한다. SS-2는 BLOCK 액션을 갖는 모든 규칙들을 포함할 수 있고, 그에 따라 연관된 B/F-2는 BLOCK 액션을 갖는 규칙들에 대한 모든 표시자들을 포함하거나 나타낼 수 있다. SS-3은 MONITOR 액션을 갖는 모든 규칙들을 포함할 수 있고, 따라서 연관된 B/F-3은 MONITOR 액션을 갖는 규칙들에 대한 모든 표시자들을 포함할 수 있다. 따라서, B/F-2의 테스트에 대한 TRUE 결과의 임의의 결정은 BLOCK 액션의 적용을 초래할 수 있고, CTI 제공자 및 연관된 위협 메타데이터, 그리고 패킷 및 환경 데이터를 (예를 들어, 사이버분석 애플리케이션들에서의 후속 사용을 위해) 위협 이벤트의 로그로서 저장할 수 있다. 마찬가지로, B/F-3의 테스트에 대한 TRUE 결과의 임의의 결정은 MONITOR 액션의 적용을 초래할 수 있고, CTI 제공자 및 연관된 위협 메타데이터, 그리고 패킷 및 환경 데이터를 위협 이벤트의 로그로서 저장할 수 있다. B/F-2 및 B/F-3 모두에 대한 FALSE 규칙은 널 동작 또는 액션의 적용을 초래할 수 있고, 이는 매칭 규칙에 대한 정책을 계속 검색하도록 패킷 필터링 로직에 시그널링할 수 있다. B/F-2와 연관된 위양성율(P2)은 B/F-3과 연관된 위양성율(P3)보다 (훨씬) 더 작은/더 낮은 것으로 제한될 수 있다. 규칙 서브셋(SS-2)이 BLOCK 규칙들로만 구성되기 때문에, B/F-2에 대한 위양성/TRUE 멤버십 테스트 결과는 현재 패킷이 보호되고 있는 네트워크의 합법적인 비즈니스 통신의 부분이라고 가정할 때, 그것이 그러지 않아야 할 때 차단/드롭될 수 있다는 것을 의미하며, 이는 매우 바람직하지 않다. 규칙 서브셋(SS-3)은 MONITOR 규칙들로만 구성되기 때문에, 위양성/TRUE 멤버십 테스트 결과는 합법적인 비즈니스 트래픽의 드롭핑/차단을 초래하지 않는다. 실제로, 위양성율(P2)은 예를 들어 1/1012(1조 분의 1)일 수 있다. 즉, 예를 들어, 실제로 결코 발생하지 않을 수 있는 이벤트인, 1조 개의 합법적인 HTTP GET 요청들 중 하나의 요청만이 실수로 드롭될 수 있다고 예상된다; 반면에 위양성율(P3)에 대한 전형적인 값은, 예를 들어 1/103(천 분의 1) 또는 1/106(백만 분의 1)일 수 있다. 위에서 논의된 바와 같이, 블룸 필터들에 대한 더 낮은 위양성율(P)에 대한 시스템 비용은 메모리 공간 요구 사항들의 증가이다. 그러나, 메모리 공간 요구 사향들은 위양성율(P)의 로그에 따라 변할 수 있다. 따라서, 위양성율이 1/1012인 N개의 요소들의 세트에 대한 블룸 필터는 위양성율들이 100만 배만큼 달라도, 위양성율이 1/106인 동일한 N개의 요소들의 세트에 대한 블룸 필터보다 2배의 메모리 공간만을 요구한다. 이러한 결정들은 패킷 필터링 장치에 제공된 각 메모리와 연관된 용량 임계치들에 기초하여 이루어질 수 있고, 공간-효율 블룸 필터들에 대한 위양성율들을 선택하는 일 예이다. 제4 서브셋(SS-4)은 유형 "IP 어드레스"의 표시자들을 갖는 패킷 필터링 규칙들을 포함할 수 있다. 표시자들은 정책 관리자(SPM)(120)에 의해 계산되는 시간-효율 블룸 필터(B/F-4)에 포함될 수 있다. 제4 서브셋(SS-4)은 표현을 위해 공간-효율 블룸 필터를 사용하지 않을 수 있다.
위양성율은 다음과 같이 선택될 수 있다. 위양성들은 바람직하지 않으며, 따라서 상대적으로 낮은 위양성율들이 바람직하다. 개시된 시스템들 및 방법들의 이점들 중 하나는 메모리/저장 공간 사용의 효율의 개선이다; 그러나 위양성율이 감소할수록 블룸 필터의 크기(예를 들어, 메모리/공간 요구 사항)가 증가하기 때문에, 위양성율들이 불필요하게 낮은 것은 (반대로) 바람직하지 않다. 따라서, 위양성율을 선택하기 위해, 시스템은 위양성의 악영향을 반영해야 한다. 시간-효율 블룸 필터의 경우, 위양성의 악영향은 패킷 필터링 규칙들의 연관된 서브셋이 불필요하게 검색되어, (작은) 시간/레이턴시 비용이 있다는 것이다; 그러나, 위양성에 대한 매칭 규칙을 찾을 수 없기 때문에, 어떤 액션도 현재 패킷에 (에러로) 적용되지 않을 것이며 부작용은 단지 응답의 지연일 뿐이다. 그러나, 공간-효율 블룸 필터의 경우, 위양성의 부작용은 매칭 규칙의 액션(들)이 현재 패킷에 에러로 적용될 것이라는 점이다. 액션이 (합법적인) 패킷을 차단/드롭하거나, 그렇지 않으면 패킷을 수정/변환하는 것이라면, 위양성의 부작용은 상당히 불리한 것으로 간주될 수 있다. 액션들이 (합법적인) 패킷을 허용하지만 후속 사이버 분석을 위해 그 사본을 기록하고 캡처하는 경우, 부작용은 그렇게 심각하지 않다. 이러한 모든 요인들을 고려하여, 위양성율들을 선택하는 방법은 (1) 시간-효율 블룸 필터들에 대한 위양성율들이 공간-효율 블룸 필터들에 대한 위양성율들보다 높을 수 있고; (2) 공간-효율 또는 서브셋 블룸 필터들에 대한 위양성율들이 다음과 같은 연관된 동작(들)에 의해 부분적으로 결정될 수 있도록 선택할 것이다: (a) 액션(들)이 현재 전송중인 패킷을 드롭/차단되도록 할 때, 위양성율이 상대적으로 낮아야 하며, 실제로 위양성이 발생하지 않도록 절대적으로 낮아야 하고(예를 들어, 1/1012 또는 1조분의 1); (b) 액션(들)이 현재 전송중인 패킷을 드롭/차단되도록 하지 않을 때, 위양성율이 상대적으로 더 높을 수 있지만, 또한 시간-효율 블룸 필터들에 대한 위양성율들보다 상대적으로 더 낮을 수 있다. 마지막으로, 범용 블룸 필터에 대한 위양성율은 정의되지 않을 수 있고, 따라서 범용 블룸 필터들에 대해 레이트가 선택될 필요가 없을 수 있다.
도 8의 예시는 일반적으로 도 3의 단계들(3-1 내지 3-4)에 대응된다. 3. 단계(8-0)에서, {도메인 네임, IP 어드레스} 쌍들은 메모리 모듈(TIER-N+1 MEM)(239)에 의해 표현되는 전역적으로 분산된 인터넷(DNS)에 계속 저장될 수 있다. 단계들(8-1, 8-2, 및 8-3)은 도 4의 단계들(4-1, 4-2, 및 4-3)과 실질적으로 유사하며, 이러한 단계들에 대한 상세한 설명들은 여기서 반복되지 않는다. 단계(8-4)에서, 정책 파일 헤더 정보에 기초하여, CPU(220)는 디스크(233)로부터 제1 서브셋(SS-1)을 검색할 수 있다. 상기에 논의된 바와 같이, SS-1은 공간 효율 블룸 필터(B/F-1) 및 처리 로직에 대한 규칙 액션들 및 메타데이터를 포함할 수 있는 관련 정보에 의해 표현된다. B/F-1은 B/F-1의 최종 업데이트 시간에 기초하여 (현재) 인터넷(DNS)에 등록된 모든 도메인 네임들을 포함할 수 있다. 단계(8-5)에서, 메인 메모리(231)에 충분한 가용 용량이 있다고 결정되면, CPU(220)는 B/F-1 및 연관된 정보를 TIER-1 MEM(231)에 저장할 수 있다.
단계(8-6)에서, 정책 파일 헤더 정보에 기초하여, CPU(220)는 디스크(233)로부터 2개의 규칙 서브셋들(SS-2 및 SS-3)을 검색할 수 있다. 상기에 논의된 바와 같이, SS-2 및 SS-3은 공간-효율 블룸 필터들(B/F-2 및 B/F-3) 및 연관된 정보에 의해 표현될 수 있다. 단계(8-7)에서, 메인 메모리(231)에 충분한 가용 용량이 있다고 결정되면, CPU(220)는 B/F-2 및 B/F-3 그리고 SS-2 및 SS-3에 대한 규칙들을 포함할 수 있는 연관된 정보를 TIER-1 MEM(231)에 저장할 수 있다. 단계(8-8)에서, 정책 파일 헤더 정보에 기초하여, CPU(220)는 디스크(233)로부터 서브셋(SS-4)을 검색할 수 있고, SS-4의 패킷 필터링 규칙들과 연관된 (유형 "IP 어드레스"의) 모든 표시자들을 포함하는 시간-효율 블룸 필터(B/F-4)를 계산할 수 있다. 단계(8-9)에서, 메인 메모리(231)에 충분한 가용 용량이 있다고 결정되면, CPU(220)는 B/F-4 및 SS-4를 TIER-1 MEM(231)에 저장할 수 있다. 그런 다음, TIG(200)는 현재 정책에 대한 효율적인 패킷 필터링을 위해 구성될 수 있고 패킷들을 처리하기 시작할 수 있다.
도 9는 도 8에 구성된 TIG(200)에 대한 대표적인 사용 사례 및 연관된 효율적인 패킷 필터링 프로세스를 예시한다. 이 예시는 일반적으로 도 3의 단계들(3-5 내지 3-9)에 대응된다.
단계(9-1)에서, 예를 들어, 네트워크(112)에 결합된 데스크탑 컴퓨터(131)에 의해 호스팅되는 이메일 애플리케이션을 동작시키는 인간 사용자는 피싱 이메일에 있는 URL 링크(http://www.cyber-threat-network.com/download/malware.exe)를 클릭할 수 있다. 컴퓨터(131)는 네트워크(118)에 결합된 서버(136)에 의해 호스팅된 www.cyber-threat-network.com라는 웹 사이트와의 웹/HTTP 세션을 개시할 수 있다. 그러나, 컴퓨터(131)가 웹 사이트에 연결할 수 있기 전에, 데스크탑 컴퓨터(131)는 도메인 네임(www.cyber-threat-network.com)을 IP 어드레스로 분해할 필요가 있을 수 있다. 따라서, 컴퓨터(131)는 인터넷(DNS) 서비스를 향해 (www.cyber-threat-network.com을 그 IP 어드레스로 분해하기 위해) DNS 쿼리 요청을 포함하는 패킷을 생성하고 포워딩할 수 있다. L3/IP 헤더에 포함될 수 있는 패킷의 목적지 IP 어드레스 필드 값, 예를 들어 18.27.36.45은 컴퓨터(131)가 DNS 서비스를 위해 접촉하도록 구성된 DNS 서버의 IP 어드레스일 수 있다. L4/TCP 헤더 내의 패킷의 목적지 포트는 DNS 서비스를 위한 포트인 53일 수 있다. 단계(9-2)에서, TIG(200)의 네트워크 인터페이스(212)는 전송중인 패킷을 수신 및 수집할 수 있고, 필터링을 위해 BUS(210)를 통해 CPU(220)로 패킷을 전송할 수 있다. CPU(220)는 (a) DNS 쿼리 요청으로부터 도메인 네임(www.cyber-threat-network.com), 및 (b) 목적지 IP 어드레스(18.27.36.45)를 추출할 수 있다. 패킷 필터링 로직은 IP 어드레스 표시자들에 대한 필터링 전에 도메인 네임 표시자들에 대해 필터링하도록 구성될 수 있다. 따라서 도메인 네임(www.cyber-threat-network.com)은 정책을 통해 먼저 필터링될 수 있다.
단계(9-3)에서, CPU(220)는 인터넷(DNS)에 현재 등록된 모든 도메인 네임들을 포함하는 (공간-효율) 블룸 필터인, B/F-1과 연관된(그리고 그 내에 포함된) 표시자 유형들을 체크하여, 블룸 필터 표시자 유형들이 www.cyber-threat-network.com의 유형("도메인 네임")과 매치하는지를 결정할 수 있다. B/F-1은 유형 "도메인 네임"의 표시자들을 포함하기 때문에, CPU(220)는 도메인 네임(www.cyber-threat-network.com)이 B/F-1의 멤버인지 여부를 체크한다. www.cyber-threat-network.com이 인터넷(DNS)에 등록되면, 멤버십 테스트는 TRUE 결과를 반환할 수 있다. 단계(9-4)에서, CPU(220)는 요청을 포함하는 패킷을 TIER-N+1 MEM(239)에 의해 표현된, (네트워크 인터페이스(214)를 통해) 인터넷(DNS)를 향해 전송함으로써 DNS 쿼리 요청을 포함하는 패킷을 대응되는 DNS 쿼리 응답을 포함하는 패킷으로 변환할 수 있다. 컴퓨터(220)는 정책을 통한 검색을 중단할 수 있다. 단계(9-5)에서, 인터넷(DNS)는 도메인 네임(www.cyber-threat-network.com)에 대한 분해된 IP 어드레스(예를 들어, 87.65.43.21)를 포함할 수 있는 대응되는 DNS 쿼리 응답을 포함하는 패킷을 생성할 수 있으며, 패킷을 호스트(131)에 전송할 수 있다.
단계(9-6)에서, DNS에서 www.cyber-threat-network.com을 분해하고, 포트 80/HTTP 상에서 컴퓨터(131)와 호스트(136) 사이의 TCP 연결을 확립한 후에(그 패킷들은 매치 없이 TIG(200) 정책을 통해 효율적으로 필터링된 후), 컴퓨터(131)는 http://www.cyber-threat-network.com/download/malware.exe에 대한 HTTP GET 요청을 포함하는 패킷을 136을 향해 포워딩할 수 있다. 단계(9-7)에서, TIG(200)의 네트워크 인터페이스(212)는 전송중인 패킷을 수신 및 수집할 수 있고, 필터링을 위해 수신된 패킷을 BUS(210)를 통해 CPU(220)로 전송할 수 있다. CPU(220)는 패킷으로부터 (a) URL(http://www.cyber-threat-network.com/download/malware.exe), (b) 도메인 네임(www.cyber-threat-network.com), 및 (c) 목적지 IP 어드레스(87.65.43.21)를 추출할 수 있다. CPU(220) 로직은 충실도를 감소시키는 순서로 표시자들에 대한 정책을 검색하도록 구성될 수 있고, 따라서, CPU(220)는 먼저 URL(http://www.cyber-threat-network.com/download/malware.exe)과 매치되는 규칙들에 대한 정책을 검색한 다음, 도메인 네임(www.cyber-threat-network.com)을 검색한 다음, IP 어드레스(87.65.43.21)를 검색할 수 있다.
단계(9-8)에서, CPU(220)는 패킷 필터링 규칙들의 제1 서브셋(SS-1)에 대한 블룸 필터인, B/F-1과 연관된(그리고 그 내에 포함된) 표시자 유입들을 결정하여, 이들이 URL(http://www.cyber-threat-network.com/download/malware.exe)의 표시자 유형(이는 "URL"임)과 매치하는지를 결정할 수 있다. B/F-1이 유형 "도메인 네임"(그러나 "URL"은 아님)의 표시자들을 포함할 때, CPU(220)는 B/F-1에 대한 멤버십 테스트(및 그에 따른 SS-1을 통한 검색)를 스킵할 수 있다. 마찬가지로, 표시자 유형들은 유형 매치 없이 B/F-2, B/F-3 및 B/F-4에 대해 체크될 수 있다. 따라서, http://www.cyber-threat-network.com/download/malware.exe과 매치하는 표시자가 있는 규칙이 존재하지 않는 경우 정책이 검색되지 않을 수 있다. 단계(9-9)에서, CPU는 도메인 네임(www.cyber-threat-network.com)과 매치하는 표시자를 갖는 규칙에 대해 정책을 검색할 수 있다. B/F-1의 멤버십 테스트는 TRUE 값을 반환할 수 있다(예를 들어, www.cyber-threat-network.com이 DNS에 등록됨). 현재 패킷이 DNS 쿼리 요청이 아닌 경우, B/F-1의 멤버십 테스트로부터의 매칭 표시에 기초하여 적용될 규칙 액션이 없으며, 정책 검색이 계속될 수 있다. (공간-효율) B/F-2에서의 멤버십 테스트가 TRUE를 반환하고(예를 들어, http://www.cyber-threat-network.com/download/malware.exe과 매치할 표시자를 갖는 규칙이 존재하고), 연관된 규칙 액션이 BLOCK인 경우, 패킷이 드롭될 수 있고, 이는 멀웨어 다운로드가 발생하는 것을 방지할 수 있다.
도 10은 도 8에 구성된 TIG(200)에 대한 대표적인 사용 사례 및 연관된 효율적인 패킷 필터링 프로세스를 예시한다. 이 구성에서, TIG(200)는 DNS에 등록되지 않은 도메인 네임들을 포함하는 위조 DNS 쿼리 요청들을 검출하고 처리할 수 있다. 이 예시는 일반적으로 도 3의 단계들(3-5 내지 3-9)에 대응된다. (비보안) 네트워크(116)에 결합된 호스트(135)는 정보를 유출하기 위해 위조된 DNS 쿼리 요청을 사용하는 DNS 터널링 방법들을 사용하여 유출/도난될 수 있는 민감한 데이터용 수집 서버로서 기능하도록 탈취(hijacked)될 수 있다. 그러나, IP 어드레스도 호스트(135)와 연관된 임의의 도메인 네임도 CTI 제공자들에게 알려지지 않을 수 있고, 따라서 TIG(200)는 호스트(135)와 네트워크(112)에 결합된 호스트들 사이의 통신들을 검출하기 위한 CTI-유도 패킷 필터링 규칙으로 구성되지 않았을 수 있다. (보안) 네트워크(112)에 결합된 호스트(130)는 호스트(130)에 의해 관리되는, 민감한 기업 정보, 예를 들어, 신용 카드 번호들을 수집하는 멀웨어에 의해 손상될 수 있다. 멀웨어는 DNS 터널링을 사용하여 호스트(135)에 이 정보를 유출하려고 시도할 수 있다.
단계(10-1)에서, 호스트(130) 상에서 실행되는 멀웨어는 호스트(135)(IP 어드레스, 예를 들어, 45.36.27.18를 가짐)로 어드레싱된 패킷 및 실제로 신용 카드 번호를 포함하는 (위조) 도메인 네임("visa5234334164939009.www.legit-domain.com")을 갖는 DNS 쿼리 요청을 포함할 수 있는 목적지 포트(53)(DNS)를 전송할 수 있다. 단계(10-2)에서, TIG(200)의 네트워크 인터페이스(212)는 전송 중인 패킷을 수신 및 수집할 수 있고, 필터링을 위해 BUS(210)를 통해 CPU(220)로 패킷을 전송할 수 있다. CPU(220)는 DNS 쿼리 요청으로부터 (a) 도메인 네임(visa5234334164939009.www.legit-domain.com), 및 (b) 목적지 IP 어드레스(45.36.27.18)를 추출할 수 있다. 패킷 필터링 로직은 IP 어드레스 표시자들을 필터링하기 전에 도메인 네임 표시자들을 필터링하도록 구성될 수 있다. 따라서, visa5234334164939009.www.legit-domain.com은 정책을 통해 먼저 필터링될 수 있다.
단계(10-3)에서, CPU(220)는 현재 인터넷(DNS)에 등록된 모든 도메인 네임들을 포함하는 (공간-효율) DNS 블룸 필터인, B/F-1과 연관된(그리고 그 내에 포함된) 표시자 유형들을 체크하여, 이들이 visa5234334164939009.www.legit-domain.com의 유형("도메인 네임")과 매치하는지를 결정한다. B/F-1은 "도메인 네임" 유형의 표시자들을 포함하기 때문에, CPU(220)는 도메인 네임(visa5234334164939009.www.legit-domain.com)이 B/F-1의 멤버인지 여부를 체크할 수 있다. 위조 도메인 네임(visa5234334164939009.www.legit-domain.com)이 인터넷(DNS)에 등록되지 않았기 때문에, 멤버십 테스트는 FALSE 값을 반환한다. 단계(10-4)에서, CPU(220)는 DNS 쿼리 요청들에 대한 B/F-1의 테스트에 대한 FALSE 결과와 연관된 연산자 또는 액션을 적용할 수 있다. 거짓 결과 액션은 (a) visa5234334164939009.www.legit-domain.com에 대한 DNS 쿼리 요청을 포함하는 현재 패킷을 드롭함으로써, 유출/DNS 터널링 공격을 방지하고; (b) RCODE=3(NXDOMAIN)을 갖는 대응되는 DNS 쿼리 응답을 포함하는 패킷을 생성하는 패킷 변환 함수를 적용하고; (c) 호스트(131)를 향해 DNS 쿼리 응답을 전송하는 것일 수 있다. B/F-1의 테스트에 대한 FALSE 결과에 기초하여, CPU(220)는 정책을 통한 검색을 중단할 수 있다.
도 11은 위조 DNS 요청을 공격 벡터로 사용하는 DDoS 공격의 유형으로부터 인터넷(DNS)를 보호할 수 있는 효율적인 TIG들을 위한 대표적인 사용 사례를 예시한다. 사용 사례의 환경은 도 1로 표현된다. 네트워크들(112 및 114)을 각각 보호하는 TIG들(200 및 250)은 동일한 정책으로 도 8에서와 동일한 방식으로 구성될 수 있다. 도 8에서 구성된 정책은 블룸 필터(B/F-1)와 같은 공간 효율적인 DNS 확률적 데이터 구조로 표현되는 서브셋(SS-1), 및 인터넷(DNS)에 현재 등록되어 있는 모든 도메인 네임들을 포함하는 연관된 정보를 포함한다는 것을 상기한다. 인터넷(DNS)에 대한 공격의 한 유형은 DDoS 공격인데, 이는 많은 전역적으로 분산된 멀웨어-감염 엔드포인트들이 DNS에 등록되지 않은 도메인 네임들을 분해하기 위해 많은 위조 DNS 쿼리 요청들을 전송할 수 있다. 멀웨어는 도메인 네임 생성 알고리즘(DGA)을 사용하여 등록된 도메인 네임들과 매치하지 않을 가능성이 있는 도메인 네임들, 예를 들어 q0e8vqq0y8n.www.legit-site.net을 랜덤으로 생성할 수 있다. DNS는 이러한(분해할 수 없는) 요청들을 분해하려고 시도하는 그 분산형 데이터베이스를 검색할 수 있다. 이러한 위조 요청들의 수가 충분히 많으면, DNS는 위조 요청들을 충족시키려고 노력하면서 합법적인 요청들을 과소평가하여, 합법적인 요청들에 대한 서비스를 거부한다. 많은 인기 있는 애플리케이션(예를 들어, 웹)이 DNS에 따라 달라지기 때문에, DNS에 대한 DDoS 공격이 성공하면 DNS 종속 애플리케이션들에 대한 공격이 성공한다.
네트워크(114)와 같은 DNS 인프라 제공자 네트워크들은 예를 들어, DNS 네임 서버들(132 및 133)에 의해 서비스하기 위한 많은 DNS 쿼리 요청들을 수신하도록 설계 및 구성되며; 따라서, 공격 벡터로서 위조 DNS 요청들을 사용하여 DNS에 대한 DDoS 공격 동안, 이러한 네트워크들은 이러한 위조 DNS 요청들 중 많은 것을 수신할 수 있다. TIG(250)는 합법적인 DNS 요청들을 계속 서비스함으로써 DDoS 공격을 완화시키면서, 이러한 위조 요청들로부터 네트워크(114) 및 인터넷(DNS)의 일부를 보호하도록 도 8에서와 같이 구성될 수 있다. 또한, 도 8에서와 같이 구성되고 네트워크(112)를 보호하는 TIG(200)는, 예를 들어 네트워크(112)에 결합된 멀웨어-감염 호스트(131)에 의해 발행될 수 있는 위조 DNS 요청들이 인터넷(도 1에서 네트워크(110)로 식별됨)으로 전송되고 DNS를 공격하는 것을 방지할 수 있다.
(TIG-보호된) 네트워크(112)에 결합될 수 있는 호스트(131), 및 (보호되지 않은) 네트워크(116)에 결합될 수 있는 호스트들(134 및 135)은, 예를 들어, 네트워크(118)에 결합된 호스트(136)에 의해 명령(악의적인 행위자에 의해 동작)될 때 위조 DNS 요청들을 발행할 수 있는 멀웨어에 의해 감염될 수 있다. 또한, 도 1의 네트워크 환경의 DNS 인프라(도시되지 않음)는, 네트워크들(112 및 116)에 결합된 호스트들로부터 비롯된 DNS 쿼리 요청들이 네트워크(114)에 결합된 DNS 네임 서버들(132 및 133)에 의해 서비스되도록 구성될 수 있다. 예를 들어, 서버들(132 및 133)은 도메인들(example-132.net 및 example-133.net)에 대한 권한 네임 서버들로서 구성될 수 있고, 이 경우 example-132.net 및 example-133.net을 포함하는 도메인 네임들에 대한 DNS 쿼리 요청들은 서버들(132 및 133)로 라우팅될 수 있다.
단계(11-1)에서, 호스트(134)는 도메인 네임(ppk6h0ec.www.example-132.net)을 분해하기 위한 위조 DNS 쿼리 요청을 생성하고 DNS 서버(132)를 향해 전송할 수 있다. 단계(11-2)에서, 호스트(135)는 도메인 네임(61kwrari.www.example-132.net)을 분해하기 위한 위조 DNS 쿼리 요청을 생성하고 DNS 서버(132)를 향해 전송할 수 있으며, 이는 호스트(134)로부터의 요청과 동시에 전송될 수 있다. 단계(11-3)에서, 호스트(130)는 도메인 네임(www.example-132.net)을 분해하기 위한 합법적인 DNS 쿼리 요청을 생성하고 DNS 서버(132)를 향해 전송할 수 있으며, 이는 다른 호스트로부터의 요청들과 동시에 전송될 수 있다. 단계(11-4)에서, 호스트(131)는 도메인 네임(hyqlyn2c.www.example-133.net)을 분해하기 위한 위조 DNS 쿼리 요청을 생성하고 DNS 서버(133)를 향해 전송할 수 있으며, 이는 다른 호스트들로부터의 요청들과 동시에 전송될 수 있다.
단계(11-5)에서, TIG(200)는 (a) 130으로부터 합법적인 DNS 쿼리 요청을 수신 및 수집할 수 있고, (b) B/F-1을 테스트하여 도메인 네임(www.example-132.net)이 DNS에 등록되어 있다고 결정할 수 있으며, (c) DNS 서버(132)를 향해 DNS 쿼리 요청을 포워딩할 수 있다. 단계(11-6)에서, TIG(200)는 (a) 131로부터 위조 DNS 쿼리 요청을 수신 및 수집할 수 있고, (b) DNS 확률적 데이터 구조(B/F-1)를 테스트하여 위조 도메인 네임(hyqlyn2c.www.example-133.net)이 DNS에 등록되어 있지 않다고 결정할 수 있으며, (c) DNS 쿼리 요청(패킷)을 드롭할 수 있고, (d) RCODE=3(NXDOMAIN)을 갖는 대응되는 DNS 쿼리 응답을 생성/도용하기로 결정할 수 있으며, (e) DNS 쿼리 응답을 발신 호스트(131)로 다시 전송할 수 있다. 단계(11-7)에서, TIG(250)는 (a) 134로부터 위조 DNS 쿼리 요청을 수신 및 수집할 수 있고, (b) B/F-1을 테스트하여 위조 도메인 네임(ppk6h0ec.www.example-132.net)이 DNS에 등록되어 있지 않다고 결정할 수 있으며, (c) DNS 쿼리 요청(패킷)을 드롭할 수 있고, (d)는 RCODE=3(NXDOMAIN)을 갖는 대응되는 DNS 쿼리 응답을 도용/생성하기로 결정할 수 있으며, (e) DNS 쿼리 응답을 발신 호스트(134)로 다시 전송할 수 있다. 단계(11-8)에서, TIG(250)는 (a) 135로부터 위조 DNS 쿼리 요청을 수신 및 수집할 수 있고, (b) B/F-1을 테스트하여 위조 도메인 네임(61kwrari.www.example-132.net)이 DNS에 등록되어 있지 않다고 결정할 수 있으며, (c) DNS 쿼리 요청(패킷)을 드롭할 수 있고, (d) RCODE=3(NXDOMAIN)을 갖는 대응되는 DNS 쿼리 응답을 생성하기로 결정할 수 있으며, (e) DNS 쿼리 응답을 발신 호스트(135)로 다시 전송할 수 있다.
단계(11-9)에서, TIG(250)는 (a) 130으로부터 합법적인 DNS 쿼리 요청을 수신 및 수집할 수 있고, (b) B/F-1을 테스트하여 도메인 네임(www.example-132.com)이 DNS에 등록되어 있다고 결정할 수 있으며, (c) DNS 쿼리 요청을 DNS 서버(132)를 향해 포워딩할 수 있다. 단계(11-10)에서, DNS 서버(132)는 (a) 130으로부터 DNS 쿼리 요청을 수신하여 www.example-132.com을 분해할 수 있고, (b) www.example-132.com에 할당된 IP 어드레스(12.34.56.78)에 대한 DNS를 검색함으로써 요청을 서비스할 수 있으며, (c) 대응되는 DNS 쿼리 응답을 생성할 수 있고, (d) DNS 쿼리 응답을 발신 호스트(130)로 다시 전송할 수 있다. 도메인 네임(B/F-1)의 테스트에 기초하여, TIG들(200 및 250)은 위조 DNS 쿼리 요청들이 등록되지 않은 도메인 네임들을 분해하려고 시도하는 임의의 DNS 리소스들을 소모/낭비하는 것을 방지할 수 있다. 서비스 거부 공격은 교정/방지될 수 있다. 따라서, DNS는 합법적인 DNS 쿼리 요청들을 서비스하기 위해 완전히 이용 가능할 수 있다.
도 12는 정책이 3개의 서브셋들로 파티셔닝될 때 TIG가 효율적인 패킷 필터링을 위해 구성될 수 있는 일 실시예 및 관련 이벤트 시퀀스를 예시하며, 여기서 파티셔닝은 표시자들의 유형들에 의해 그리고 규칙들에 대한 패킷 변환 함수들의 유형들에 의해 결정된다. 시간-효율 블룸 필터는 전체 세트, 또는 모든 3개의 서브셋들의 결합과 연관될 수 있다. 각 서브셋은 공간-효율 블룸 필터와 연관(및 그에 의해 표현)될 수 있다. 모든 블룸 필터들은 블룸 필터의 유형(예를 들어, 시간-효율 또는 공간-효율)에 기초하여 그리고 서브셋들의 규칙들과 연관된 패킷 변환 함수들(예를 들어, BLOCK 또는 MONITOR)의 유형에 기초하여 선택된 위양성율 값을 가질 수 있다. 서브셋들 및 연관된 블룸 필터들은 동일한 메모리 모듈에 저장될 수 있다. 이 예시는 일반적으로 도 3의 단계들(3-1 내지 3-4)에 대응된다.
단계(12-1)에서, SPM(120)은 전송 중인 패킷들에 대해 TIG(200)에 의해 시행될 다음 정책을 포함하는 파일을 TIG의 관리 인터페이스(MGMT I/F)(240)(예를 들어, 인터넷으로 식별될 수 있는 네트워크(110)를 통해)로 전송할 수 있다. 정책 파일은, 패킷 필터링 규칙들의 세트를 서브셋들로 파티셔닝하는 방식, 각 서브셋에 적용될 효율의 유형 또는 유형들, 정책의 크기, 각 서브셋의 크기, 및 각 서브셋에서의 표시자들의 유형들과 같은 정보를 포함할 수 있는, 정책 디스크립터를 갖는 헤더를 포함할 수 있다.
단계(12-2)에서, MGMT I/F(240)는 (버스(210)를 통해) 정책 파일을 TIER-3 MEM(233)로 전송할 수 있으며, 이는 로컬 기계적/스피닝 자기 디스크(비휘발성, 비교적 큰 용량, 비교적 저렴, 비교적 느린 판독/기록 액세스)로 식별될 수 있다. 단계(12-3)에서, CPU(220)는 디스크(233)로부터 정책 파일 헤더를 검색할 수 있다. 정책 파일 헤더는 정책이 어떻게 규칙들의 서브셋들로 파티셔닝되는지, 어떤 효율들이 적용될 수 있는지, 그리고 서브셋들이 (필요한 경우, 크기 정보에 기초하여) 다수의 메모리 모듈들에 걸쳐 어떻게 분산될 수 있는지를 나타낼 수 있다. CPU(220)가 정책 헤더 파일 정보를 처리함에 따라, CPU는 정보의 부분들을 온-칩 캐시 메모리로 식별될 수 있는 TIER-0 MEM(230)과 같은 메모리의 다른 부분들 및 온-칩 PCB 메인 메모리로 식별될 수 있는 TIER-1 MEM(231)에 일시적으로 저장할 수 있다. 이러한 임시 저장 이벤트들은 도시되지 않는다.
정책 디스크립터 데이터는 복수의 정보를 지정할 수 있다. 정책 디스크립터 데이터는 SS-1이 패킷 필터링 규칙들의 서브셋임을 지정할 수 있고, 여기서 각 규칙은 (a) 쌍 {CA-식별자, 일련 번호}인 인증서-식별자 유형의 위협 표시자; (b) 블록 패킷 연산자 또는 변환 함수; 및 (c) "<threat-type = revoked certificate>"와 같은 위협 메타데이터를 포함할 수 있다. SS-1은 위양성율 P = 10-12를 사용하여 공간-효율 블룸 필터(B/F-1)로서 인코딩될 수 있다. 정책 디스크립터 데이터는 SS-2가 패킷 필터링 규칙들의 서브셋임을 지정할 수 있고, 여기서 각 규칙은 (a) 도메인 네임 유형의 위협 표시자; (b) 블록 패킷 연산자 또는 변환함수; 및 (c) "<threat-type = credentials fishing site>"와 같은 위협 메타데이터를 포함할 수 있다. SS-2는 위양성율 P = 10-12를 사용하여 공간-효율 블룸 필터(B/F-2)로서 인코딩될 수 있다. 정책 디스크립터 데이터는 SS-3이 패킷 필터링 규칙들의 서브셋임을 지정할 수 있고, 여기서 각 규칙은 (a) 도메인 네임 유형의 위협 표시자; (b) MONITOR 패킷 연산자 또는 변환 함수; 및 (c) "<threat-type = malware CDN>"과 같은 위협 메타데이터를 포함할 수 있다. SS-3은 위양성율 P = 10-6을 사용하여 공간-효율 블룸 필터(B/F-3)로 인코딩될 수 있다. 정책 디스크립터 데이터는 SS-1, SS-2, 및 SS-3의 모든 위협 표시자들과 연관되고 이를 포함하고 위양성율 P = 10-3을 갖는 시간-효율 블룸 필터(B/F-ALL)를 지정할 수 있다.
단계(12-4)에서, 정책 파일 헤더 정보에 기초하여, CPU(220)는 디스크(233)로부터 제1 서브셋(SS-1)을 검색할 수 있다. CPU(220)는 SS-1에서 (인증서-식별자 유형의) 모든 표시자들을 추출할 수 있고, 공간-효율 블룸 필터(B/F-1)(위양성율 P = 10-12을 가짐) 및 시간-효율 블룸 필터(B/F-ALL)(위양성율 P = 10-3을 가짐) 모두에 표시자들을 삽입할 수 있다. CPU(220)는 블룸 필터(B/F-1)를 패킷 변환 함수(BLOCK), 위협 메타데이터 "<threat-type = revoked certificate>", 및 인증서-식별자의 표시자 유형과 연관시킬 수 있다. CPU(220)는 인증서-식별자의 표시자 유형을 B/F-ALL과 연관시킬 수 있다. 단계(12-5)에서, CPU(220)는 메인 메모리(231)가 (SS-1을 나타내는) 블룸 필터(B/F-1)를 저장하기에 충분한 잔여 가용 용량을 갖는 것으로 결정할 수 있다. 용량 결정에 기초하여, CPU(220)는 공간-효율 블룸 필터(B/F-1)를 메인 메모리(231)에 저장할 수 있다.
단계(12-6)에서, 정책 파일 헤더 정보에 기초하여, CPU(220)는 디스크(233)로부터 제2 서브셋(SS-2)를 검색할 수 있다. CPU(220)는 SS-2에서 (도메인-이름 유형의) 모든 표시자들을 추출할 수 있고, 공간-효율 블룸 필터(B/F-2) 및 시간-효율 블룸 필터(B/F-ALL) 둘 모두에 표시자들을 삽입할 수 있다. CPU(220)는 블룸 필터(B/F-2)를 패킷 변환 함수(BLOCK), 위협 메타데이터 "<threat-type = credentials fishing site>" 및 도메인-네임의 표시자 유형과 연관시킬 수 있다. CPU(220)는 도메인-네임의 표시자 유형을 B/F-ALL과 연관시킬 수 있다. 이 동작 후, B/F-ALL은 두 가지 유형의 표시자들(인증서-식별자 및 도메인-네임)와 연관된다. 단계(12-7)에서, CPU(220)는 메인 메모리(231)가 (SS-2를 나타내는) 블룸 필터(B/F-2)를 저장하기에 충분한 잔여 가용 용량을 갖는 것으로 결정할 수 있다. 용량 결정에 기초하여, CPU(220)는 공간-효율 블룸 필터(B/F-2)를 메인 메모리(231)에 저장할 수 있다.
단계(12-8)에서, 정책 파일 헤더 정보에 기초하여, CPU(220)는 디스크(233)로부터 제3 서브셋(SS-3)를 검색할 수 있다. CPU(220)는 SS-3에서 (도메인-이름 유형의) 모든 표시자들을 추출할 수 있고, 공간-효율 블룸 필터(B/F-3) 및 시간-효율 블룸 필터(B/F-ALL) 둘 모두에 표시자들을 삽입할 수 있다. CPU(220)는 블룸 필터(B/F-3)를 패킷 변환 함수(MONITOR), 위협 메타데이터 "<threat-type = malware CDN>", 및 도메인-이름의 표시자 유형과 연관시킬 수 있다. CPU(220)는, 상기 단계(12-6)에서 논의된 바와 같이, 도메인-네임의 표시자 유형이 B/F-ALL과 이미 연관되었다고 결정할 수 있다. 단계(12-9)에서, CPU(220)는 메인 메모리(231)가 (SS-3을 나타내는) 블룸 필터(B/F-3)를 저장하기에 충분한 잔여 가용 용량을 갖는 것으로 결정할 수 있다. 용량 결정에 기초하여, CPU(220)는 공간-효율 블룸 필터(B/F-3)를 메인 메모리(231)에 저장할 수 있다. 단계(12-10)에서, CPU(220)는 메인 메모리(231)가 블룸 필터(B/F-ALL)(SS-1, SS-2 및 SS-3의 모든 위협 표시자들을 포함함)를 저장하기에 충분한 잔여 가용 용량을 갖는 것으로 결정할 수 있다. 따라서, CPU(220)는 시간-효율 블룸 필터(B/F-ALL)를 메인 메모리(231)에 저장할 수 있다. 정책의 모든 규칙 서브셋들이 처리되었다는 결정에 기초하여, TIG(200)는 현재 정책에 대한 효율적인 패킷 필터링을 위해 구성되도록 결정될 수 있고, 필터링을 위해 패킷들을 수신하기 시작할 수 있다.
도 13은 도 12에서 구성된 TIG(200)에 대한 대표적인 사용 사례 및 연관된 효율적인 패킷 필터링 프로세스를 예시한다. 이 예시는 일반적으로 도 3의 단계들(3-5 내지 3-9)에 대응된다. 도 13에서 사용되는 TLS 프로토콜의 버전은 일반적으로 TLS 1.2에 대응될 수 있다.
단계(13-1)에서, 예를 들어, 네트워크(112)에 결합된 데스크탑 컴퓨터(130)에 의해 호스팅되는 웹 브라우저를 동작시키는 인간 사용자는 네트워크(116)에 결합된 서버(134)에 의해 호스팅되는 www.enterprise-xyz.com라는 웹 사이트와의 (보안) 웹/HTTPS 세션을 개시할 수 있다. 호스트(130)는 DNS에서의 www.enterprise-xyz.com을 IP 어드레스(예를 들어, 12.34.56.78)로 분해할 수 있고, 포트 443/HTTPS(도 13에 도시되지 않음) 상의 130과 134 사이의 TCP 연결을 확립할 수 있다. CPU(220)는 이러한 패킷들의 L3 헤더들로부터 IP 어드레스들을 추출하고 정책을 검색함으로써 이러한 패킷들을 필터링할 수 있다; 그러나, B/F-ALL이 임의의 IP-어드레스 표시자들을 포함하지 않을 때, CPU(220)는 이러한 IP 어드레스들에 대한 정책을 검색하지 않을 수 있다. 컴퓨터(130)는 TLS ClientHello 메시지를 포함하는 웹 사이트(134)를 향해 패킷을 포워딩함으로써 TLS 터널 셋업 핸드쉐이크를 개시할 수 있다.
단계(13-2)에서, TIG(200)의 네트워크 인터페이스(212)는 전송 중인 패킷을 수신 및 수집할 수 있고, 이를 필터링을 위해 BUS(210)를 통해 CPU(220)로 전송할 수 있다. CPU(220)는 ClientHello 메시지의 SNI 필드로부터 도메인 네임(www.enterprise-xyz.com)을 추출할 수 있다. 단계(13-3)에서, CPU(220)는 필터(B/F-ALL)가 TRUE 값을 반환할 수 있는 도메인-네임 유형의 표시자들을 포함하는지를 결정할 수 있다. CPU(220)는 www.enterprise-xyz.com이 B/F-ALL의 멤버인지 테스트할 수 있고, 이는 FALSE 값을 반환할 수 있다. 도메인 네임이 정책에 존재하지 않음을 나타내는 false 값에 기초하여, CPU(220)는 정책을 통한 검색을 스킵할 수 있다. 단계(13-4)에서, CPU(220)는 패킷을 BUS(210)를 통해 네트워크 인터페이스(214)로 전송할 수 있다. 단계(13-5)에서, 네트워크 인터페이스(214)는 패킷을 타겟 목적지 웹 사이트(www.enterprise-xyz.com)를 향해 네트워크(110)로 포워딩할 수 있고, 이는 IP 어드레스(12.34.56.78)를 갖는 서버(134)에 의해 호스팅될 수 있다. 서버(134)는 포트(443)에서 패킷을 수신 및 수집할 수 있고, ClientHello 메시지를 처리할 수 있고, TLS ServerHello 메시지를 포함하는 패킷을 호스트(130)(도 13에 도시되지 않음)로 다시 전송함으로써 ClientHello에 응답할 수 있다.
단계(13-6)에서, 호스트(134)는 TLS 인증서 메시지를 포함하는 패킷을 호스트(130)를 향해 전송할 수 있다. 패킷은 (네트워크 인터페이스(214)를 통해) TIG에 의해 수신 및 수집되고 CPU(220)에 의해 처리될 수 있다. CPU(220)는 인증서로부터 "발행자 이름" 및 "일련 번호" 값들을 추출하고 이들 값들을 인증서-ID와 연관시킬 수 있다. 단계(13-7)에서, CPU(220)는 B/F-ALL이 필터링된 패킷과 연관된 인증서-식별자 유형의 표시자들을 포함하는지 여부를 결정할 수 있고, 이는 TRUE 결과를 반환할 수 있다. CPU(220)는 B/F-ALL이 필터링된 패킷과 연관된 인증서-ID를 포함하는지 여부를 결정할 수 있고, 이는 TRUE 결과를 반환할 수 있다. TRUE 결과에 기초하여, CPU(220)는 B/F-ALL과 연관된 규칙들을 테스트하여 테스트되고 있는 패킷 데이터와 연관된 임의의 규칙들 및 동작들을 결정할 수 있다. 단계(13-8)에서, CPU(220)는 B/F-1이 인증서-식별자 유형의 표시자들을 포함하는지 여부를 결정할 수 있고, 이는 TRUE 결과를 반환할 수 있다. TRUE 결과에 기초하여, CPU(220)는 B/F-1이 인증서-ID를 포함하는지 여부를 결정할 수 있고, 이는 TRUE 결과를 반환할 수 있다. 인증서-ID와 관련된 TRUE 결과에 기초하여, www.enterprise-xyz.com에 대한 인증서는 인증서를 발급한 인증 기관에 의해 해지된 것으로 결정될 수 있으며, 시스템은 사이트 관리자들이 아직 새로운(해지되지 않은) 인증서를 취득 및 설치되지 않았다고 결정할 수 있다.
단계(13-9)에서, CPU(220)는 B/F-1과 연관된 패킷 변환 함수(BLOCK)를 적용할 수 있고, 이는 패킷이 드롭되도록 할 수 있으며, TCP RST 패킷이 호스트(130)에 (네트워크 인터페이스(212)를 통해) 전송되도록 하여 TCP 연결을 종료함으로써, TLS 터널 셋업 핸드쉐이크 프로세스를 중단시킬 수 있다.
본 개시에 따라, 도 1과 유사할 수 있는 도 14는 대표적인 네트워크 환경(100)을 도시한다. 네트워크 환경(100)은 위조 DNS 요청들을 공격 벡터들로서 사용할 수 있는 공격들로부터, 공중 인터넷에 의해 상호연결될 수 있는 공중 인터넷 및 사설 네트워크들과 같은, 인터네트워크의 도메인 네임 시스템(DNS)을 보호하도록 작용하는 DNS 공격 방지 시스템을 포함할 수 있다. 도 1에서와 같이, 네트워크(110)는 네트워크들(112, 114, 116, 118, 및 120)(도 1과 관련하여 설명된 것과 동일하거나 유사할 수 있음)을 상호 연결할 수 있는 공중 인터넷일 수 있다.
네트워크(112)는 복수의 호스트들을 갖는 사설 기업 네트워크일 수 있다. 복수의 호스트들은 인터넷을 통해 원격으로 관리 및 운영될 수 있는 보안 카메라 또는 어플라이언스와 같은 적어도 하나의 "사물 인터넷"(IoT) 장치(IOT)(140) 및 개인 식별 정보(PII) 호스트(PII)(141)를 포함할 수 있다. 호스트(IOT)(140) 및 네트워크(112)에 결합된 다른 IoT 장치들(도시되지 않음)은 특정 권한 네임 서버들을 공격하도록 설계된 도메인 네임들(예컨대, 아래에 설명되는 네트워크(116)에 결합된 호스트(NS)(144))와 같은)로 많은 위조 DNS 요청들을 발행함으로써 DNS에 대한 공격들을 생성할 수 있는 멀웨어에 감염되었을 수 있다. 호스트(PII)(141)는 개인 식별 정보(PII), 신용 카드 정보 등과 같은 민감한 정보를 관리하는 개인용 컴퓨터 또는 서버를 나타낸다. 호스트(PII)(141)는 신용 카드 정보를 수집하는 멀웨어에 의해 감염될 수 있고, 감염된 호스트는 DNS 터널링 방법을 사용하여 네트워크(170)(하기에 설명됨)에 결합된 수집 서버(collection server host; CSVR)(148)로 정보를 유출할 수 있다. 두 공격 모두 DNS에 등록되어 있지 않을 수 있는 도메인 네임들로 요청들을 발행할 수 있다.
네트워크(114) 및 결합된 호스트들(IOT(142) 및 PII(143))은 네트워크(112) 및 호스트들(IOT(140) 및 PII(141))과 유사하게 구성되고 유사하게 손상될 수 있다. 그러나, 네트워크(114)는 네트워크(114)와 인터넷(110) 사이의 경계에 또는 그 근처에 위치된 DNS 게이트키퍼(DNS-G/K)(150)로 구성될 수 있다. 네트워크(114)는 DNS-G/K(150)가 네트워크(114)의 경계를 넘는 모든 DNS 요청들을 필터링하고 어느 DNS 요청들이 DNS에 액세스할 수 있는지를 제어할 수 있도록 구성될 수 있다.
네트워크(116)는 DNS 인프라 제공자 조직(DNS infrastructure provider organization; DIPO-X)에 의해 동작될 수 있다. 권한 네임 서버들(NS(144) 및 NS(145))은 도메인들(example-144.com 및 example-145.com)에 대한 DNS 권한 네임 서버들일 수 있으며, DIPO-X는 연관된 등록자 조직을 대신하여 동작할 수 있다. 네임 서버들(NS(144) 및 NS(145)) 둘 모두는, 이러한 서버들이 관리하는 모든 등록된 도메인 네임들의 목록들을 포함할 수 있는 이들의 영역 파일들을 인가된 요청자들에게 제공하도록 구성될 수 있다. 네트워크(116)는 네트워크(116)와 인터넷(110) 사이의 경계에 또는 그 근처에 위치된 DNS 게이트키퍼(DNS-G/K)(180)를 가질 수 있다. 네트워크(116)는 DNS 게이트키퍼(DNS-G/K)(180)가 경계를 넘는 모든 DNS 요청들을 필터링하고, 어느 DNS 요청들이 example-144.com에 대한 DNS 네임 서버(권한 네임 서버(NS)(144)) 및 example-145.com에 대한 DNS 네임 서버(권한 네임 서버(NS)(145))에 액세스할 수 있는지를 제어할 수 있다.
네트워크(118)는 DNS 인프라 제공자 조직(예를 들어, DNS infrastructure provider organization; DIPO-Y)에 의해 동작될 수 있다. 호스트 권한 네임 서버들(NS(146) 및 NS(147))은 도메인들(example-146.com 및 example-147.com)에 대한 DNS 권한 네임 서버들일 수 있으며, DIPO-Y는 관련 등록자 회사들을 대신하여 동작할 수 있다. 네임 서버들(NS(146) 및 NS(147)) 둘 모두는, 이러한 서버들이 관리하는 모든 등록된 도메인 네임들의 목록들을 포함할 수 있는 이들의 영역 파일들을 인가된 요청자들에게 제공하도록 구성될 수 있다. 네트워크(118)는 어느 DNS 요청들이 예를 들어, example-146.com에 대한 DNS 네임 서버(권한 네임 서버(NS)(146)) 및 example-147.com에 대한 DNS 네임 서버(권한 네임 서버(NS)(147))에 액세스할 수 있는지를 제어하는 DNS 게이트키퍼를 가질 필요가 없다.
네트워크(170)는 적어도 하나의 악의적인 행위자에 의해 동작될 수 있다. 네트워크(170)는 위조 DNS 요청들에 의해 유출된 데이터를 수집할 수 있는 수집 서버 호스트(collection server host; CSVR)(148)를 포함할 수 있고, DNS에 대해 DDoS 공격들을 개시하도록 감염된 장치들에 지시하는 봇넷(botnet) 커맨드 및 제어 프로세스를 실행할 수 있는 봇넷 커맨드 및 제어 호스트 시스템(CNC)(149)를 포함할 수 있다. 수집 서버(CSVR)(148) 상에서 실행되는 악성 데이터 수집 프로세스는 DNS에 대해 잘 알려진 포트인, 포트(53) 상에서 위조 DNS 요청들을 수신할 수 있다. 수집 서버(CSVR)(148)의 공중 IP 어드레스는, 다음의 예들의 경우, 21.43.65.87일 수 있다. 네트워크(170)와 연관된 네트워크 방화벽(도시되지 않음)은 수집 서버(CSVR)(148)의 목적지 IP 어드레스(21.43.65.87) 및 목적지 포트(53)를 갖는 인바운드(inbound) 패킷들을 허용하도록 구성될 수 있다. 네트워크(170)는 DNS로의 액세스를 제어하는 DNS 게이트키퍼를 갖지 않을 수 있다.
시스템 관리 서버로서 작용할 수 있는 블룸 필터 DNS 필터 관리자(Bloom filter DNS Filter Manager; DFM)(160)는 인터넷(110)을 인터페이스하는 사설 네트워크(도시되지 않음)에 결합된 호스트로서 실행될 수 있다. DFM(160)은 DNS 권한 네임 서버들(NS)(144 내지 147)과 같은 모든 DNS 권한 네임 서버들로부터, 및/또는 연관된 도메인 목록 애그리게이터(aggregator)들(도 1에 도시되지 않음)로부터, 그리고 등록된 도메인 네임들의 다른 소스들로부터 등록된 도메인 네임들의 목록들을 지속적으로 수집할 수 있다. DFM(160)은 등록된 모든 도메인 네임들을 인코딩하여 적어도 하나의 데이터 구조(DNS-REG)에 저장할 수 있고, 각 블룸 필터(DNS-REGPX)는 연관된 위양성율(PX)을 가질 수 있다. DFM(160)은 데이터 구조들 또는 블룸 필터들을 가입 DNS 게이트키퍼들(예를 들어, DNS-G/K(150) 및 DNS-G/K(180))에 분산시킬 수 있다.
DFM(160)은 가입 DNS 게이트키퍼들(예를 들어, DNS-G/K들(150 및 180))에 의해 공급되거나 업로드되는 정보를 관리하기 위한 기능들을 포함할 수 있다. 이 정보는 가입 DNS 게이트키퍼들(DNS-G/K들(150 및 180)에 의해 검출된 등록되지 않은 도메인 네임들 및 연관된 메타데이터(예를 들어, 공격 유형 추정치, 타임스탬프, 레이트 추정치, 발신 호스트, DNS-G/K ID 등)를 포함할 수 있고, 이들은 다른 공격들을 결정하거나 검출하기 위한 위협 인텔리전스로서 사용될 수 있다. 정보는 또한 DNS-G/K들(150 및 180)에 의해 관찰되는 DNS 요청들 및 응답들에 대한 통계 및 DNS-G/K들(150 및 180)에 대한 요소 관리 정보를 포함할 수 있다. DFM(160)은 또한 위협 인텔리전스 제공자, 사이버 분석 애플리케이션, 네트워크 요소 관리자, DNS 모니터링 애플리케이션, DNS 보호 애플리케이션, 인터넷 보호 애플리케이션 등과 같은 가입 애플리케이션들(도 1에 도시되지 않음)에 DNS-G/K들(150 및 180)로부터 수집된 정보를 제공하기 위한 기능들을 포함할 수 있다.
도 14(및 아래에서 논의되는 도 15)에 도시된 DNS-G/K(150) 및 DNS-G/K(180)는 TIG(200) 및/또는 TIG(250)와 같은 네트워크 장치의 전부 또는 일부일 수 있지만, 반드시 그럴 필요는 없다. 일반적으로, DNS-G/K(150) 및 DNS-G/K(180)는, 이에 제한되는 것은 아니나, 상기에 또는 하기에 논의되는 이러한 컴퓨팅 장치들을 포함하는 임의의 컴퓨팅 장치 상에서 실행될 수 있다.
도 15 는 본 개시의 양태들을 지원하는 DNS-G/K(150) 및/또는 DNS-G/K(180)에 대한 대표적인 시스템 컴포넌트들 다이어그램을 도시한다. 도 15에 도시된 DNS-G/K(150)는 도 1에 도시된 DNS-G/K(180) 및/또는 DNS-G/K(150)와 동일하거나 유사할 수 있다. DNS-G/K(150) 컴포넌트들은 DNS-G/K(150)를 구성하고 동작시키기 위한 로직을 실행할 수 있는 프로세서(CPU)(1520), 네트워크들(114 및 110)을 각각 인터페이스하기 위한 네트워크 인터페이스들(1512 및 1514), 네트워크(110)에 연결되는 관리 인터페이스(management interface; MGMT I/F)(1540), 데이터 구조(예를 들어, 블룸 필터)(DNS-REG)(1531)를 포함할 수 있는 메인 메모리 모듈(MAIN-MEMORY)(1530), 및 영구 저장을 위한 메모리 저장소(MEMORY-STORE)(1532)를 포함할 수 있다. 컴포넌트들은 DNS-G/K(150)의 컴포넌트들 사이에서 정보를 전송하는 데 사용될 수 있는 버스(BUS)(1510)에 연결될 수 있다. 블룸 필터(DNS-REG)(1531)는 관리 인터페이스(1540) 및 네트워크(110)를 통해 DFM(160)에 의해 DNS-G/K(150)에 제공될 수 있다. DNS-G/K(150)의 시스템 컴포넌트들은 동일한 호스트 상에서 실행되는(예를 들어, 함께 상주하는) 프로세스들 또는 애플리케이션들, 상이한 호스트들에서 실행되는 프로세스들, 하이퍼바이저와 같은 가상 인프라 상에서 실행되는 프로세스들, 또는 컴포넌트들 및 소프트웨어의 다른 배열의 임의의 조합일 수 있다. 마찬가지로, 버스(1510)는 단지 인쇄 회로 기판(PCB)의 통합된/임베디드된 데이터 버스일 뿐만 아니라, 예를 들어, 임의의 조합으로, L2/L3 스위칭된 네트워크, L3 라우팅된 네트워크, 논리 컴포넌트들을 연결하는 L2/L3 네트워크 링크들 등일 수 있다. 데이터 버스는 임의의 조합으로 유선, 무선, 물리적, 논리적, 가상, 소프트웨어 정의 등일 수 있다. 네트워크 인터페이스들(1512 및 1514)은 L3 투명(L3 transparent)일 수 있다. 네트워크 인터페이스들(1512 및 1514)은 할당된 IP 어드레스들을 갖지 않을 수 있고, L3 라우팅 프로세스들에 참여하지 않을 수 있다. 유사하게, 네트워크 인터페이스들(1512 및 1514)은 L2 투명(L2 transparent)일 수 있다. 네트워크 인터페이스들(1512 및 1514)은 할당된 MAC 어드레스들을 갖지 않을 수 있고, 따라서 ARP 프로세스들에 참여하지 않을 수 있다. 관리 인터페이스(MGMT I/F)(1540)는 DFM(160)과 같은 관리 장치들과 통신하기 위해 할당된 IP 어드레스를 가질 수 있다.
도 16은 DNS-G/K(150)의 대표적인 동작 개념을 위한 흐름도이다. 단계(16-1)에서, DNS-G/K(150)는 DFM(160)에 의해 제공되는 데이터 구조(예를 들어, 블룸 필터)(DNS-REG)(1531)를 선택할 수 있고, 블룸 필터(DNS-REG)(1531)를 다운로드하여 그의 메인 메모리(MAIN-MEMORY)(1530)에 저장할 수 있다. 블룸 필터(DNS-REG)(1531)는 DFM(160)에 이용 가능하거나 그에 의해 결정되는 바와 같이, DNS에 현재 등록된 모든 도메인 네임들을 포함할 수 있다. DFM(160)은 DNS 게이트키퍼들에 의한 사용을 위해 DNS-REG(1531)의 다수의 버전들을 제공할 수 있으며, 이는 모든 등록된 도메인 네임들의 세트를 저장하기 위한 위양성율들 및 대응되는 메모리 요건들에 의해 특징지어질 수 있다. DNS-REG(1531)의 버전들은 또한 생성 시간에 의해 특징지어질 수 있고, DNS-REG(1531)의 선택 및 다운로드는 DNS-G/K(150)의 업데이트 프로세스의 부분일 수 있다. 블룸 필터(예를 들어, DNS-REG(1531))는 연관된 위양성율(P)에 기초하여 및/또는 DNS-REG(1531)에 도메인 네임들의 세트를 저장하기 위한 대응되는 메모리 요건들에 기초하여 DNS-G/K(150)에 의해 선택될 수 있다. 단계(16-1)에서, DNS-G/K(150)는 또한 단계들(16-6, 16-7, 및 16-8)에서 수집된 정보를 DFM(160)에 업로드할 수 있다. 업로드는 업데이트 프로세스의 일부일 수 있다. 업로드는 DNS-G/K(150)에 의해 검출된 불량, 위조, 또는 등록되지 않은 도메인 네임들과 같은 데이터 및 연관된 메타데이터(예를 들어, 타임스탬프들, 발신 호스트 식별자들, 추정된 공격 유형, 레이트 추정치들 등)를 포함할 수 있으며, 이들은 예를 들어 위협 인텔리전스로서 그리고 위협 인텔리전스 보고들에서 사용될 수 있다. 업로드 데이터는 DNS-G/K(150)에 의해 관찰된 DNS 요청들 및 응답들에 대한 통계들, 및 DNS-G/K(150)가 DNS에 등록될 수 있지만 (예를 들어, 동기화 래그로 인해) 블룸 필터(DNS-REG)(1531)의 로컬 인스턴스에 포함되지 않을 수 있는 도메인 네임들을 포함할 수 있다. 이러한 도메인 네임들은 도 17의 단계(17-12)에서 DNS-G/K(150)에 의해 결정될 수 있다(아래에 설명됨). DNS-G/K(150) 요소 관리 정보와 같은 다른 정보도 업로드될 수 있다.
단계(16-2)에서, DNS-G/K(150)는 네트워크(110)를 향해 포워딩되도록 의도될 수 있는 전송 중인 패킷을 네트워크(114)로부터 수신할 수 있다. DNS-G/K(150)는 또한 네트워크(110)로부터 네트워크(114)를 향해 반대 방향으로 전송되는 패킷들을 처리할 수 있지만, 예시적인 목적을 위해, 오직 하나의 방향만이 기술된다. 단계(16-3)에서, DNS-G/K(150)는 패킷이 DNS 쿼리 요청을 포함하는지를 결정할 수 있다. 패킷이 DNS 쿼리 요청을 포함하지 않으면, 단계(16-4F)에서, 패킷은 네트워크(110)로 포워딩될 수 있고, DNS-G/K(150)는 추가 패킷들을 처리하기 위해 단계(16-2)로 다시 회귀된다. 패킷이 DNS 쿼리 요청을 포함하면, 단계(16-4T)에서, QNAME 필드에 포함될 수 있는 도메인 네임이 추출될 수 있다.
단계(16-5)에서, DNS-G/K(150)는 도메인 네임이 블룸 필터(예를 들어, DNS-REG(1531))에 포함된 세트의 멤버인지를 테스트할 수 있다. DNS-REG(1531)는 DFM(160)에 따른 최종 업데이트에 기초하여, DNS에 현재 등록된 모든 도메인 네임들의 세트를 포함할 수 있다. 멤버십 테스트가 TRUE를 반환하거나, 네임이 DNS에 등록된 것으로 결정될 때, 단계(16-6T)에서, 패킷 및 연관된 DNS 요청들 및 메타데이터는 분석 및 통계 목적들을 위해 기록되고 MEMORY-STORE(1532)에 저장될 수 있다. 추가로, 모든 DNS 요청들의 레이트에 대한 불량, 위조, 또는 등록되지 않은 도메인 네임들의 레이트의 비율 및/또는 모든 DNS 요청들의 레이트에 대한 불량, 위조, 또는 등록되지 않은 도메인 네임들(DNS) 요청들의 레이트의 변화율의 비율은 DNS-G/K(150)에 의해 업데이트될 수 있고, 패킷은 네트워크(110)로 포워딩될 수 있고, DNS-G/K(150)는 추가 패킷들을 처리하기 위해 단계(16-2)로 다시 회귀할 수 있다.
멤버십 테스트가 FALSE를 변환할 때, 및/또는 네임이 DNS에 등록되지 않은 것으로 결정될 때 그리고 DNS 요청이 불량, 위조, 또는 등록되지 않은 도메인 네임들과 연관된다고 결정될 때, 단계(16-6F)에서, 패킷은 드롭되거나 차단될 수 있다. 패킷 및 연관된 정보 및 메타데이터(예를 들어, 도메인 네임, 시간, 위치, 방향, 발신지, 공격 유형 추정치, 레이트 추정치 등)는 통계 목적으로 기록될 수 있고, 패킷 및 연관된 정보 및 메타데이터는 기록 및/또는 캡처될 수 있으며, 패킷 및 연관된 정보 및 메타데이터는 메모리-저장소(1532)에 저장될 수 있다. 이 데이터는 후속하여 상기 단계(16-1)에서와 같이 DFM(160)에 전송 또는 업로드될 수 있다. 패킷 및 연관된 정보 및 메타데이터는 사이버 분석 애플리케이션들, 위협 인텔리전스 애플리케이션들, 및 글로벌 DNS 및 글로벌 인터넷(도 16에는 도시되지 않음)을 보안 및 보호하기 위한 애플리케이션들과 같은 네트워크 보호 애플리케이션들에서 사용하도록 이용 가능하게 될 수 있다. 예를 들어, 위조 DNS 요청들을 공격 벡터로서 사용하는 고속 DDoS 공격 동안, 공격과 연관된 패킷들을 로깅 및/또는 캡처하는 것은 수용 가능하지 않게 많은 양의 컴퓨팅 리소스들을 소비할 수 있다. 이와 같이, 더 적은 리소스들을 필요로 하는 통계 정보가 대신 수집될 수 있다. 사이버 분석 어플리케이션은 위조 DNS 요청들의 발신자들일 수 있는 감염된 호스트들을 식별할 수 있다. 패킷 및 연관된 정보 및 메타데이터는 사이버 위협 인텔리전스 데이터베이스에 제공될 수 있으며, 이는 이후에 네트워크들을 보호하는 애플리케이션들 및 시스템들에 의해 사용될 수 있다. 예를 들어, DNS 인프라 제공자들 및 인터넷 서비스 제공자들은 집합적으로 데이터를 사용하여 글로벌 DNS 및 글로벌 인터넷 보호 애플리케이션들을 구동시킬 수 있다.
단계(16-7)에서, 불량, 위조, 또는 등록되지 않은 도메인 네임(DNS) 요청들의 레이트는 불량, 위조, 또는 등록되지 않은 도메인 네임(DNS) 요청의 발생을 통합하도록 업데이트될 수 있다. DNS-G/K(150)는 불량, 위조 또는 등록되지 않은 도메인 네임(DNS) 요청들의 발생률, 또는 모든 DNS 요청들의 발생률을 결정하거나 계산할 수 있다. DNS-G/K(150)는 위조 DNS 요청들의 발생의 변화율, 또는 모든 DNS 요청들의 발생의 변화율을 결정하거나 계산할 수 있다. DNS 요청들의 레이트 및/또는 DNS 요청들의 레이트의 변화율은 단계(16-8)에서 불량, 위조 또는 등록되지 않은 도메인 네임(DNS) 요청(들)과 연관된 공격의 유형을 결정하는 데 사용될 수 있고, 만약 있다면, 생성될 수 있는 DNS 응답을 결정하는 데 사용될 수 있다. 단계(16-8)에서, DNS-G/K(150)는 있는 경우, 불량, 위조, 또는 등록되지 않은 도메인 네임(DNS) 쿼리 요청에 응답하여 생성할 DNS 쿼리 응답의 유형을 결정할 수 있고, 임의의 생성된 DNS 응답을 네트워크(114)를 향해 포워딩할 수 있다. DNS 응답을 생성할 때, DNS-G/K(150)는 실제 DNS 응답자를 도용할 수 있고, 연관된 DNS 요청의 발신자 및 DNS 요청을 관측했을 수 있는 임의의 중간 장치들에 도용된 응답을 전송할 수 있다. 도용된 응답은 DNS의 인증된 네임 서버로부터의 응답인 것으로 요청 장치에 나타날 수 있다.
DNS 응답을 결정하는 데 사용되는 인자들은, 불량, 위조 또는 등록되지 않은 도메인 네임 요청들 및 합법적인 DNS 요청들의 현재 추정된 레이트들, 불량, 위조, 또는 등록되지 않은 도메인 네임 요청들의 그리고 합법적인 DNS 요청들의 변화율들, 데이터 구조(예를 들어, DNS-REG(1531))의 위양성율(P), 도메인 네임이 그 접미사에 국가 코드를 포함하는 경우 추정된 래그, 불량, 위조, 또는 등록되지 않은 도메인 네임(DNS) 요청이 공격 벡터인 공격 유형의 추정치, 및/또는 도메인 네임의 구문적 특성들(예를 들어, 정보 엔트로피 값들, 인간 언어 단어들과의 상관관계, 라벨 길이들, 영숫자 특성들 등)을 포함할 수 있다. 예를 들어, 불량, 위조, 또는 등록되지 않은 도메인 네임(DNS) 요청들의 레이트 및/또는 불량, 위조, 또는 등록되지 않은 도메인 네임(DNS) 요청들의 레이트의 변화율의 현재 값들에 기초하여, DNS-G/K(150)는 대용량 DDoS 공격이 발생하고 있다고 결정할 수 있다. 공격이 발생하고 있다는 결정에 기초하여, DNS-G/K(150)는 DNS 요청의 소스로 다시 전송하기 위해 임의의 DNS 응답을 생성하지 않기로 결정할 수 있다. 이러한 DDoS 공격 동안 불량, 위조 또는 등록되지 않은 도메인 네임(DNS) 요청들에 대한 DNS 응답들(예를 들어, NXDOMAIN의 응답 코드들을 갖는 응답)을 생성하는 것은 처리 리소스들을 소비하거나 불량, 위조 또는 등록되지 않은 도메인 네임(DNS) 요청들에 대한 NXDOMAIN 응답들로 중간 DNS 프록시들 내의 DNS 캐시들을 채우는 것에 의해 공격을 악화시킬 수 있고, 이는 합법적인 DNS 요청들 및 연관된 응답들이 DNS 캐시들에 저장되지 않도록 하며, 이는 DNS 상에 더 로딩되도록 한다.
다른 예에서, DNS 터널링 공격 또는 유출과 같은 비-DDoS 공격은 불량, 위조, 또는 등록되지 않은 도메인 네임(DNS) 요청들의 레이트 및 불량, 위조, 또는 등록되지 않은 도메인 네임(DNS) 요청들의 레이트의 변화율의 현재 값들에 기초하여 발생할 수 있다. 이러한 공격들은 방지해야 하지만, 처리 리소스들을 과소비하거나 DNS 캐시들을 채울 가능성이 적다. DNS-G/K(150)는 DNS 터널링 공격 또는 유출과 같은 비-DDoS 공격이 발생할 수 있다고 결정할 수 있다. 이러한 공격이 발생하고 있다는 결정에 기초하여, DNS-G/K(150)는 응답 코드(NXDOMAIN)를 갖는 DNS 응답을 생성할 수 있고, 그 응답을 DNS 요청의 소스에 전송할 수 있다. 임의의 중간 DNS 프록시들의 DNS 캐시들은 DNS-G/K(150) 생성 NXDOMAIN 응답을 저장할 수 있고, 이전의 불량, 위조 또는 등록되지 않은 도메인 네임(DNS) 요청들의 재시도들을 포함하는 후속 불량, 위조 또는 등록되지 않은 도메인 네임(DNS) 요청들은 중간 DNS 프록시들에 의해 처리될 수 있다. 반대로, DNS-G/K(150)는, 예를 들어, 소스가 그것이 발견되거나 그렇지 않으면 악의적인 행위자로서 식별되었을 수 있다는 것을 인지하지 못하게 하기 위해, DNS 응답을 생성하지 않기로 결정하고 이를 DNS 요청의 소스로 다시 송신할 수 있다.
또 다른 예에서, DNS-G/K(150)는, 웹 브라우저와 같은 DNS 요청들을 생성하는 애플리케이션을 동작시키는 동안, 불량, 위조 또는 등록되지 않은 도메인 네임(DNS) 요청이 멀웨어에 의해 생성된 인간 에러, 또는 시뮬레이션된 인간 에러의 결과일 수 있다고 결정할 수 있다. 이러한 결정에 기초하여, DNS-G/K(150)는 응답 코드(NXDOMAIN)를 갖는 DNS 응답을 생성할 수 있다. 응답 코드에 기초하여, 애플리케이션은 요청에 대한 응답을 기다리는 동안 시간 초과되지 않을 수 있으며 동일한 불량, 위조 또는 등록되지 않은 도메인 네임(DNS) 요청을 자동으로 다시 발행하지 않을 수 있다. 예를 들어, 결함 DNS 요청들을 생성하는 웹 브라우저들은 DNS 요청에 대한 DNS 응답이 수신되지 않을 경우 이러한 재시도 사이클을 여러 번 반복할 수 있고, 이는 브라우저가 포기할 때까지 인간 운영자가 일시적으로 브라우저를 사용할 수 없게 할 수 있다. 동일한 불량 DNS 요청을 발행하는 반복은 서비스 거부 공격으로 볼 수 있다. DNS-G/K(150)가 응답 코드(NXDOMAIN)를 갖는 DNS 응답을 생성하고 전송하는 함으로써 동일한 불량 DNS 요청을 발행하는 반복이 방지될 수 있다.
도 17은 DNS-G/K(150)와 같은 DNS 게이트키퍼의 동작에 대한 흐름도이다. 도 17의 단계들(17-1 내지 17-4)은 도 16의 단계들(16-1 내지 16-4)과 실질적으로 동일하다; 따라서, 이러한 단계들의 설명은 본원에서 또는 도면에서 반복되지 않는다. 다른 단계들은, 도 16의 단계(16-5)의 도메인 네임 멤버십 테스트가 FALSE를 반환했을지라도, DNS-G/K(150)에 의해 DNS를 향해 포워딩될 수 있는 DNS 요청들의 처리에 관한 것이다.
위에서 논의된 바와 같이, 일부 요청들은 국가 코드 래그와 같은 래그로 인해 DNS-REG(1531)에 있지 않은 도메인 네임들과 관련될 수 있다. 예를 들어, 모든 국가 코드 도메인들의 수집의 일부 갭들은 로컬 DNS-REG(1531)에 등록된 도메인 네임들에서 발생할 수 있고, 글로벌 DNS에 등록된 국가 코드 도메인(country code domain; CCD-X)은 도 16의 단계(16-1) 또는 도 4의 단계(14-1)에서 DFM(160)에 의해 분산되었던 블룸 필터(DNS-REG)(1531)에 포함되지 않을 수 있다. 유사하게, 동기화 래그는, 예를 들어, DNS-G/K(150)가 비교적 긴 시간에 DFM(160)으로부터 수신될 수 있는 데이터에 기초하여, DNS-G/K(150)에 저장된 로컬 블룸 필터(예를 들어, DNS-REG(1531))가 업데이트되지 않았다고 결정하는 경우의 팩터일 수 있다. 추가적으로, 일부 요청들은 합법적인 정보 교환 서비스들에 의한 등록되지 않은 도메인 네임들의 사용으로 인해 DNS-REG(1531)에 없는 도메인 네임들과 관련될 수 있다.
단계(16-5)에서, 블룸 필터(DNS-REG)(1531)의 CCD-X에 대한 멤버십 테스트는 FALSE 값을 반환할 수 있고, 단계(16-6F)에서, 연관된 패킷이 드롭될 수 있다. 그러나, 패킷이 드롭될 때, DNS-G/K(150)에 의해 새로운 정보가 수집되지 않는다. 드롭에 대한 대안으로서, 도메인 네임이 DNS에 실제로 등록될 충분한 가능성이 있다고 결정되는 경우, 또는 인텔리전스 수집과 같은 다른 가능한 이유들로, 또는 등록되지 않은 도메인 네임이 합법적인 정보 교환 서비스의 일부라는 결정이 이루어질 수 있기 때문에, DNS-G/K(150)는 DNS 요청 패킷을 드롭하지 않고 대신 DNS 요청 패킷을 DNS에 포워딩하기로 결정할 수 있다. DNS-G/K(150)는 도메인 네임이 DNS에 등록되는 것으로 결정되도록, 분해된 IP 어드레스들, 또는 도메인 네임이 DNS에 등록되지 않는 것으로 결정되도록, NXDOMAIN과 같은 에러 코드를 포함할 수 있는 대응되는 DNS 응답을 모니터링하고 관찰할 수 있다; 또는 DNS 터널링 공격을 나타낼 수 있는 응답이 없을 것이다. 이러한 고려사항들을 고려하여, 단계(16-5)에서의 결정 대신에 추가 처리가 제공될 수 있다. 도 17에서, 이러한 결정들이 단계들(17.5.1 및 17.5.2)에서 제공된다.
단계(17.5.1)에서, DNS-G/K(150)는 도메인 네임이 현재 DNS에 등록된 모든 도메인 네임들을 나타내는 블룸 필터(DNS-REG)(1531)에 포함된 세트의 멤버인지 테스트할 수 있다. 멤버십 테스트가 TRUE를 반환하여, DNS-G/K(150)가 네임이 DNS에 등록되는 것으로 결정하는 경우, 단계(17-6T)에서 패킷 및 연관된 DNS 요청들은 통계적 목적을 위해 기록될 수 있고 메모리-저장소(1532)에 저장될 수 있다. DNS-G/K(150)는 패킷을 네트워크(110)로 포워딩할 수 있고, DNS-G/K(150)는 단계(17-2)로 다시 회귀하고 더 많은 패킷들을 처리할 수 있다.
멤버십 테스트가 FALSE를 반환하여, 도메인 네임이 DNS-REG(1531)에 등록되지 않은 것으로 결정되는 경우, 단계(17.5.2)에서 DNS-G/K(150)는 패킷을 DNS를 향해 포워딩할지 여부를 결정할 수 있다. 포워딩 결정은 멤버십 테스트의 FALSE 결과가 일부 유형의 래그로 인한 것이라는 DNS-G/K(150)에 의한 결정에 기초할 수 있다. 예를 들어, DNS-G/K(150)는 도메인 네임이 국가 코드인 접미사를 포함하는지 여부를 결정할 수 있다. 도메인 네임이 국가 코드인 접미사를 포함한다는 결정에 기초하여, DNS-G/K(150)는 FALSE 결과가 (상기에 설명된 바와 같이) 국가 코드 래그에 기인했을 수 있다고 결론내릴 수 있다. 대안으로, DNS-G/K(150)는 블룸 필터(DNS-REG)(1531)의 로컬 사본이 비교적 긴 시간 내에 DFM(160)에 의해 업데이트되지 않았다고 결정할 수 있고, FALSE 결과가 동기화 래그(상기에 설명됨)에 기인할 수 있다고 결론 내릴 수 있다. 포워딩 결정은 또한 멤버십 테스트의 FALSE 결과가 합법적인 정보 교환 서비스의 일부로서 등록되지 않은 도메인 네임의 사용으로 인한 것이라는 DNS-G/K(150)에 의한 결정에 기초할 수 있다. 예를 들어, DNS-G/K(150)는 등록되지 않은 도메인 네임이 합법적인 정보 교환 서비스에 의해 동작되는 권한 네임 서버에 대응되는 접미사를 포함한다고 결정할 수 있다.
단계(17-5.2)에서, DNS-G/K(150)가 DNS 요청 패킷을 DNS로 포워딩하지 않기로 결정할 때, 단계들(17-6F, 17-7 및 17-8)이 실행될 수 있다. 이들 단계들은 도 16의 단계들(16-6F, 16-7 및 16-8)과 실질적으로 동일하다; 따라서, 상세한 설명은 본원에서 반복되지 않는다. DNS-G/K(150)가 DNS 요청 패킷을 포워딩하기로 결정할 경우, 단계(17-9)에서 DNS-G/K(150)는 DNS 요청 패킷을 네트워크(110)를 통해 DNS를 향해 포워딩할 수 있다. DNS-G/K(150)가 요청 내의 도메인 네임이 DNS-REG(1531)에 등록되어 있지 않지만 요청 패킷이 포워딩되어야 한다고 결정할 경우, DNS-G/K(150)는 포워딩된 요청 패킷과 연관된 통신들을 모니터링하기 위한 로직을 활성화할 수 있고, 대응되는 DNS 응답을 검출할 수 있다. 단계(17-10)에서, DNS-G/K(150)는, 있는 경우, 네트워크(114)를 향해 이동하는 대응되는 DNS 응답을 검출 또는 관찰할 수 있다.
단계(17-11)에서, DNS-G/K(150)는 도메인 네임이 DNS-REG(1531)에 나타나 있지 않지만 DNS에 등록되어 있는 것으로 결정하도록, DNS 응답이 분해된 IP 어드레스를 나타내는지 여부를 체크할 수 있다. DNS-G/K(150)가 분해된 IP 어드레스를 나타내는 DNS 응답을 관찰하지 않는 경우, DNS-G/K(150)는 단계(17-6F, 17-7, 및 17-8)를 실행할 수 있고(상기에 설명된 바와 같이), DNS-G/K(150)는 단계(17-2)로 다시 회귀하여 추가 패킷들을 처리할 수 있다. DNS-G/K(150)가 분해된 IP 어드레스를 나타내는 DNS 응답을 관찰하는 경우, 단계(17-12)에서, DNS-G/K(150)는 도메인 네임을 로컬 DNS-REG(1531)에 삽입할 수 있고, 정보 목적을 위해 도메인 네임을 기록할 수 있고, 단계(17-1)에서 이를 DFM(160)에 업로드할 수 있다. 단계(17-13)에서, DNS-G/K(150)는 (네트워크(114)를 통해) 자신의 목적지를 향해 DNS 응답 패킷을 포워딩할 수 있고, DNS-G/K(150)는 추가 요청들을 처리하기 위해 단계(17-2)로 다시 회귀할 수 있다.
단계(17-10)에서, 이는 또한 DNS 응답이 관찰되지 않은 경우일 수 있다. 예를 들어, 연관된 DNS 요청이 DNS 터널링 공격(예를 들어, 유출)에 대한 벡터일 때, 수집 서버(CSVR)(148)는 DNS 요청들에 응답하도록 구성되지 않을 수 있다. 이 경우를 처리하기 위한 논리 경로는 도 17에 도시하지 않는다. DNS 응답이 관찰되지 않은 경우, DNS-G/K(150)는 DNS 요청이 DNS 터널링 공격을 위한 벡터일 수 있다고 결정할 수 있다. DNS-G/K(150)는 DNS 요청을 캡처, 로깅, 및/또는 기록할 수 있고, DNS 터널링 공격이 발생했을 수 있다는 경보를 사이버분석 애플리케이션에 생성할 수 있다. 단일 도메인 네임 또는 복수의 도메인 네임들과 연관될 수 있는 경고 및 연관된 정보가 단계(17-1)에서 DFM(160)에 업로드될 수 있다.
도 18은 DNS 필터 관리자(DFM(160))의 동작 개념들을 도시하는 흐름도이다. 도 18에 도시된 모든 단계들은 도시된 순서뿐만 아니라 상이한 순서로 실행될 수 있고, 동시에 그리고 연속적으로 실행될 수 있다는 것에 유의한다. 도 18에 도시된 단계들의 순서화는 대표적이고 단지 설명 목적을 위한 것이며, 어떤 방식으로든 제한적 또는 한정적인 것으로 의도되지 않는다.
단계(18-1)에서, DFM(160)은 DNS에 현재 등록되어 있는 도메인 네임들의 목록들을 수집하고, 집계할 수 있다. DFM(160)은 다른 컴퓨팅 장치들과 액세스 가능하거나 공유 가능한 도메인 네임들의 데이터베이스를 생성할 수 있다. 이러한 목록들의 소스들은 DNS 레지스트리 운영자 조직 및/또는 연관된 대리자 및/또는 권한 네임 서버들에 의해 발견될 수 있는 영역 파일들, 도메인 목록 애그리게이터 서비스들, 국가 코드 도메인들(CCD들)을 발견하는 제3자 서비스들, ICANN 등을 포함할 수 있다.
단계(18-2)에서, DFM(160)은 현재 등록된 도메인 네임들의 데이터베이스를, 가능하게는, 주기적일 수 있는 스케줄에 따라, 스냅 촬영(snapshot)할 수 있다. 스냅 촬영은 DNS-G/K들(150 및 180)과 같은 가입 컴퓨팅 장치들에 제공될 수 있는 DNS-REG(1531) 데이터 구조(예를 들어, 블룸 필터)의 소스 데이터로서 사용될 수 있다. 스냅 촬영 시 데이터를 사용하여, DFM(160)은 다수의 DNS-REG(1531) 인스턴스들을 생성할 수 있다. 각 인스턴스(DNS-REGPX)는 위양성율(PX)로 특징지어질 수 있다. 블룸 필터 등과 같은 확률적 데이터 구조에 대해, 위양성율(P)의 로그의 크기는 세트의 요소들을 저장하기 위한 메모리 요건들에 비례할 수 있다. 즉, 각 DNS-REG(1531) 인스턴스에 대해, 인스턴스(DNS-REGPX)와 연관된 위양성율이 낮을수록, 세트 내에 주어진 수의 요소들을 저장하기 위해 더 많은 메모리가 요구될 수 있다. 로컬 DNS-G/K(150)의 각 인스턴스는 상이한 로컬 리소스 요건들을 가질 수 있다. 예를 들어, 각 로컬 DNS-G/K(150)는 DNS-REGPX 인스턴스를 저장하기 위한 이용 가능한 로컬 메인 메모리에 대해 상이한 제한들을 가질 수 있다. 이와 같이, DFM(160)은 주어진 DNS-G/K(150)가 로컬 리소스 요건들을 충족시키는 DNS-REGPX 인스턴스를 선택할 수 있도록 상이한 위양성율들 및 상이한 메모리 크기들을 갖는 다수의 DNS-REGPX 인스턴스들을 제공할 수 있다.
단계(18-3)에서, DFM(160)은 새롭게 생성된 DNS-REGPX 인스턴스들 및 타임스탬프 데이터와 같은 연관된 정보/메타데이터를 게시할 수 있고, DNS-REGPX 인스턴스들을 인가된 DNS-G/K 가입자들에게 이용 가능하게 한다. 단계(18-4)에서, DFM(160)은 선택된 DNS-REGPX 및 연관된 정보를 각 요청 가입자에게 전송함으로써 가입자 요청들에 응답할 수 있다. DFM(160)은 각각의 이러한 요청 및 응답을 기록할 수 있고, 로그 데이터는 DNS-G/K들(150) 및 다른 가입자들에 대한 글로벌 모니터링 애플리케이션에 사용될 수 있다. 이러한 모니터링 애플리케이션은 최근 그들의 로컬 DNS-REG 인스턴스들을 업데이트하지 않은 DNS-G/K(150) 인스턴스들을 구독하는 것에 대한 경고들을 관리자들에게 전송할 수 있다.
단계(18-5)에서, DFM(160)은 가입 DNS-G/K들(150)에 의해 전송된 정보를 업로드 및 저장할 수 있다. 위에서 언급된 바와 같이, 이 정보는 가입 DNS-G/K(150)에 의해 검출된 등록되지 않은 도메인 네임들 및 연관된 메타데이터(예를 들어, 타임스탬프들, 발신 호스트, 추정된 공격 유형 등)를 포함할 수 있으며, 이는 예를 들어, 관련 패킷들을 검출할 때 위협 인텔리전스로서 사용될 수 있다. 정보는 또한 DNS-G/K(150)에 의해 관찰되는 DNS 요청들 및 응답들에 대한 통계들, DNS-G/K(150) 요소 관리 정보, DNS-G/K(150)가 DNS에 등록되는 것으로 결정될 수 있지만 블룸 필터(DNS-REG)(1531)의 로컬 인스턴스에 포함되지 않을 수 있는 도메인 네임들을 포함할 수 있다. 이러한 도메인 네임들은 도 17의 단계(17-12)와 관련하여 설명된 프로세스에서 결정되었을 수 있다.
단계(18-6)에서, DFM(160)은 단계(18-5)(상기에 설명됨)에서 수집되었을 수 있는 정보를 포함하는 정보에 대한 요청들에 응답할 수 있다. 정보에 대한 요청들은 사이버 분석 애플리케이션들, 위협 인텔리전스 제공자 서비스들, 인터넷 및 DNS 모니터링 시스템들, 도메인 목록 애그리게이터 서비스들 등과 같은 다양한 클라이언트 시스템들로부터 수신될 수 있다. DFM(160)은 단계(18-1)로 다시 회귀할 수 있거나, 또는 상술된 프로세스들은 동시에 또는 연속적으로 수행될 수 있다.
도 18에 예시된 동작들의 DFM(160) 개념의 일부 가능한 변형들은 리소스 요건들을 감소시키고 래그를 감소시킬 수 있다. 예를 들어, 도 18에서, 모든 등록된 도메인 네임들을 포함하는 가장 최근에 생성된 DNS-REGPX의 버전은 요청될 때 각각의 가입자에게 분산될 수 있다. 규모에서 그리고 높은 요청 빈도(high request frequency)에서, DNS-REG(1531)의 완전한 인스턴스들을 지속적으로 분산하는 것은 비효율적일 수 있다. 리소스 소모를 줄이기 위해, 가입자는 전체 DNS-REGPX의 업데이트 대신 "델타(delta)" 세트를 요청할 수 있다. 즉, 가입자는 다운로드된 DNS-REGPX의 최종 타임스탬프된 버전(예를 들어, 버전 x.04-01-2019.0800)을 DFM(160)에 나타낼 수 있다. DFM(160)은 버전 x.04-01-2019.0800과 가장 최신 버전(예를 들어, x.04-02-2019.0800) 사이의 델타를 계산할 수 있다. 델타 세트는 버전 x.04-02-2019.0800에 포함되어 있지만 x.04-01-2019.0800에 포함되어 있지 않은 새로 등록된 모든 도메인 네임들을 포함할 수 있고, x.04-01-2019.0800에 포함되어 있지만 x.04-02-2019.0800에 포함되어 있지 않은 최근에 등록 해제된 모든 도메인 네임들을 포함할 수 있다. 이 델타 세트는 요청 가입자(DNS-G/K)(150)에 전송될 수 있다. 요청 가입자(DNS-G/K)(150)는 새로 등록된 도메인 네임들을 DNS-REG(1531)의 로컬 사본에 삽입할 수 있고, DNS-REG(1531)의 로컬 사본으로부터 최근에 등록 해제된 도메인 네임들을 삭제할 수 있다. 다른 변형에서, DFM(160)은 새로 등록된 도메인 네임들 및 새로 등록 해제된 도메인 네임들의 연속적인 피드를 제공할 수 있다. 연속 피드의 가입자들은 새로 등록된 도메인 네임들을 그들의 로컬 DNS-REG에 삽입하고 최근에 등록 해제된 도메인 네임들을 그들의 로컬 DNS-REG로부터 삭제할 수 있다. 이러한 변형은 상기에 설명된 바와 같이, 래그 처리 이슈들을 감소시킬 수 있다.
도 18에 예시된 동작들의 DFM(160) 개념의 일부 다른 가능한 변형들은 메모리 요건들 및 처리 요건들을 포함하는, DNS-G/K(150) 로컬 리소스 요건들을 감소시킬 수 있다. 예를 들어, 일부 DNS-G/K(150)는 공격들에 대한 효과적인 보호들을 제공하기 위해 모든 알려진/이용 가능한 등록된 도메인 네임들을 갖는 완전한 DNS-REG(1531)를 필요로 하지 않을 수 있지만, 대신에 DNS-REG(1531)의 로컬 인스턴스들에서 등록된 도메인 네임들의 비교적 작은 서브셋만을 필요로 한다. 도 1을 참조하면, 제1 DNS 인프라 제공자 조직(예를 들어, DIPO-X)에 의해 동작될 수 있는 네트워크(116)를 고려한다. DIPO-X는 각각 예를 들어, 도메인들(example-144.com 및 example-145.com)에 대한 권한 네임 서버들일 수 있는 두 개(2)의 권한 네임 서버들(NS(144) 및 NS(145))을 동작시킬 수 있다. 도메인 네임들(*.example-144.com 및 *.example-145.com)에 대한 모든 DNS 쿼리 요청들이 권한 네임 서버(NS)(144) 및 네트워크(116) 결합된 권한 네임 서버(NS)(145)로 라우팅되도록 DNS를 구성될 수 있다. 따라서, 이러한 요청들은 DNS 게이트키퍼(DNS-G/K)(180)를 통과하거나 이에 의해 필터링될 것이고, DNS 게이트키퍼(DNS-G/K)(180)의 DNS-REG(1531)의 로컬 인스턴스에 대한 멤버십이 테스트될 것이다.
그러나, 전부는 아니지만, 대부분의 경우, 네트워크(116)에 진입한 DNS 쿼리 요청들은 *.example-144.com 및 *.example-145.com 형태의 도메인 네임들을 분해하기 위한, 합법적인 요청 그리고 불량, 위조, 또는 등록되지 않은 도메인 네임(DNS) 요청 둘 다인, 요청들일 수 있는 경우일 가능성이 높다. 따라서, DNS 게이트키퍼(DNS-G/K)(180)의 로컬 DNS-REG(1531)는 DNS에 등록된 모든 도메인 네임으로 채워질 필요는 없지만, 대신 *.example-144.com 및 *.example-145.com 형태의 등록된 도메인 네임들으로만 채워질 필요가 있다. 완전한 블룸 필터(DNS-REG)(1531)와 비교하여, 이러한 도메인 네임들만을 포함하는 블룸 필터는 더 적은 로컬 메모리를 필요로 할 것이고 또한 멤버십 테스트들을 수행하는 데 더 적은 시간을 필요로 할 것이다. 따라서, DFM(160)이 가입자들이 그들의 DNS 게이트키퍼들을 구성하기 위해 사용하는 블룸 필터들을 커스터마이징할 수 있게 하는 경우 유리할 수 있다. DFM(160)은 커스텀 블룸 필터들을 유지하고 업데이트할 수 있고, 요청시 이들을 연관된 가입자들에게 제공할 수 있다.
대안적으로, DIPO-X는 권한 네임 서버들(example-144.com 및 example-145.com)에 대한 등록자 및 관리자일 수 있기 때문에, DIPO-X는 *.example-144.com 및 *.example-145.com 형태의 등록된 도메인 네임들을 포함하는 블룸 필터를 생성 및 관리할 수 있고, 이 블룸 필터로 DNS-G/K(180)를 구성할 수 있다. DIPO-X는 또한 이 블룸 필터를 게시되는 파일들에 대한 대안으로서 DFM(160)에 제공할 수 있다. 그런 다음, DFM(160)은 DFM(160)이 가입자들에게 분배하는 블룸 필터들(DNS-REG)(1531)(예를 들어, 결합을 형성함으로써)에 이 블룸 필터를 포함할 수 있다. 이러한 방식으로, DIPO-X는 자신의 영역 파일들을 발견/게시하지 않음으로써 원하는 임의의 프라이버시 및 보호를 유지할 수 있지만, DFM(160) 및 DNS-REG(1531) 필터들의 관리자와 함께 참여하여 DNS 및 인터넷을 보안하는 것을 도울 수 있다. 실제로, 예를 들어, 이 방법은 그들의 영역 파일들을 게시하지 않는 국가 코드 영역들의 등록자들에게 유용할 수 있다.
도 19는 DNS에 대한 DDoS 공격들을 완화 또는 방지할 수 있는 DNS 게이트키퍼들과의 인터네트워크의 일 실시예에 대한 이벤트 시퀀스를 예시한다. 단계들(19-1a 및 19-1b)에서, 장치들(IOT(140) 및 IOT(142))을 손상시킨 멀웨어는 봇넷 커맨드 및 제어 시스템 CNC(149)에 접촉하여 그들의 존재를 커맨드 및 제어 시스템(CNC)(149)에 통지하고 명령어들을 요청한다. 단계들(19-2a 및 19-2b)에서, 커맨드 및 제어 시스템(CNC)(149)은 IOT(140) 및 IOT(142)에게 규정된 시간(T)에서 불량, 위조 또는 등록되지 않은 도메인 네임(DNS) 요청들로 example-144.com 및 example-146.com에 대한 DNS 권한 네임 서버들을 공격하도록 지시할 수 있다.
단계(19-3a)에서, 규정된 시간(T)에서, IOT(140)는 도메인 네임(6pPhAUPd.example-146.com)을 분해하기 위해 위조 DNS 요청을 생성한다. IOT(140)는 랜덤 스트링 생성기를 사용하여 "6pPhAUPd" 스트링을 생성하고, 그런 다음 DNS가 분해를 위해 example-146.com에 대한 권한 네임 서버(NS)(146)로 라우팅할 도메인 네임을 생성하도록 서브 도메인 라벨로서 사용한다. 이 도메인 네임 생성 방법은 결과적인 도메인 네임들이 DNS에 등록되었을 가능성이 매우 낮다고 가정한다. IOT(140)는 위조 DNS 요청을 example-146.com에 대한 권한 네임 서버(NS)(146)를 향해 포워딩한다.
단계(19-4a)에서, 권한 네임 서버(NS)(146)는 6pPhAUPd.example-146.com을 분해하기 위한 DNS 요청을 수신한다. 6pPhAUPd.example-146.com이 DNS에 등록된 적이 없으므로, NS(146)는 그 DNS 데이터베이스에서 대응되는 DNS 엔트리를 검색하지만 찾지 못하는 리소스들을 낭비한다. NS(146)는 RCODE = 3(도메인 네임이 DNS에 존재하지 않음을 알리는 "NXDOMAIN")을 갖는 요청에 대응되는 DNS 응답을 생성하고, DNS 응답을 요청자(IOT)(140)를 향해 포워딩한다. 권한 네임 서버(예를 들어, NS(146))와 장치(예를 들어, IOT(140)) 사이의 네트워크 경로에 있는 임의의 캐싱 DNS 프록시들은 쌍 {6pPhAUPd.example-146.com, NXDOMAIN}에 대한 캐시 엔트리를 삽입할 수 있다.
따라서, 단계(19-3a)에서 IOT(140)에 의해 생성된 위조 DNS 요청은 네트워크 대역폭 리소스들, DNS 네임 서버 리소스들, 및 DNS 캐시 리소스들을 낭비하게 된다. 이러한 리소스들은 더 이상 합법적인 DNS 요청들을 서비스하는 데 사용될 수 없다.
단계(19-3b)에서, 규정된 시간(T)에서, 그리고 단계(19-3a)와 유사하게, IOT(142)는 도메인 네임(B2f8O2vR.example-146.com)을 분해하기 위한 위조 DNS 요청을 생성한다. IOT(142)는 위조 DNS 요청을 example-146.com의 권한 네임 서버(NS)(146)를 향해 포워딩할 수 있다. 위조 DNS 요청이 네트워크(114)를 나갈 때, 이는 DNS 게이트키퍼(DNS-G/K)(150)에 의해 수신될 수 있다. DNS-G/K(150)는 B2f8O2vR.example-146.com이 블룸 필터(DNS-REG)의 그의 로컬 인스턴스의 멤버인지 여부를 테스트할 수 있다. 멤버십 테스트는 B2f8O2vR.example-146.com이 블룸 필터(DNS-REG)의 멤버가 아니며, 따라서 DNS에 등록되지 않은 것으로 결정되도록, FALSE를 반환할 수 있다. DNS-G/K(150)는 그의 유효하지 않은 또는 위조 DNS 요청들의 레이트, 유효하지 않은 또는 위조 DNS 요청들의 레이트의 변화율, 및 다른 파라미터들을 체크할 수 있으며, 요청이 DDoS 공격의 일부일 수 있다고 결정한다. 따라서, DNS-G/K(150)는 DNS 요청을 포함하는 패킷을 드롭할 수 있지만, DNS 요청의 발신자에게 다시 전송하기 위한 대응되는 DNS 응답을 생성하지 않는다(이는 리소스들을 소모하고 따라서 DDoS 공격을 수행하는 것을 도울 것이기 때문임). DNS-G/K(150)는, 예를 들어, 위협 인텔리전스 제공자 서비스, 및/또는 사이버 분석 서비스 등에 의한 가능한 향후 검색을 위해, 위조 DNS 요청을 로그, 캡처, 및 로컬로 저장할 수 있다. 따라서, DNS-G/K(150)는 위조 DNS 요청이 DNS를 공격하고 리소스들을 낭비하는 것을 방지했으며, 이는 대신에 합법적인 DNS 요청들을 서비스하는 데 적용될 수 있다.
단계(19-3c)에서, 규정된 시간(T)에서, 그리고 단계(19-3a)와 유사하게, IOT(140)는 도메인 네임(V00zln5k.example-144.com)을 분해하기 위한 위조 DNS 요청을 생성한다. IOT(140)는 위조 DNS 요청을 네트워크(116)에 결합된 example-144.com에 대한 네임 서버(NS)(144)를 향해 포워딩할 수 있다. 네트워크(116)에 진입하기 전에, 요청은 DNS 게이트키퍼(DNS-G/K)(180)(이는 DIPO-X가 네트워크(116)의 경계에 설치되어 그의 DNS 인프라구조를 보호함)에 의해 수신될 수 있다. DNS 게이트키퍼(DNS-G/K)(180)는 V00zln5k.example-144.com이 블룸 필터(DNS-REG)의 로컬 인스턴스의 멤버인지를 테스트할 수 있다. 멤버십 테스트는, V00zln5k.example-144.com이 블룸 필터(DNS-REG)의 멤버가 아니며 따라서 DNS에 등록되지 않은 것으로 결정될 수 있으므로, FALSE를 반환한다. DNS 게이트키퍼(DNS-G/K)(180)는 위조 DNS 요청이 DDoS 공격의 일부일 수 있다고 결정할 수 있다. 따라서, DNS 게이트키퍼(DNS-G/K)(180)는 DNS 요청을 포함하는 패킷을 드롭할 수 있지만, DNS 요청의 발신자에게 다시 전송하기 위해 대응되는 DNS 응답을 생성할 필요는 없다. 따라서, DNS 게이트키퍼(DNS-G/K)(180)는 위조 DNS 요청이 DNS를 공격하고 리소스를 낭비하는 것을 방지하였고, 이는 대신에 합법적인 DNS 요청을 서비스하는 데 적용될 수 있다.
단계(19-3d)에서, 규정된 시간(T)에서, 그리고 단계(19-3b)와 유사하게, IOT(142)는 도메인 네임(I9BVhImV.example-144.com)을 분해하기 위한 위조 DNS 요청을 생성한다. IOT(142)는 위조 DNS 요청을 네임 서버(NS)(144)(example-144.com)를 향해 포워딩한다. 위조 DNS 요청이 네트워크(114)를 나갈 때, 이는 DNS 게이트키퍼(DNS-G/K)(150)에 의해 수신된다. DNS-G/K(150)는 I9BVhImV.example-144.com이 블룸 필터(DNS-REG)의 거의 로컬 인스턴스의 멤버인지를 테스트한다. 멤버십 테스트는, I9BVhImV.example-144.com이 블룸 필터(DNS-REG)의 멤버가 아니며 따라서 DNS에 등록되지 않은 것으로 결정되었으므로, FALSE를 반환한다. DNS-G/K(150)는 유효하지 않은 또는 위조 DNS 요청들의 레이트 및/또는 유효하지 않은 또는 위조 DNS 요청들의 레이트의 변화율을 체크하고, 요청이 DDoS 공격의 일부일 수 있다고 결정한다. 따라서, DNS-G/K(150)는 DNS 요청을 포함하는 패킷을 드롭하지만, DNS 요청의 발신자에게 다시 전송하기 위한 대응되는 DNS 응답을 생성하지 않는다. 따라서, DNS-G/K(150)는 위조 DNS 요청이 DNS를 공격하고 리소스들을 낭비하는 것을 방지했으며, 이는 대신에 합법적인 DNS 요청을 서비스하는 데 적용될 수 있다.
도 20은 DNS 터널링 공격들을 완화 또는 방지할 수 있는 DNS 게이트키퍼들과의 인터네트워크의 일 실시예에 대한 이벤트 시퀀스들을 예시한다.
도 14로부터 그리고 상기로부터, 호스트들(네트워크(112)에 결합된 PII(141) 및 네트워크(114)에 결합된 PII(143))은 개인 식별 정보(PII), 신용 카드 정보 등과 같은 민감한 정보를 관리하는 서버들일 수 있음을 상기한다. 호스트들(PII(141) 및 PII(143))은 또한 신용 카드 정보를 수집한 다음 DNS 터널링 방법을 사용하여 정보를 네트워크(170)(하기에 설명됨)에 결합된 수집 서버(CSVR)(148)로 유출하는 멀웨어에 의해 감염되었다. CSVR(148)는 공용 IP 어드레스(21.43.65.87)가 할당되어 있다. 수집 서버(CSVR)(148)는 DNS에 대한 잘 알려진 포트인, 포트(53) 상의 DNS 요청들을 수집할 수 있는 DNS 서버로 구성될 수 있다. PII(141) 및 PII(143) 상의 멀웨어는 DNS 요청들을 IP 어드레스(21.43.65.87)(수집 서버(CSVR)(148)의 IP 어드레스)로 전송하도록 구성되었다.
단계(20-1)에서, 네트워크(112)에 결합된 PII(141)는 로컬 데이터베이스로부터 신용 카드 번호("1234123412341234") 및 연관된 신용 카드 발행자 이름("card")를 판독하고, 예를 들어, 1234123412341234card.csvr-148.tk를 분해하기 위해 (위조) DNS 요청을 구성하고, 목적지 포트(53)를 갖는 UDP 데이터그램 패킷에 요청을 캡슐화하고, 목적지 IP 어드레스(21.43.65.87)를 갖는 IP 패킷에 데이터그램을 캡슐화하고, 21.43.65.87(CSVR(148))를 향해 패킷을 포워딩한다. 패킷은 인터네트워크를 통해 수집 서버(CSVR)(148) 포트(53)로 라우팅되며, 여기서 포트(53)에서 청취하는 DNS 서버는 1234123412341234card.csvr-148.tk를 분해하기 위한 위조 DNS 요청을 수신한다. DNS 서버는 DNS 요청으로부터 (도난된) 신용 카드 정보("1234123412341234")를 추출하고, DNS 요청을 로컬 데이터베이스에 저장함으로써, 유출을 성공적으로 완료한다. DNS 서버는, 예를 들어, 검출을 피하기 위해, 위조 DNS 요청에 대응되는 DNS 응답을 생성하지 않는다.
단계(20-2)에서, 네트워크(114)에 결합된 PII(143)는 로컬 데이터베이스로부터 신용 카드 번호("4321432143214321") 및 연관된 신용 카드 발행자 이름("card2")을 판독하고, 예를 들어, 4321432143214321card2.csvr-148.tk를 분해하기 위한 위조 DNS 요청을 구성한다. PII(143)는 목적지 포트(53)를 갖는 UDP 데이터그램 패킷에 요청을 캡슐화할 수 있고, 목적지 IP 어드레스(21.43.65.87)를 갖는 IP 패킷에 데이터그램을 캡슐화할 수 있고, 수집 서버(CSVR)(148)의 IP 어드레스)(21.43.65.87)를 향해 패킷을 포워딩할 수 있다. 패킷이 네트워크(114)를 나갈 때, 이는 DNS 게이트키퍼(DNS-G/K)(150)에 의해 수신될 수 있다. DNS-G/K(150)는 요청(4321432143214321card2.csvr-148.tk)이 블룸 필터(DNS-REG)의 그의 로컬 인스턴스의 멤버인지 여부를 테스트할 수 있다. 멤버십 테스트는, 4321432143214321card2.csvr-148.tk가 블룸 필터(DNS-REG)의 멤버가 아니며 따라서 DNS에 등록되지 않은 것으로 결정되므로, FALSE를 반환할 수 있다. DNS-G/K(150)는 불량, 위조 또는 등록되지 않은 도메인 네임(DNS) 요청들 및 합법적인 DNS 요청들의 로컬 게이트키퍼 저장 레이트 및/또는 불량, 위조 또는 등록되지 않은 도메인 네임(DNS) 요청들 및 합법적인 DNS 요청들의 레이트의 변화율, 및 다른 파라미터들을 체크할 수 있고, 요청이 DDoS 공격의 일부가 아니라 DNS 터널링 공격의 일부일 수 있다고 결정할 수 있다. 따라서, DNS-G/K(150)는 DNS 요청을 포함하는 패킷을 드롭할 수 있지만, DNS 요청의 발신자에게 다시 전송하기 위한 대응되는 DNS 응답을 생성하지 않을 수 있다. 따라서, DNS-G/K(150)는 위조 DNS 요청이 도난된 신용 카드 번호들을 악의적인 행위자들에게 유출하는 것을 방지할 수 있다. DNS-G/K(150)는 위조 DNS 요청을 로그, 캡처, 및 로컬로 저장할 수 있다. 이 정보는 예를 들어, 위협 인텔리전스 제공자 서비스, 및/또는 사이버 분석 서비스 등에 제공될 수 있다. 이러한 서비스들은 악성 수집 서버(CSVR)(148)(IP 어드레스(21.43.65.87)) 및 네트워크(170)가 악성 행위자들과 연관되는 것으로 식별할 수 있고, 호스트(PII(143))가 멀웨어를 유출함으로써 손상되는 것으로 식별할 수 있다. 이 정보는 예를 들어, 기업 소독(disinfecting) 호스트(PII(143))에 의해, 및/또는 수집 서버(CSVR)(148)의 IP 어드레스(21.43.65.87) 및 관련 위협 메타데이터(예를 들어, 공격 유형은 "DNS 터널링"임)를 위협 표시자로서 가입자들에게 분배하는 것뿐만 아니라 (악성) 네트워크(170)의 IP 어드레스 공간 블록(예를 들어, 21.43.65.0/24)을 분배하는 위협 인텔리전스 제공자에 의해 네트워크를 더 보호하는데 사용될 수 있다.
본원에 설명된 기능들 및 단계들은 본원에 설명된 하나 이상의 기능들을 수행하기 위해 하나 이상의 컴퓨터들 또는 다른 장치들에 의해 실행되는, 하나 이상의 프로그램 모듈들과 같은, 컴퓨터 이용 가능 데이터 또는 컴퓨터 실행 가능 명령어들로 구현될 수 있다. 일반적으로, 프로그램 모듈들은 컴퓨터 또는 다른 데이터-처리 장치 내의 하나 이상의 프로세서들에 의해 실행될 때 특정 태스크들을 수행하거나 특정 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 컴퓨터 실행 가능 명령어들은 하드 디스크, 광학 디스크, 이동식 저장 매체, 솔리드 스테이트 메모리(RAM) 등과 같은 컴퓨터 판독 가능 매체 상에 저장될 수 있다. 인식되는 바와 같이, 프로그램 모듈들의 기능은 원하는 대로 조합되거나 분배될 수 있다. 또한, 기능성은 집적 회로들, 애플리케이션별 집적 회로들(ASIC들), 필드 프로그램 가능 게이트 어레이들(FPGA) 등과 같은 펌웨어 또는 하드웨어 등가물들로 전체적으로 또는 부분적으로 구현될 수 있다. 특정 데이터 구조들은 본 개시의 하나 이상의 양태들을 보다 효과적으로 구현하는 데 사용될 수도 있고, 이러한 데이터 구조들은 본원에 설명된 컴퓨터 실행 가능 명령어들 및 컴퓨터 사용 가능 데이터의 범위 내에 있는 것으로 고려된다.
요구되지는 않지만, 당업자는 본원에 설명된 다양한 양태들이 방법, 시스템, 장치, 또는 컴퓨터 실행 가능 명령어들을 저장하는 하나 이상의 컴퓨터 판독 가능 매체들로서 구현될 수 있음을 인식할 것이다. 따라서, 양태들은 전적으로 하드웨어 실시예, 전체 소프트웨어 실시예, 전체 펌웨어 실시예, 또는 임의의 조합으로 소프트웨어, 하드웨어, 및 펌웨어 양태들을 조합하는 실시예의 형태를 취할 수 있다.
본원에 설명된 바와 같이, 다양한 방법들 및 동작들은 하나 이상의 컴퓨팅 장치들 및 네트워크들에 걸쳐 동작할 수 있다. 기능은 임의의 방식으로 분산될 수 있거나 단일 컴퓨팅 장치(예를 들어, 서버, 클라이언트 컴퓨터 등)에 위치될 수 있다.
컴퓨터 소프트웨어, 하드웨어, 및 네트워크들은 특히 독립형, 네트워크된, 원격 액세스(원격 데스크탑이라고 알려짐), 가상화된, 및/또는 클라우드 기반 환경을 포함하는 다양한 상이한 시스템 환경들에서 활용될 수 있다. 도 21은 독립형 및/또는 네트워크된 환경에서 본원에 설명된 하나 이상의 예시적인 양태들을 구현하는데 사용될 수 있는 시스템 아키텍처 및 데이터 처리 장치의 일 예를 예시한다. 다양한 네트워크 노드들(2103, 2105, 2107, 및 2109)은 인터넷과 같은 광역 네트워크(WAN)(2101)를 통해 상호연결될 수 있다. 사설 인트라넷, 기업 네트워크, 로컬 영역 네트워크(LAN), 메트로폴리탄 영역 네트워크(MAN), 무선 네트워크, 개인 네트워크(PAN) 등을 포함하는 다른 네트워크들이 또한 또는 대안으로 사용될 수 있다. 네트워크(2101)는 예시의 목적들을 위한 것이며 더 적거나 추가적인 컴퓨터 네트워크들로 대체될 수 있다. 로컬 영역 네트워크(2133)는 임의의 알려진 LAN 토폴로지 중 하나 이상을 가질 수 있고, 이더넷과 같은 다양한 서로 다른 프로토콜들 중 하나 이상을 사용할 수 있다. 장치들(2103, 2105, 2107 및 2109) 및 다른 장치들(도시되지 않음)은 연선(twisted pair wires), 동축 케이블, 광섬유, 전파, 또는 다른 통신 매체를 통해 네트워크들 중 하나 이상에 연결될 수 있다.
본원에 사용되고 도면들에 도시된 바와 같은 "네트워크"라는 용어는 원격 저장 장치들이 하나 이상의 통신 경로들을 통해 함께 결합되는 시스템들뿐만 아니라, 때때로, 저장 능력을 갖는 이러한 시스템들에 결합될 수 있는 독립형 장치들을 지칭한다. 따라서 "네트워크"라는 용어는 "물리적 네트워크"뿐만 아니라 모든 물리적 네트워크들에 걸쳐 상주하는 단일 엔티티로 인한 데이터로 구성된 "콘텐트 네트워크"를 포함한다.
컴포넌트들은 데이터 서버(2103), 웹 서버(2105), 및 클라이언트 컴퓨터들(2107, 2109)을 포함할 수 있다. 예를 들어, DNS-G/K(150)는 다양한 네트워크 노드들(2103, 2105, 2107, 및 2109) 각각을 포함하는 복수의 상이한 장치들 중 어느 하나로 구현될 수 있다. 데이터 서버(2103)는 본원에 설명된 하나 이상의 예시적인 양태들을 수행하기 위한 데이터베이스 및 제어 소프트웨어의 전반적인 액세스, 제어 및 관리를 제공한다. 데이터 서버(2103)는 웹 서버(2105)에 연결될 수 있으며, 이를 통해 사용자들은 요청된 바와 같은 데이터를 획득하고 이와 상호 작용한다. 대안적으로, 데이터 서버(2103)는 웹 서버 그 자체로서 작용할 수 있고 인터넷에 직접 연결될 수 있다. 데이터 서버(2103)는 로컬 영역 네트워크(2133), 광역 네트워크(2101)(예를 들어, 인터넷)를 통해, 직접 또는 간접 연결을 통해, 또는 일부 다른 네트워크를 통해 웹 서버(2105)에 연결될 수 있다. 사용자들은 원격 컴퓨터들(2107, 2109)를 사용하여, 예를 들어 웹 브라우저를 사용하여 웹 서버(2105)에 의해 호스팅되는 하나 이상의 외부로 노출된 웹 사이트들을 통해 데이터 서버(2103)에 연결함으로써 데이터 서버(2103)와 상호작용할 수 있다. 클라이언트 컴퓨터들(2107, 2109)은 그 안에 저장된 데이터에 액세스하기 위해 데이터 서버(2103)와 협력하여 사용될 수 있거나, 다른 목적들을 위해 사용될 수 있다. 예를 들어, 클라이언트 장치(2107)로부터, 사용자는 당업계에 공지된 바와 같이, 인터넷 브라우저를 사용하여, 또는 (인터넷과 같은) 컴퓨터 네트워크를 통해 웹 서버(2105) 및/또는 데이터 서버(2103)와 통신하는 소프트웨어 애플리케이션을 실행함으로써 웹 서버(2105)에 액세스할 수 있다.
서버들 및 애플리케이션들은 동일한 물리적 기계들에 결합되고 별도의 가상 또는 논리적 어드레스들을 유지하거나 별도의 물리적 기계들에 상주할 수 있다. 도 21은 사용될 수 있는 장치 및 네트워크 아키텍처의 단지 하나의 예를 예시하고, 당업자는 사용되는 특정 장치 및 네트워크 아키텍처 및 데이터 처리 장치들이 변할 수 있고, 본원에 추가로 설명되는 바와 같이 제공된 기능에 부차적이라는 것을 인식할 것이다. 예를 들어, 웹 서버(2105) 및 데이터 서버(2103)에 의해 제공되는 서비스들은 단일 서버 상에서 결합될 수 있다.
각 컴포넌트(2103, 2105, 2107, 2109)는 임의 유형의 공지된 컴퓨터, 서버, 또는 데이터 처리 장치일 수 있다. 데이터 서버(2103)는, 예를 들면, 데이터 서버(2103)의 전반적인 동작을 제어하는 프로세서(2111)를 포함할 수 있다. 데이터 서버(2103)는 랜덤 액세스 메모리(RAM)(2113), 읽기 전용 메모리(ROM)(2115), 네트워크 인터페이스(2117), 입/출력 인터페이스들(2119)(예를 들어, 키보드, 마우스, 디스플레이, 프린터 등), 및 메모리(2121)를 더 포함할 수 있다. 입/출력(I/O)(2119)은 데이터 또는 파일들을 판독, 기입, 디스플레이 및/또는 프린트하기 위한 다양한 인터페이스 유닛들 및 드라이브들을 포함할 수 있다. 메모리(2121)는 데이터 처리 장치(2103)의 전체 동작을 제어하기 위한 운영 체제 소프트웨어(2123), 데이터 서버(2103)에 본원에 설명된 양태들을 수행하도록 지시하기 위한 제어 로직(2125), 및 본원에 설명된 양태들과 함께 사용되거나 사용되지 않을 수 있는 이차, 지원 및/또는 다른 기능을 제공하는 다른 애플리케이션 소프트웨어(2127)를 더 저장할 수 있다. 제어 로직은 또한 본원에는 데이터 서버 소프트웨어(2125)로서 지칭될 수 있다. 데이터 서버 소프트웨어의 기능은 제어 로직으로 코딩된 규칙들에 기초하여 자동으로 이루어지고, 시스템에 입력을 제공하는 사용자에 의해 수동으로 이루어진 동작들 또는 결정들, 및/또는 사용자 입력에 기초한 자동 처리의 조합(예를 들어, 쿼리들, 데이터 업데이트들 등)을 지칭할 수 있다.
메모리(2121)는 또한 제1 데이터베이스(2129) 및 제2 데이터베이스(2131)를 포함하여, 본원에 설명된 하나 이상의 양태들의 수행에 사용되는 데이터를 저장할 수 있다. 제1 데이터베이스는 제2 데이터베이스를 (예를 들어, 별개의 테이블, 보고서 등으로서) 포함할 수 있다. 즉, 정보는 시스템 설계에 따라 단일 데이터베이스에 정보가 저장되거나 서로 다른 논리적, 가상 또는 물리적 데이터베이스들로 분리될 수 있다. 장치들(2105, 2107 및 2109)은 장치(2103)와 관련하여 설명된 바와 유사하거나 상이한 아키텍처를 가질 수 있다. 당업자는 본원에 설명된 바와 같은 데이터 처리 장치(2103)(또는 장치(2105, 2107, 또는 2109))의 기능이 예를 들어, 처리 부하를 다수의 컴퓨터들에 걸쳐 분배하기 위해, 즉 지리적 위치, 사용자 액세스 레벨, 서비스 품질(QoS) 등에 기초하여 트랜잭션들을 분리하기 위해 다수의 데이터 처리 장치들에 걸쳐 확산될 수 있음을 인식할 것이다.
하나 이상의 양태들은 본원에 설명된 바와 같은 하나 이상의 컴퓨터들 또는 다른 장치들에 의해 실행되는, 하나 이상의 프로그램 모듈들과 같은, 컴퓨터 사용 가능 또는 판독 가능 데이터 및/또는 컴퓨터 실행 가능 명령어들로 구현될 수도 있다. 일반적으로, 프로그램 모듈들은 컴퓨터 또는 다른 장치 내의 프로세서에 의해 실행될 때 특정 태스크들을 수행하거나 특정 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 모듈들은 실행을 위해 이후에 컴파일되는 소스 코드 프로그래밍 언어로 작성될 수 있거나, (이에 제한되는 것은 아니나) 하이퍼텍스트 마크업 언어(HyperText Markup Language; HTML) 또는 확장형 마크업 언어(Extensible Markup Language; XML)과 같은 스크립팅 언어로 작성될 수 있다. 컴퓨터 실행 가능 명령어들은 비휘발성 저장 장치와 같은 컴퓨터 판독 가능 매체 상에 저장될 수 있다. 하드 디스크들, CD-ROM들, 광학 저장 장치들, 자기 저장 장치들, 및/또는 이들의 임의의 조합을 포함하는 임의의 적절한 컴퓨터 판독 가능 저장 매체가 이용될 수도 있다. 또한, 본원에 설명된 바와 같은 데이터 또는 이벤트들을 나타내는 다양한 송신(비-저장) 매체들은 금속 와이어들, 광 섬유들, 및/또는 무선 전송 매체들(예를 들어, 공중 및/또는 공간)과 같은 신호-전도성 매체들을 통해 이동하는 전자기파들의 형태로 소스와 목적지 사이에서 전송될 수 있다. 본원에 설명된 다양한 양태들은 방법, 데이터 처리 시스템, 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 다양한 기능들이 소프트웨어, 펌웨어, 및/또는 하드웨어 또는 집적 회로들, 필드 프로그래머블 게이트 어레이들(FPGA) 등과 같은 하드웨어 등가물들로 전체적으로 또는 부분적으로 구현될 수 있다. 특정 데이터 구조들은 본원에 설명된 하나 이상의 양태들을 보다 효과적으로 구현하는 데 사용될 수 있고, 이러한 데이터 구조들은 본원에 설명된 컴퓨터 실행 가능 명령어들 및 컴퓨터 사용 가능 데이터의 범위 내에서 고려된다.
도 22를 더 참조하면, 본원에 설명된 하나 이상의 양태들은 네트워크 또는 원격 액세스 환경에서 구현될 수 있다. 도 22는 본원에 설명된 하나 이상의 예시적인 양태들에 따라 사용될 수 있는 예시적인 컴퓨팅 환경(2200)에서의 컴퓨팅 장치(2201)를 포함하는 예시적인 네트워크 아키텍처를 도시한다. 예를 들어, DFM 필터 관리자(DFM)(160)는 컴퓨팅 장치(2201)의 특징들을 사용하여 구현될 수 있다. 컴퓨팅 장치(2201)는 클라이언트 액세스 장치들을 위한 가상 기계들을 제공하도록 구성된 단일-서버 또는 멀티-서버 데스크탑 가상화 시스템(예를 들어, 원격 액세스 또는 클라우드 시스템)에서 서버(2206a)로서 사용될 수 있다. 컴퓨팅 장치(2201)는 RAM(2205), ROM(2207), 입/출력(I/O) 모듈(2209), 및 메모리(2215)를 포함하는, 서버 및 그의 연관된 컴포넌트들의 전체 동작을 제어하기 위한 프로세서(2203)를 가질 수 있다.
I/O 모듈(2209)은 마우스, 키패드, 터치 스크린, 스캐너, 광학 판독기, 및/또는 컴퓨팅 장치(201)의 사용자가 입력을 제공할 수 있는 스타일러스(또는 기타 입력 장치(들))를 포함할 수 있고, 또한 오디오 출력을 제공하기 위한 스피커 중 하나 이상 및 텍스트, 시청각, 및/또는 그래픽 출력을 제공하기 위한 비디오 디스플레이 장치 중 하나 이상을 포함할 수 있다. 소프트웨어는 메모리(2215) 및/또는 다른 스토리지 내에 저장되어, 본원에 설명된 바와 같은 다양한 기능들을 수행하기 위해 컴퓨팅 장치(2201)를 특수 목적 컴퓨팅 장치로 구성하기 위한 명령어들을 프로세서(2203)에 제공할 수 있다. 예를 들어, 메모리(2215)는 운영 체제(2217), 애플리케이션 프로그램(2219) 및 관련 데이터베이스(2221)와 같은 컴퓨팅 장치(2201)에 의해 사용되는 소프트웨어를 저장할 수 있다.
컴퓨팅 장치(2201)는 단말들(2240)(클라이언트 장치들이라고도 함)과 같은 하나 이상의 원격 컴퓨터들에 대한 연결들을 지원하는 네트워크화된 환경에서 동작할 수 있다. 단말들(2240)은 컴퓨팅 장치(2103 또는 2201)와 관련하여 상기에 설명된 많은 또는 모든 요소들을 포함하는 개인용 컴퓨터들, 모바일 장치들, 랩탑 컴퓨터들, 태블릿들, 또는 서버들일 수 있다. 도 9에 도시된 네트워크 연결들은 로컬 영역 네트워크(LAN)(2225) 및 광역 네트워크(WAN)(2229)를 포함하지만, 다른 네트워크들을 또한 포함할 수 있다. LAN 네트워킹 환경에서 사용될 때, 컴퓨팅 장치(2201)는 네트워크 인터페이스 또는 어댑터(2223)를 통해 LAN(2225)에 연결될 수 있다. WAN 네트워킹 환경에서 사용될 때, 컴퓨팅 장치(2201)는 컴퓨터 네트워크(2230)(예를 들어, 인터넷)와 같은 WAN(2229)을 통한 통신들을 설정하기 위한 모뎀(2227) 또는 다른 광역 네트워크 인터페이스를 포함할 수 있다. 도시된 네트워크 연결들은 예시적인 것이고, 컴퓨터들 사이의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것이 인식될 것이다. 컴퓨팅 장치(2201) 및/또는 단말들(2240)은 또한 배터리, 스피커, 및 안테나들(도시되지 않음)과 같은 다양한 다른 컴포넌트들을 포함하는 모바일 단말들(예를 들어, 모바일 폰들, 스마트폰들, 개인 정보 단말기들(PDA들), 노트북들 등)일 수 있다.
본원에 설명된 양태들은 또한 다수의 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경 또는 구성과 함께 동작할 수 있다. 본원에 설명된 양태들과 함께 사용하기에 적합할 수 있는 다른 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은, 이에 제한되는 것은 아니나, 개인용 컴퓨터들, 서버 컴퓨터들, 핸드-헬드 또는 랩탑 장치들, 멀티프로세서 시스템들, 마이크로프로세서 기반 시스템들, 셋탑 박스들, 프로그램 가능 소비자 전자장치들, 네트워크 개인용 컴퓨터들(PC들), 미니컴퓨터들, 메인프레임 컴퓨터들, 상기 시스템들 또는 장치들 중 어느 하나를 포함하는 분산형 컴퓨팅 환경들 등을 포함한다.
도 22에 도시된 바와 같이, 하나 이상의 클라이언트 장치들(2240)은 하나 이상의 서버들(2206a 내지 1206n)(일반적으로 본원에서는 "서버(들)(2206)"이라고 함)과 통신될 수 있다. 일 실시예에서, 컴퓨팅 환경(2200)은 서버(들)(2206)와 클라이언트 기계(들)(2240) 사이에 설치된 네트워크 어플라이언스를 포함할 수 있다. 네트워크 어플라이언스는 클라이언트/서버 연결들을 관리할 수 있고, 일부 경우에 복수의 백엔드 서버들(2206) 사이에서 클라이언트 연결들을 로드 밸런싱할 수 있다.
클라이언트 기계(들)(2240)은 단일 클라이언트 기계(2240) 또는 단일의 클라이언트 기계 그룹(2240)으로 지칭될 수 있는 한편, 서버(들)(2206)는 단일 서버(2206) 또는 단일의 서버 그룹(2206)로 지칭될 수 있다. 일 실시예에서 단일 클라이언트 기계(2240)는 하나 이상의 서버(2206)와 통신하는 반면, 다른 실시예에서 단일 서버(2206)는 하나 이상의 클라이언트 기계(2240)과 통신한다. 또 다른 실시예에서, 단일 클라이언트 기계(2240)는 단일 서버(2206)와 통신한다.
클라이언트 기계(2240)는 다음의 비-소모적 용어들 중 어느 하나로 참조될 수 있다: 클라이언트 기계(들); 클라이언트(들); 클라이언트 컴퓨터(들); 클라이언트 장치(들); 클라이언트 컴퓨팅 장치(들); 로컬 기계; 원격 기계; 클라이언트 노드(들); 엔트포인트(들); 또는 엔드포인트 노드(들). 서버(2206)는 다음의 비-배타적인 용어들 중 어느 하나로 참조될 수 있다: 서버(들), 로컬 기계; 원격 기계; 서버 팜(들) 또는 호스트 컴퓨팅 장치(들).
일 실시예에서, 클라이언트 기계(2240)는 가상 기계(virtual machine)일 수 있다. 가상 기계는 임의의 가상 기계일 수 있지만, 일부 실시예들에서 가상 기계는 유형 1 또는 유형 2 하이퍼바이저에 의해 관리되는 임의의 가상 기계, 예를 들어, Citrix, IBM, VMware, 또는 임의의 다른 하이퍼바이저에 의해 개발된 하이퍼바이저일 수 있다. 일부 양태들에서, 가상 기계는 하이퍼바이저에 의해 관리될 수 있는 반면, 다른 양태들에서 가상 기계는 서버(2206) 상에서 실행되는 하이퍼바이저 또는 클라이언트(2240) 상에서 실행되는 하이퍼바이저에 의해 관리될 수 있다.
클라이언트 장치(2240)는 서버(2206) 또는 다른 원격으로 위치된 기계 상에서 원격으로 실행되는 애플리케이션에 의해 생성된 애플리케이션 출력을 디스플레이할 수 있고, 클라이언트 장치(2240)는 가상 기계 수신기 프로그램 또는 애플리케이션을 실행하여 애플리케이션 윈도우, 브라우저, 또는 다른 출력 윈도우에서 출력을 디스플레이할 수 있다. 일 예에서, 애플리케이션은 데스크탑인 반면, 다른 예들에서 애플리케이션은 데스크탑을 생성하거나 제시하는 애플리케이션이다. 데스크탑은 로컬 및/또는 원격 애플리케이션들이 통합될 수 있는 운영 체제의 인스턴스에 대한 사용자 인터페이스를 제공하는 그래픽 쉘을 포함할 수 있다. 본원에 사용된 바와 같이, 애플리케이션들은 운영 체제(및, 선택적으로, 또한 데스크탑)의 인스턴스가 로드된 후에 실행되는 프로그램들이다.
서버(2206)는 원격 프리젠테이션 프로토콜 또는 다른 프로그램을 사용하여 서버(2206) 상에서 실행되는 애플리케이션에 의해 생성된 디스플레이 출력을 제시하기 위해 클라이언트 상에서 실행되는 씬(thin)-클라이언트 또는 원격-디스플레이 애플리케이션에 데이터를 전송할 수 있다. 씬-클라이언트 또는 원격-디스플레이 프로토콜은 플로리다주, 포트 로더데일 소재의 Citrix Systems, Inc.에서 개발된 ICA(Independent Computing Architecture) 프로토콜; 또는 워싱턴주, 레드몬드 소재의 Microsoft Corporation에서 제조된 RDP(Remote Desktop Protocol)과 같은 프로토콜일 수 있다.
원격 컴퓨팅 환경은 하나 이상의 서버(2206a 내지 1206n)를 포함하여, 서버들(2206a 내지 1206n)이 예를 들어 클라우드 컴퓨팅 환경에서 서버 팜(2206)으로 논리적으로 함께 그룹화된다. 서버 팜(2206)은 지리적으로 분산되는 반면 논리적으로 함께 그룹화되는 서버들(2206), 또는 서로 근접하게 위치되는 반면 논리적으로 함께 그룹화되는 서버들(2206)을 포함할 수 있다. 서버 팜(2206) 내의 지리적으로 분산된 서버들(2206a 내지 1206n)은 WAN(광역), MAN(메트로폴리탄), 또는 LAN(로컬)을 사용하여 통신할 수 있으며, 여기서 상이한 지리적 영역들은 다른 대륙; 대륙의 다른 지역들; 다른 나라들; 다른 주들; 다른 도시들; 다른 캠퍼스들; 다른 방들; 또는 이전 지리적 위치들의 임의의 조합과 같이 특징지어질 수 있다. 서버 팜(2206)은 단일 엔티티로서 관리될 수 있거나, 서버 팜(2206)은 다수의 서버 팜들을 포함할 수 있다.
서버 팜은 실질적으로 유사한 유형의 운영 체제 플랫폼(예를 들어, WINDOWS, UNIX, LINUX, iOS, ANDROID, SYMBIAN 등)을 실행하는 서버들(2206)을 포함할 수 있다. 서버 팜(2206)은 제1 유형의 운영 체제 플랫폼을 실행하는 하나 이상의 서버들의 제1 그룹, 및 제2 유형의 운영 체제 플랫폼을 실행하는 하나 이상의 서버들의 제2 그룹을 포함할 수 있다.
서버(2206)는 필요에 따라 임의의 유형의 서버, 예를 들어, 파일 서버, 애플리케이션 서버, 웹 서버, 프록시 서버, 어플라이언스, 네트워크 어플라이언스, 게이트웨이, 애플리케이션 게이트웨이, 게이트웨이 서버, 가상화 서버, 배포 서버, SSL(Secure Sockets Layer) VPN 서버, 방화벽, 웹 서버, 애플리케이션 서버로서 또는 마스터 애플리케이션 서버, 액티브 디렉토리를 실행하는 서버, 또는 방화벽 기능, 애플리케이션 기능, 또는 로드 밸런싱 기능을 제공하는 애플리케이션 가속 프로그램을 실행하는 서버로서 구성될 수 있다. 다른 서버 유형들도 사용될 수 있다.
제1 서버(2206a)는 클라이언트 기계(2240)로부터 요청들을 수신하고, 요청들을 제2 서버(2206b)(도시되지 않음)에 포워딩하고, 제2 서버(2206b)(도시되지 않음)로부터의 응답으로 클라이언트 기계(2240)에 의해 생성된 요청에 응답할 수 있다. 제1 서버(2206a)는 클라이언트 기계(2240)에 이용가능한 애플리케이션들의 열거 및 애플리케이션들의 열거 내에서 식별된 애플리케이션을 호스팅하는 애플리케이션 서버(2206)와 연관된 어드레스 정보를 획득할 수 있다. 그런 다음, 제1 서버(2206a)는 웹 인터페이스를 사용하여 클라이언트의 요청에 대한 응답을 제공할 수 있고, 클라이언트(2240)와 직접 통신하여 클라이언트(2240)에 식별된 애플리케이션에 대한 액세스를 제공할 수 있다. 하나 이상의 클라이언트들(2240) 및/또는 하나 이상의 서버들(2206)은 네트워크(2230), 예를 들어, 네트워크(2101)를 통해 데이터를 전송할 수 있다.
본 개시의 양태들은 그의 예시적인 실시예들의 관점에서 설명되었다. 첨부된 청구항의 범위 및 사상 내의 수많은 다른 실시예들, 수정들 및 변형들은 본 개시의 검토로부터 당업자에게 발생할 것이다. 예를 들어, 당업자는 예시적인 도면들에 예시된 단계들이 인용된 순서 이외의 다른 순서로 수행될 수 있고 하나 이상의 예시된 단계들이 선택적일 수 있음을 인식할 것이다. 다음의 청구 범위의 어느 하나 및 모든 특징들은 가능한 모든 방식으로 결합되거나 재배열될 수 있다.

Claims (20)

  1. 방법에 있어서,
    게이트키퍼에 의해, 복수의 패킷들을 수신하는 단계;
    패킷 정보에 기초하여, 상기 복수의 패킷들의 각 개별 패킷이 도메인 네임 시스템(DNS) 쿼리 요청을 포함하는지 여부를 결정하는 단계;
    상기 복수의 패킷들 중 제1 패킷이 DNS 쿼리 요청을 포함한다는 결정에 기초하여, 확률적 데이터 구조를 테스트하여 상기 제1 패킷의 제1 DNS 쿼리 요청의 제1 도메인 네임이 상기 확률적 데이터 구조에 제시되는지 여부를 결정하는 단계;
    상기 제1 DNS 쿼리 요청의 상기 제1 도메인 네임이 상기 확률적 데이터 구조에 제시되지 않는다는 결정에 기초하여, 적어도 하나의 기준에 기초하여, 상기 제1 DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타내는지 여부를 결정하는 단계; 및
    상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다는 결정에 기초하여, 상기 제1 DNS 쿼리 요청을 드롭하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다는 상기 결정에 기초하여, 상기 제1 DNS 쿼리 요청에 대한 데이터를 관리 서버로 전송하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서,
    상기 복수의 패킷들 중 제2 패킷이 DNS 쿼리 요청을 포함하지 않는다는 결정에 기초하여, 상기 제2 패킷을 그의 의도된 목적지를 향해 전송하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서,
    상기 복수의 패킷들 중 제2 패킷이 제2 DNS 쿼리 요청을 포함한다는 결정에 기초하여, 상기 확률적 데이터 구조를 테스트하여 상기 제2 패킷의 상기 제2 DNS 쿼리 요청의 제2 도메인 네임이 상기 확률적 데이터 구조에 제시되는지 여부를 결정하는 단계;
    상기 제2 DNS 쿼리 요청의 상기 제2 도메인 네임이 상기 확률적 데이터 구조에 제시되지 않는다는 결정에 기초하여, 상기 제2 DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타내는지 여부를 결정하는 단계; 및
    상기 제2 패킷의 상기 제2 DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타낸다는 결정에 기초하여, 상기 제2 패킷을 그의 의도된 목적지를 향해 전송하는 단계를 더 포함하는, 방법.
  5. 제4항에 있어서,
    상기 제2 DNS 쿼리 요청에 대한 응답을 위해 네트워크 트래픽을 모니터링하는 단계;
    상기 제2 DNS 쿼리 요청에 대한 상기 응답이 상기 제2 DNS 쿼리 요청이 성공적으로 완료되었음을 나타낸다는 결정에 기초하여, 상기 제2 DNS 쿼리 요청의 상기 제2 도메인 네임을 상기 확률적 데이터 구조에 삽입하는 단계; 및
    상기 제2 DNS 쿼리 요청의 상기 제2 도메인 네임을 관리 서버로 전송하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서, 상기 제1 DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타내는지 여부에 대한 결정은,
    수신된 유효하지 않은 DNS 쿼리 요청들의 레이트를 결정하는 단계;
    상기 수신된 유효하지 않은 DNS 쿼리 요청들의 레이트가 임계치를 충족하는지 여부를 결정하는 단계; 및
    상기 수신된 유효하지 않은 DNS 쿼리 요청들의 레이트가 임계치를 충족한다는 결정에 기초하여, 상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다고 결정하는 단계를 포함하는, 방법.
  7. 제1항에 있어서, 상기 제1 DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타내는지 여부에 대한 결정은,
    국가 코드가 상기 제1 DNS 쿼리 요청과 연관되는지 여부를 결정하는 단계;
    상기 제1 DNS 쿼리 요청과 연관된 상기 국가 코드가 등록 래그(lag)를 나타내는지 여부를 결정하는 단계; 및
    상기 제1 DNS 쿼리 요청과 연관된 상기 국가 코드가 등록 래그를 나타내지 않는다는 결정에 기초하여, 상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다고 결정하는 단계를 포함하는, 방법.
  8. 제1항에 있어서, 상기 확률적 데이터 구조는 블룸(Bloom) 필터인, 방법.
  9. 제1항에 있어서, 상기 적어도 하나의 기준은,
    불량, 위조 또는 등록 해제된 도메인 네임(DNS) 요청들의 레이트;
    상기 제1 DNS 쿼리 요청의 하나 이상의 부분들이 인간 언어 단어들과 상관되는지 여부;
    상기 제1 DNS 쿼리 요청과 연관된 하나 이상의 라벨들의 길이들;
    상기 제1 DNS 쿼리 요청과 연관된 국가 코드;
    상기 확률적 데이터 구조에 대해 수신된 업데이트들의 타이밍; 또는
    상기 제1 DNS 쿼리 요청과 연관된 도메인 네임의 구문적 특징들 중 하나 이상을 포함하는, 방법.
  10. 컴퓨팅 장치에 있어서,
    적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 의해 실행 시, 상기 컴퓨팅 장치가,
    복수의 패킷들을 수신하고;
    패킷 정보에 기초하여, 상기 복수의 패킷들의 각 개별 패킷이 도메인 네임 시스템(DNS) 쿼리 요청을 포함하는지 여부를 결정하고;
    상기 복수의 패킷들 중 제1 패킷이 DNS 쿼리 요청을 포함한다는 결정에 기초하여, 확률적 데이터 구조를 테스트하여 상기 제1 패킷의 제1 DNS 쿼리 요청의 제1 도메인 네임이 상기 확률적 데이터 구조에 제시되는지 여부를 결정하고;
    상기 제1 DNS 쿼리 요청의 상기 제1 도메인 네임이 상기 확률적 데이터 구조에 제시되지 않는다는 결정에 기초하여, 적어도 하나의 기준에 기초하여, 상기 제1 DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타내는지 여부를 결정하고;
    상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다는 결정에 기초하여, 상기 제1 DNS 쿼리 요청을 드롭하도록 하는 명령어들을 포함하는 메모리를 포함하는, 컴퓨팅 장치.
  11. 제10항에 있어서, 상기 메모리는 상기 컴퓨팅 장치가,
    상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다는 상기 결정에 기초하여, 상기 제1 DNS 쿼리 요청에 대한 데이터를 관리 서버에 전송하도록 하는 명령어들을 더 포함하는, 컴퓨팅 장치.
  12. 제10항에 있어서, 상기 메모리는 상기 컴퓨팅 장치가,
    상기 복수의 패킷들 중 제2 패킷이 DNS 쿼리 요청을 포함하지 않는다는 결정에 기초하여, 상기 제2 패킷을 그의 의도된 목적지를 향해 전송하도록 하는 명령어들을 더 포함하는, 컴퓨팅 장치.
  13. 제10항에 있어서, 상기 메모리는 상기 컴퓨팅 장치가,
    제2 DNS 쿼리 요청에 대한 응답을 위해 네트워크 트래픽을 모니터링하고;
    상기 제2 DNS 쿼리 요청에 대한 상기 응답이 상기 제2 DNS 쿼리 요청이 성공적으로 완료되었음을 나타낸다는 결정에 기초하여, 상기 제2 DNS 쿼리 요청의 제2 도메인 네임을 상기 확률적 데이터 구조에 삽입하고;
    상기 제2 DNS 쿼리 요청의 상기 제2 도메인 네임을 관리 서버에 전송하도록 하는 명령어들을 더 포함하는, 컴퓨팅 장치.
  14. 제10항에 있어서, 상기 메모리는 상기 컴퓨팅 장치가,
    수신된 유효하지 않은 DNS 쿼리 요청들의 레이트를 결정하고;
    상기 수신된 유효하지 않은 DNS 쿼리 요청들의 레이트가 임계치를 충족하는지 여부를 결정하고;
    상기 수신된 유효하지 않은 DNS 쿼리 요청들의 레이트가 임계치를 충족한다는 결정에 기초하여, 상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다고 결정하도록 하는 명령어들을 더 포함하는, 컴퓨팅 장치.
  15. 제10항에 있어서, 상기 메모리는 상기 컴퓨팅 장치가,
    국가 코드가 상기 제1 DNS 쿼리 요청과 연관되는지 여부를 결정하고;
    상기 제1 DNS 쿼리 요청과 연관된 상기 국가 코드가 합법적인 래그를 나타내는지 여부를 결정하고;
    상기 제1 DNS 쿼리 요청과 연관된 상기 국가 코드가 등록 래그를 나타내지 않는다는 결정에 기초하여, 상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다고 결정하도록 하는 명령어들을 더 포함하는, 컴퓨팅 장치.
  16. 하나 이상의 비일시적 컴퓨터 판독 가능 매체로서, 컴퓨팅 시스템의 하나 이상의 프로세서들에 의해 실행 시, 상기 컴퓨팅 시스템이,
    복수의 패킷들을 수신하고;
    패킷 정보에 기초하여, 상기 복수의 패킷들의 각 개별 패킷이 도메인 네임 시스템(DNS) 쿼리 요청을 포함하는지 여부를 결정하고;
    상기 복수의 패킷들 중 제1 패킷이 DNS 쿼리 요청을 포함한다는 결정에 기초하여, 확률적 데이터 구조를 테스트하여 상기 제1 패킷의 제1 DNS 쿼리 요청의 제1 도메인 네임이 상기 확률적 데이터 구조에 제시되는지 여부를 결정하고;
    상기 제1 DNS 쿼리 요청의 상기 제1 도메인 네임이 상기 확률적 데이터 구조에 제시되지 않는다는 결정에 기초하여, 적어도 하나의 기준에 기초하여, 상기 제1 DNS 쿼리 요청이 합법적인 DNS 쿼리 요청을 나타내는지 여부를 결정하고;
    상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다는 결정에 기초하여, 상기 제1 DNS 쿼리 요청을 드롭하도록 하는 명령어들을 포함하는, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  17. 제16항에 있어서, 상기 컴퓨팅 시스템이,
    상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다는 상기 결정에 기초하여, 상기 제1 DNS 쿼리 요청에 대한 데이터를 관리 서버에 전송하도록 하는 명령어들을 더 포함하는, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  18. 제16항에 있어서, 상기 컴퓨팅 시스템이,
    상기 복수의 패킷들 중 제2 패킷이 DNS 쿼리 요청을 포함하지 않는다는 결정에 기초하여, 상기 제2 패킷을 그의 의도된 목적지를 향해 전송하도록 하는 명령어들을 더 포함하는, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  19. 제16항에 있어서, 상기 컴퓨팅 시스템이,
    수신된 유효하지 않은 DNS 쿼리 요청들의 레이트를 결정하고;
    상기 수신된 유효하지 않은 DNS 쿼리 요청들의 레이트가 임계치를 충족하는지 여부를 결정하고;
    상기 수신된 유효하지 않은 DNS 쿼리 요청들의 레이트가 임계치를 충족한다는 결정에 기초하여, 상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다고 결정하도록 하는 명령어들을 더 포함하는, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
  20. 제16항에 있어서, 상기 컴퓨팅 시스템이,
    국가 코드가 상기 제1 DNS 쿼리 요청과 연관되는지 여부를 결정하고;
    상기 제1 DNS 쿼리 요청과 연관된 상기 국가 코드가 등록 래그를 나타내는지 여부를 결정하고;
    상기 제1 DNS 쿼리 요청과 연관된 상기 국가 코드가 등록 래그를 나타내지 않는다는 결정에 기초하여, 상기 복수의 패킷들 중 상기 제1 패킷이 합법적인 DNS 쿼리 요청을 나타내지 않는다고 결정하도록 하는 명령어들을 더 포함하는, 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
KR1020227021281A 2019-11-22 2020-11-23 도메인 네임 시스템과 연관된 공격을 방지하기 위한 방법 및 시스템 KR102681031B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/692,365 2019-11-22
US16/692,365 US11012414B2 (en) 2019-04-30 2019-11-22 Methods and systems for prevention of attacks associated with the domain name system
PCT/US2020/061805 WO2021102414A1 (en) 2019-11-22 2020-11-23 Methods and systems for prevention of attacks associated with the domain name system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020247021789A Division KR20240110080A (ko) 2019-11-22 2020-11-23 도메인 네임 시스템과 연관된 공격을 방지하기 위한 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20220101190A true KR20220101190A (ko) 2022-07-19
KR102681031B1 KR102681031B1 (ko) 2024-07-04

Family

ID=

Also Published As

Publication number Publication date
EP4059202A1 (en) 2022-09-21
WO2021102414A1 (en) 2021-05-27
CN114902607A (zh) 2022-08-12
JP2023502361A (ja) 2023-01-24

Similar Documents

Publication Publication Date Title
US11902250B2 (en) Methods and systems for prevention of attacks associated with the domain name system
CN114095198B (zh) 用于网络安全应用的高效加密sni过滤的方法和系统
US10356097B2 (en) Domain name system and method of operating using restricted channels
US9838413B2 (en) Zero day threat detection based on fast flux detection and aggregation
US20190260801A1 (en) Combining internet routing information with access logs to assess risk of user exposure
US9503424B2 (en) Dynamic resolution of fully qualified domain name (FQDN) address objects in policy definitions
US9860265B2 (en) System and method for identifying exploitable weak points in a network
CN114641968B (zh) 用于移动设备的有效网络保护的方法和系统
US9215212B2 (en) Systems and methods for providing a visualizer for rules of an application firewall
US11516257B2 (en) Device discovery for cloud-based network security gateways
US20080082662A1 (en) Method and apparatus for controlling access to network resources based on reputation
US12021835B2 (en) Methods and systems for efficient packet filtering
US8077622B2 (en) Systems and methods for efficiently load balancing based on least connections
Bushart et al. DNS unchained: Amplified application-layer DoS attacks against DNS authoritatives
US11005736B2 (en) Determining traceability of network traffic over a communications network
JP2023502361A (ja) ドメイン・ネーム・システムに関連する攻撃を防止するための方法およびシステム
KR102681031B1 (ko) 도메인 네임 시스템과 연관된 공격을 방지하기 위한 방법 및 시스템
KR20240110080A (ko) 도메인 네임 시스템과 연관된 공격을 방지하기 위한 방법 및 시스템
Hao On The Impact of Internet Naming Evolution: Deployment, Performance, and Security Implications

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right