KR101026558B1 - 네트워크 방화벽을 구현하기 위한 다층 기반 방법 - Google Patents

네트워크 방화벽을 구현하기 위한 다층 기반 방법 Download PDF

Info

Publication number
KR101026558B1
KR101026558B1 KR1020040041339A KR20040041339A KR101026558B1 KR 101026558 B1 KR101026558 B1 KR 101026558B1 KR 1020040041339 A KR1020040041339 A KR 1020040041339A KR 20040041339 A KR20040041339 A KR 20040041339A KR 101026558 B1 KR101026558 B1 KR 101026558B1
Authority
KR
South Korea
Prior art keywords
packet
layer
firewall
filter
network device
Prior art date
Application number
KR1020040041339A
Other languages
English (en)
Other versions
KR20040105602A (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
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040105602A publication Critical patent/KR20040105602A/ko
Application granted granted Critical
Publication of KR101026558B1 publication Critical patent/KR101026558B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/22Arrangements for preventing the taking of data from a data transmission channel without authorisation
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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/0236Filtering by address, protocol, port number or service, e.g. IP-address or URL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates

Abstract

방화벽 아키텍처의 방화벽을 구현하기 위한 방법이 제공된다. 방화벽 아키텍처는 복수의 네트워크 계층 및 제1 방화벽 엔진을 포함한다. 상기 계층들은 제1 방화벽 엔진에 패킷 및 패킷 정보를 보내며, 패킷 콘텍스트를 보유하고 이를 후속 계층들에 전달하며, 패킷을 처리한다. 제1 방화벽 엔진은 패킷 정보를 하나 이상의 설치된 필터와 비교하고, 패킷을 처리하는 방법을 지시하는 계층에 액션을 리턴한다.
Figure R1020040041339
방화벽 아키텍처, 네트워크 계층, 방화벽 엔진, 패킷 정보, 패킷 콘텍스트

Description

네트워크 방화벽을 구현하기 위한 다층 기반 방법{A MULTI-LAYER BASED METHOD FOR IMPLEMENTING NETWORK FIREWALLS}
도 1은 본 발명이 실시되는 예시적인 컴퓨터 시스템을 개략적으로 도시하는 블럭도.
도 2는 본 발명이 사용되는 예시적인 네트워크 환경을 개략적으로 도시하는 블럭도.
도 3은 본 발명의 방법이 사용될 수 있는 방화벽 아키텍처를 개략적으로 도시하는 블럭도.
도 4는 본 발명에 사용되는 예시적인 필터를 도시하는 블럭도.
도 5는 본 발명에 사용되는 예시적인 패킷 콘텍스트용 데이터 구조를 도시하는 블럭도.
도 6은 본 발명에 사용되는 예시적인 애플리케이션 프로그래밍 인터페이스들의 세트를 도시하는 블럭도.
도 7은 본 발명에 사용되는 예시적인 애플리케이션 프로그래밍 인터페이스를 도시하는 블럭도.
도 8은 본 발명에 따른 네트워크 계층들에 의해 실행되는 기능들을 도시하는 블럭도.
도 9는 본 발명에 사용되는 예시적인 콜아웃들의 세트를 도시하는 블럭도.
도 10은 본 발명에 따른 방화벽을 구현하는 데 사용되는 예시적인 방법을 도시하는 흐름도.
도 11은 방화벽을 구현하기 위해 네트워크 계층들에 의해 사용되는 예시적인 방법을 도시하는 흐름도.
도 12는 방화벽을 구현하기 위해 방화벽 엔진에 의해 사용되는 예시적인 방법을 도시하는 흐름도.
도 13은 신뢰하는 네트워크 디바이스에 의해 개시되는 방화벽을 통해 비요청 통신을 허가하는 데 사용되는 방법을 도시하는 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
266 : 필터 엔진 API
270 : 전송 계층
272 : 네트워크 계층
274 : 연결 계층
280 : 계층 API
284 : 콜아웃 API
288 : 키잉 모듈 API
290 : 관리 API
294 : 필터 모듈
<관련 출원>
본 출원은, 본 출원과 동일자에 제출된 미국특허출원으로서 대리인등록번호 제221038호의 "다계층 방화벽 아키텍처(Multi-layered Firewall Architecture)"; 대리인등록번호 제221041호의 "복수의 네트워크 정책을 통합하는 방법과 프레임워크(Method and Framework for integrating a Plurality of Network Policies)"; 및 대리인등록번호 제221037호의 "네트워크 필터 기반 정책의 관리 방법(Method for Managing Network Filter Based Policy)"에 관한 실체적인 내용을 포함하고, 상기 출원들의 개시 내용은 본 명세서에 참고로서 포함되어 있음을 밝힌다.
본 발명은 일반적으로 컴퓨터 시스템 및 네트워크 보안에 관한 것이다. 특히, 본 발명은 네트워크 디바이스에 방화벽을 구현하는 방법에 관한 것이다.
네트워크 프로토콜은 개방형 데이터 교환을 통해 네트워크 디바이스들 간의 통신을 용이하게 하도록 설계되었다. 개방형 데이터 교환은 네트워크 디바이스를 사용한 태스크 수행을 상당히 개선시키지만, 네트워크 프로토콜이 네트워크 보안을 위해 설계된 것이 아니며 또한 일반적으로 네트워크 보안을 제공하지 않기 때문에, 문제점을 야기하기도 한다. LAN(Local Area Network), WAN(Wide Area Network), 인트라넷, 인터넷 등의 공중 네트워크(public network)와 사설 네트워크(private network) 모두에 접속된 컴퓨터는 직접적으로 혹은 간접적으로 네트워크에 연결된 다른 네트워크 디바이스에 의해 행해지는 악의적 공격에 취약하다. 이러한 악의적 공격으로는 데이터 도난, DOS(Denial of Service) 공격, 컴퓨터 바이러스 유포 등이 포함된다. 아동이 바람직하지 않은 웹사이트나 부적절한 웹사이트에 접근하는 것을 제어하는 것과 같은 다른 관련 문제들도 컴퓨터를 네트워크에 접속하는 경우에 발생한다.
방화벽은 일반적으로 개인 사용자, 네트워크 디바이스, 및 네트워크를 악의적 공격으로부터 보호하는 데 사용되는 도구로서, 정책(policy)을 구현함으로써 네트워크를 통한 데이터 교환을 제어하는 능력을 추가하고 있다. 방화벽은 네트워크 패킷을 검사하고, 이 패킷들이 네트워크를 통과하는 것이 허가되어야 하는지, 그렇지 않으면 차단되어야 하는지를 상기 검사에 기초하여 판정함으로써 정책을 구현한다.
방화벽을 통해 구현되는 정책은 하나 이상의 필터에 의해 정의된다. 각각의 필터는 필터 파라미터 및 이에 연관된 액션(action)을 포함한다. 필터 파라미터는 방화벽 정책의 적용을 받는 네트워크 패킷을 식별하는 데 사용되는 것으로서, MAC(Media Access Control) 어드레스와 같은 하드웨어 어드레스, IP(Internet Protocol) 어드레스와 같은 네트워크 어드레스, TCP(Transprot Control Protocol)와 같은 프로토콜 타입, 포트 번호 등의 정보를 포함한다. 액션은 필터 파라미터에 매칭(matching)되는 파라미터를 갖는 패킷이 어떻게 처리되어야 하는지를 정의하는 것이다. 일 특정 예로서, 필터는 파라미터로서 "http://www.foo.com"와 같은 URL(Uniform Resource Locator) 어드레스를 포함한다. 또한, 필터는 차단 액션 즉, 소정의 URL 어드레스를 갖는 패킷을 드롭(drop)시키는 것에 관련된다. 방화벽 은 패킷을 검사하고, 검사를 통해서 상기 패킷에 임베딩(embedding)되어 있는 URL 어드레스 "http://www.foo.com"을 식별할 때마다 상기 패킷을 드롭시킴으로써, 해당 패킷이 네트워크를 통과하는 것을 저지한다.
네트워크 디바이스는 계층적 네트워크 아키텍처(layered network architecture)를 포함하는 네트워크 스택(network stack)을 통해 패킷을 송수신함으로써 데이터를 교환한다. 다른 네트워크 아키텍처 모델들도 존재하지만, 그 대부분은 적어도 응용 계층(application layer), 전송 계층(transport layer), 네트워크 계층, 및 연결 계층(link layer)을 포함한다. 네트워크 패킷은 각 계층을 순차적으로 통과하며, 각 계층을 통과할 때마다 처리를 받는다. 아웃바운드 패킷(outbound packet)의 경우, 응용 계층은 예컨대 HTTP(Hypertext Transfer Protocol), FTP(File Transfer Protocol), SMTP(Simple Mail Transfer Protocol) 등의 응용 프로토콜에 따라 데이터를 처리한다. 네트워크 계층, 전송 계층 등의 기타 계층들은 TCP 헤더 및 IP 헤더에 데이터를 임베딩함으로써 해당 데이터를 패킷화한다. 상기 계층들은 인바운드 패킷(inbound packet)에 대해서는 예컨대 헤더를 파싱(parsing)하고, 패킷화된 데이터를 해제하는 등의 역처리를 수행한다. 계층적 "스택" 아키텍처 및 계층들에 의해 수행되는 처리 기능은 다이내믹 패킷 구조(dynamic packet structure)가 되고, 이로써, 패킷 파라미터를 포함하는 패킷의 내용은 그 패킷이 네트워크 프로토콜 스택을 통과할 때 변경된다.
방화벽은 계층적 네트워크 스택이 위치하는 감시 지점(inspection point)에서 패킷을 검사한다. 일 양상에서, 검사 지점은 응용 계층에 있다. 예를 들어, 방화벽은 LSP(Layered Service Provider)로서 배치된다. 응용 계층의 패킷은, 다른 네트워크 디바이스로 전송될 예정이거나 다른 네트워크 디바이스로부터 수신된 기본 데이터를 포함한다. 응용 계층의 패킷을 검사하는 것은, 방화벽으로 하여금, URL 어드레스 등의 응용 계층 파라미터를 식별하고 응용 계층 파라미터를 필터 파라미터와 비교하게 한다. 그러나, IP 어드레스, 포트 번호, MAC 어드레스 등의 다른 패킷 파라미터는 아웃바운드 패킷에 부가되지 않거나 인바운드 패킷으로부터 파싱되어 제거되기 때문에 이용 가능하지 않다.
다른 양상에서, 방화벽 감시 지점은 네트워크 스택의 보다 하위 레벨에서 연결 계층과 네트워크 계층 사이에 개재하는 중간 드라이버(intermediate driver)로서 구현된다. 네트워크 스택의 하위 레벨의 패킷은, 인터페이스 번호, MAC 어드레스, IP 어드레스, 프로토콜 타입, 포트, 및 페이로드 데이터(payload data) 등의 최대 개수의 파라미터를 포함한다. 상기 패킷이 이러한 파라미터들을 포함할지라도, 상기 파라미터들이 용이하게 식별 가능하게 되는 것은 아니다. 방화벽은 패킷을 수신한 후 필터 파라미터와의 비교를 위해 관련 패킷 파라미터를 파싱하고 해석할 필요가 있다. 그 결과, 네트워크 스택의 계층과 방화벽 양측에서 중복(redundant) 패킷 파싱 및 해석 기능을 수행한다.
본 발명은 방화벽 프레임워크(firewall framework)의 방화벽을 구현하는 방법에 관한 것이다. 방화벽 프레임워크는 복수의 계층을 포함하고, 각 계층은 해당 계층 프로토콜(layer protocol)에 따라 패킷을 처리할 수 있으며, 패킷에 적용될 방화벽 정책을 요청할 수 있다. 또한, 방화벽 프레임워크는 복수의 필터가 설치(install)된 방화벽 엔진을 포함한다.
요청 계층(requesting layer)은 복수의 계층 중 이전의 계층으로부터 네트워크 패킷을 수신한다. 요청 계층은 패킷으로부터 파라미터들의 세트를 식별하고, 파라미터들의 세트를 사용하여 방화벽 엔진에 분류 호출(classification call)을 발행한다. 그에 대한 응답으로, 방화벽 엔진은 요청 계층에 액션을 리턴(return)한다. 상기 액션이 상기 패킷으로 하여금 복수의 계층을 계속해서 통과하게 하는 명령인 경우, 요청 계층은 상기 패킷을 계층 프로토콜에 따라 처리하고, 복수의 계층 중 후속 계층으로 보낸다. 이와 달리, 상기 액션이 상기 패킷을 드롭하라는 명령인 경우에는, 요청 계층은 패킷을 처리하지 않고, 후속 계층으로 보내지 않는다.
설치된 필터들의 세트의 각 필터는 필터 조건(filter condition)들의 세트 및 액션을 포함한다. 요청 계층이 분류 호출을 발행하면, 방화벽 엔진은 설치된 복수의 필터 중 어느 필터가 파라미터들의 세트에 매칭되는지를 판정한다. 이어서, 방화벽 엔진은 매칭되는 필터의 정보에 기초하여 액션을 리턴한다.
또한, 본 발명은, 신뢰하는 개시 디바이스(trusted initiating device)로부터의 패킷으로 하여금, 일반적으로 비요청(unsolicited) 인바운드 패킷을 차단하도록 구성된 방화벽을 통과하여 응답 디바이스(responding device)에 도달하게 하는 방법을 제공한다. 개시 디바이스는 먼저 키 협상 프로토콜(key negotiation protocol)을 이용하여 인증에 착수한다. 인증 결과가 합격이면, 응답 컴퓨터는 개시 컴퓨터로부터의 패킷으로 하여금 응답 컴퓨터의 타겟 프로세스에 도달하게 하는 필터를 생성한다.
본 발명의 추가의 특징과 이점은 예시적인 실시예에 대한 이하의 상세한 설명으로부터 분명하게 될 것이며, 이러한 상세한 설명은 첨부된 도면을 참조로 진행된다.
이하의 특허청구범위에 본 발명의 특징들이 구체적으로 설명되어 있지만, 본 발명 및 그 목적과 이점들은 첨부 도면을 참조하여 이루어지는 이하의 상세한 설명으로부터 가장 바람직하게 이해될 것이다.
네트워크 디바이스에 방화벽 아키텍처에 따른 방화벽을 구현하는 방법이 개시된다. 본 방법은 프로토콜 스택의 복수의 계층의 필터들에 의해 네트워크 패킷이 처리되게 한다. 본 발명의 일 실시예에서, 본 방법 및 방화벽 아키텍처는 커널 모드 프로세스(kernel mode process) 및 사용자 모드 프로세서(user mode process)라고 불리는 복수의 오퍼레이팅 시스템 프로세스로 구현된다. 대안으로, 본 방법 및 아키텍처는 단일의 오퍼레이팅 시스템 프로세스로 구현되거나, 오퍼레이팅 시스템의 외부에서 실행되는 하나 이상의 프로그램 모듈 또는 애플리케이션 프로그램으로 구현된다.
커널 모드 프로세스는 프로토콜 스택, 커널 방화벽 엔진, 및 하나 이상의 콜아웃(callout)을 포함한다. 프로토콜 스택은 응용 계층, 전송 계층, 네트워크 계층, 및 연결 계층을 포함한다. 필요에 따라, 추가의 계층이 시스템에 부가되거나 시스템으로부터 삭제된다. 계층들 각각은, 이전의 계층 또는 프로세스로부터 네트 워크 패킷 및 이에 대응하는 패킷 콘텍스트 데이터(packet context data)를 수신하는 요청 계층을 형성한다. 다음으로, 요청 계층은 계층 API를 통해 커널 방화벽 엔진에 분류 요청을 발행한다. 분류 요청은 요청 계층에서 수신한 패킷, 패킷 콘텍스트, 및 요청 계층과 연관된 계층 파라미터들의 세트를 포함한다. 커널 방화벽 엔진은 요청을 처리하고, 액션을 리턴한다. 예를 들어, 액션은 요청 계층이 패킷을 어떻게 처리할지(예컨대, 허가할지 혹은 차단할지)를 지시한다. 액션이 허가하라는 것인 경우에는, 요청 계층은 계층 프로토콜에 따라 패킷을 처리하고, 계층 파라미터를 포함하도록 패킷 콘텍스트를 변경하여, 패킷 및 패킷 콘텍스트를 후속하는 계층으로 전달한다. 액션이 차단하라는 것인 경우에는, 요청 계층은 패킷을 드롭시키고, 그 패킷을 후속 계층으로 전달하지 않는다. 요청 계층은, 차단 액션의 결과로서 TCP 접속을 해제하는 것 등의 추가의 기능을 수행할 수 있다.
커널 방화벽 엔진은 계층 API, 설치된 필터들의 세트, 및 콜아웃 API를 포함한다. 설치된 필터들의 세트의 각 필터는 필터 조건들의 세트 및 이에 연관된 액션을 포함한다. 커널 방화벽 엔진은 매칭되는 하나 이상의 필터를 식별함으로써 요청 계층으로부터 보내어진 분류 요청을 처리한다. 매칭되는 필터들은 계층 파라미터 및 패킷 콘텍스트에 매칭되는 필터 조건을 갖는다. 매칭 필터가 식별되면, 이 필터는 필터 우선순위(priority)의 순위에 따르게 된다. 적용되는 필터링의 액션이 허가하는 것이거나 차단하는 것인 경우에, 그 액션은 요청 계층으로 리턴된다. 상기 액션이 콜아웃인 경우, 요청 계층에서 발행한 분류 요청은 매칭 필터 식별자와 함께 콜아웃 모듈들 중 하나로 전달된다. 콜아웃 모듈은 콜아웃 모듈에 프 로그래밍된 기능을 수행하고, 액션을 커널 방화벽 엔진으로 리턴한다. 소정의 패킷에 대해 어떠한 매칭 필터도 식별되지 않는 경우, 요청 계층은 매칭 필터가 존재하지 않는다는 통지를 받게 된다. 그러면, 요청 계층은 그 패킷을 어떻게 처리할지를 정한다.
예시적인 사용자 모드 프로세스는 사용자 모드 방화벽 엔진 및 하나 이상의 정책 제공자(policy provider)를 포함한다. 정책 제공자는 휘발성 또는 비휘발성 메모리 등의 임의의 적절한 소스(source)로부터 정책를 획득한다. 정책은, 필터 조건들의 세트 및 이에 연관된 액션을 포함한, 새로운 필터에 제공하기 위한 정보의 소스이다. 사용자 방화벽 엔진은 필터 엔진 API를 통해 커널 방화벽 엔진에 설치된 필터들의 세트에 새로운 필터를 부가한다.
또한, 사용자 모드는 커널 방화벽 엔진의 인스턴스(instance)를 포함함으로써 사용자 모드 계층이 생성될 수 있게 한다. 그리고, 사용자 모드 계층은, 사용자 모드 내에서 필터링을 적용할 수 있게 하는 파라미터들의 세트에 매칭되는 필터를 식별하기 위해 커널 방화벽 엔진의 사용자 모드 인스턴스를 사용한다.
본 발명의 일 실시예에서, 커널 방화벽 엔진으로부터 콜아웃 모듈들의 세트로의 콜아웃 인터페이스는, 방화벽 기능의 실질적으로 무제한의 확장을 가능하게 한다. 예를 들면, HTTP 콘텍스트 콜아웃은, 허용 가능한 URL 어드레스와 허용 불가한 URL 어드레스를 식별함으로써 자녀 보호 기능(parental feature)을 제공한다. IPSec(Internet Protocol Security) 콜아웃은, 패킷이 IPSec 처리를 적절히 받았는지를 검증한다. 로깅 콜아웃(logging callout)은, 설정된 기준(criteria)을 만족 시키는 패킷을 로깅함으로써, 차후에 있을 패킷 검사를 용이하게 한다. 침입 탐지(intrusion detection) 콜아웃은, 공지된 알고리즘에 기초하여 소정의 혐의가 있는 패킷(suspicious packet)을 식별한다.
또한, 본 발명은, 신뢰하는 네트워크 디바이스와의 비요청 통신을 허가하는 반면, 그 외의 다른 네트워크 디바이스로부터의 비요청 통신은 차단하는 방법을 제공한다.
도면에서 동일한 참조 번호는 동일한 구성 요소를 지칭하며, 본 발명이 적절한 컴퓨팅 환경에서 구현된 것이 예시된 것이다. 본 발명은, 퍼스널 컴퓨터에 의해 실행되는, 프로그램 모듈 등의 컴퓨터 실행 가능 명령(instruction)들과 관련하여 일반적으로 설명될 것이지만, 반드시 그럴 필요는 없다. 일반적으로, 프로그램 모듈은 소정의 태스크(task)를 수행하거나 소정의 추상 데이터 타입(abstrack data type)을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 또한, 본 발명은 통신 네트워크를 통해 링크된 원격 처리 장치에 의해 태스크가 수행되는 분산형 컴퓨팅 환경에서 실시될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 로컬 메모리 저장 장치와 원격 메모리 저장 장치 모두에 배치될 수 있다.
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 도시한다. 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일례이고, 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 동작 환경(100)에 도시된 컴포넌트들 중 임의의 하나 또는 조 합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서는 안된다.
본 발명은 많은 다른 범용 또는 전용 컴퓨팅 시스템 환경들 또는 구성들과 함께 동작될 수 있다. 본 발명과 함께 사용하기에 적합할 수 있는 공지된 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋탑박스(set top box), 프로그램 가능 가전 제품(programmable consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기의 시스템들 또는 장치들 중 임의의 것을 포함하는 분산형 컴퓨팅 환경 등이 포함될 수 있지만, 이에 한정되지 않는다.
본 발명은 컴퓨터에 의해 실행되는, 프로그램 모듈 등의 컴퓨터 실행 가능 명령과 일반적으로 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 소정의 태스크를 수행하거나 소정의 추상 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 또한, 본 발명은 통신 네트워크를 통해 링크된 원격 처리 장치에 의해 태스크를 수행하는 분산형 컴퓨팅 환경에서 실시될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 컴퓨터 저장 매체와 원격 컴퓨터 저장 매체 모두에 배치될 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함한 각종 시스템 컴포 넌트들을 프로세싱 유닛(120)에 접속시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는, 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스(peripheral bus), 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 수 가지 타입의 버스 구조 중 임의의 것일 수 있다. 예로서, 이러한 아키텍처로는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Associate) 로컬 버스, 및 (메자닌(Mezzanine) 버스로도 알려진) PCI(Peripheral Component Interconnect) 버스가 포함되지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 모두 포함한다. 예를 들어, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 컴퓨터 저장 매체로는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체가 포함될 수 있지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메커니즘 등의 변조된 데이터 신호에 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 설정 또는 변환된 특성을 하나 이상 갖는 신호를 의미한다. 예를 들어, 통신 매체로는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선, 및 기타 무선 매체 등의 무선 매체가 포함되지만, 이에 한정되지 않는다. 또한, 상술한 것들 중 임의의 조합이 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동(start-up)과 같은 때에 컴퓨터(110) 내의 구성 요소들 간의 정보 전송을 돕는 기본 루틴을 포함하는 BIOS(basic input/output system)(133)는 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되고 있는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시하지만, 이에 한정되지 않는다.
또한, 컴퓨터(110)는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부 터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM, 기타 광학 매체 등의 분리형 비휘발성 광 디스크(156)로부터 판독하거나 그 광 디스크에 기록하는 광 디스크 드라이브(155)가 도시되어 있다. 예시적인 동작 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD, 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등이 포함되지만, 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 이러한 컴포넌트들은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 이들이 다른 복사본(different copies)임을 나타내기 위하여 다른 참조 번호가 부여된 것이다. 사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161) 및 키보드(162)와 같은 입력 장치를 통해 컴퓨터(110)에 커맨드 및 정보를 입력할 수 있다. (도시되지 않은) 다른 입력 장치로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 포함될 수 있다. 상기 및 그 외의 입력 장치들은 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)에 접속되곤 하지만, 병렬 포트, 게임 포트, USB(universal serial bus)와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터 외에도, 컴퓨터는 출력 주변 인터페이스(195)를 통해 접속될 수 있는 스피커(197), 프린터(196) 등의 기타 주변 출력 장치를 포함할 수도 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속(logical connection)을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 일반적인 네트워크 노드일 수 있으며, 비록 도 1에는 메모리 저장 장치(181)만이 도시되어 있지만, 일반적으로는 컴퓨터(110)에 관하여 상술한 구성 요소 중 다수 또는 전부를 포함할 수 있다. 도 1에 도시된 논리적 접속은 LAN(171)과 WAN(173)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 도 1은 원격 애플리케이션 프로그램(185)이 메모리 장치(181)에 상주하는 것으로 도시하고 있지만, 이에 한정되지 않는다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 구축하는 그 외의 수단이 사용될 수도 있다.
이하의 설명에서, 본 발명은, 특별히 다르게 언급하지 않는 한, 하나 이상의 컴퓨터에 의해 수행되는 동작들의 기호적 표현 및 단계들에 관련하여 기술될 것이다. 여기서, 상기의 동작 및 단계들은, 데이터를 구조화된 형태로 표현하는 전기적 신호들에 대한 컴퓨터의 프로세싱 유닛에 의한 조작을 포함하며, 이를 컴퓨터 실행(computer-executed)이라고 말하기도 한다는 것을 이해하여야 한다. 이러한 조작으로는 데이터를 변형시키거나 데이터를 컴퓨터의 메모리 시스템 내의 소정의 위치들에 보유하는 것이 있는데, 이는, 본 기술 분야의 숙련자가 바람직하게 이해하고 있는 방식으로 컴퓨터의 동작들을 변형시키거나, 혹은 개조하는 것이다. 데이터가 보유되는 데이터 구조는, 데이터 포맷에 의해 정의되는 소정의 특성을 갖는 메모리의 물리적 위치이다. 그러나, 본 발명이 앞서 설명되어 있으나, 이에 한정 되는 것을 의미하는 것이 아니며, 본 기술 분야의 숙련자라면 이하에 설명되는 다양한 동작 및 단계들이 하드웨어로 구현될 수도 있음을 이해할 것이다.
이제부터, 도 2를 참조하여 본 발명의 방화벽 구현 방법이 사용되는 네트워크 환경을 설명한다. 상기 네트워크는, 본 발명의 방법이 임의의 네트워크 구성에 접속된 임의의 네트워크 디바이스에 구현되는 바와 같이, 사실상 예시적인 것이다. 네트워크 환경은 사설 네트워크(200) 및 공중 네트워크(202)를 포함한다. 사설 네트워크(200) 및 공중 네트워크(202)는 LAN, WAN, 인트라넷, 인터넷, 또는 이들의 임의의 조합 등의 임의의 적절한 종류이다.
네트워크 환경은 복수의 네트워크 디바이스(204, 206, 208, 210, 212)를 포함한다. 네트워크 디바이스(204, 206)는 사설 네트워크(200)에 접속되어 있다. 네트워크 디바이스(210, 212)는 공중 네트워크(202)에 접속되어 있다. 네트워크 디바이스(208)는 사설 네트워크(200) 및 공중 네트워크(202) 모두에 접속되어 있고, 두 네트워크 간의 인터페이스를 제공한다. 네트워크 디바이스들은 이더넷(Ethernet) 1394 또는 802.11(b) 등의 임의의 적절한 기술을 이용하여 공중 네트워크 및 사설 네트워크에 접속된다. 또한, 네트워크 디바이스들은 퍼스널 컴퓨터, 서버, 핸드헬드 디바이스, 프린터, 스위치, 라우터, 브리지, 리피터 등의 임의의 적절한 컴퓨팅 디바이스로서 구현된다.
네트워크 디바이스(208)는 방화벽(214) 및 하나 이상의 필터(216)를 포함한다. 방화벽(214)은 본 발명에 따른 방법이 사용되는 방화벽 아키텍처에 따라 구현되는 프로그램 모듈 또는 프로그램 모듈들의 세트이다. 방화벽(214)은 사설 네트 워크(200)에 접속된 네트워크 디바이스들(204, 206, 208)과 공중 네트워크(202)에 접속된 네트워크 디바이스들(210, 212) 간에 교환되는 네트워크 패킷들을 검사한다. 본 발명의 일 실시예에서, 방화벽(214)은 사설 네트워크(200) 내의 네트워크 디바이스로부터 보내진 국부 지향의(locally detined) 네트워크 패킷과 상기 네트워크 디바이스로 보내어지는 국부 지향의 네트워크 패킷을 검사한다.
방화벽(214)은 사설 네트워크(200)와 공중 네트워크(202) 간에 교환되는 네트워크 트래픽을 보호 및 제어하기 위해 네트워크 디바이스(208)에 구현되며, 이러한 방화벽을 엣지 방화벽(edge firewall)이라고 한다. 한편, 방화벽(214)은 네트워크 디바이스(210)로 예시된 바와 같은 단일 네트워크 디바이스를 보호하며, 이 단일 네트워크 디바이스에 구현되는데, 이러한 방화벽을 호스트 방화벽(host firewall)이라고 한다. 또한, 방화벽은 동기화된 방식으로 호스트 및/또는 엣지 방화벽들의 중앙 관리화된(centrally administered) 세트로서 구현될 수 있고, 이러한 방화벽을 분산형 방화벽(distributed firewall)이라고 한다. 방화벽(214)을 구현하는 네트워크 디바이스 또는 네트워크 디바이스들의 배치는, 방화벽(214)이 보호하여야 하는 네트워크 디바이스로 향하는 모든 네트워크 트래픽을 방화벽(214)이 검사할 수 있도록 선택되는 것이 바람직하다.
필터(216)는 방화벽(214)의 일부로서 구현된다. 대안으로, 필터(216)는 방화벽(214)이 액세스할 수 있는 개별 데이터 구조의 일부로서 구현될 수 있다. 방화벽(214) 및 필터(216)는 공중 네트워크에 접속된 네트워크 디바이스들(210, 212)로부터 비롯된 악의적 공격으로부터 네트워크 디바이스들(204, 206, 208)을 보호하 도록 설계된 방화벽 정책을 실행한다. 또한, 방화벽(214)은 자녀 보호 제어, 침입 검출, 네트워크 패킷의 로깅, 및 기타 추가의 필터 기반 기능을 용이하게 하는 등의 추가 기능을 제공한다.
각 필터(216)는 필터 조건들의 세트 및 이에 연관된 하나 이상의 액션을 포함한다. 필터 조건은, 인터페이스 번호, 하드웨어 어드레스, 네트워크 어드레스, 프로토콜 타입, 포트 번호, 페이로드 데이터와 같이 네트워크 패킷으로부터 획득하거나 파싱될 수 있는 파라미터 및 정보를 포함한다. 필터 조건에 연관된 하나 이상의 액션은, 방화벽이 구현된 네트워크 디바이스가 필터 조건에 매칭되는 패킷을 어떻게 처리하여야 하는지를 정의한다. 통상의 액션은 허가(즉, 해당 패킷으로 하여금 네트워크 통과를 계속하게 하는 것)와 차단(즉, 해당 패킷을 드롭시킴으로써 네트워크 통과를 더 이상 불가능하게 하는 것)을 포함한다.
방화벽(214)은 네트워크를 통과하려는 네트워크 패킷을 네트워크 디바이스(208)에서 수신하면 이를 검사하고, 패킷 파라미터를 필터 조건과 비교함으로써 하나 이상의 매칭되는 필터를 식별한다. 매칭 필터는 필터 조건이 패킷 파라미터에 매칭되는 경우에 얻어진다. 필터 조건과 마찬가지로, 패킷 파라미터는 패킷들로부터 획득되거나 파싱되는 정보를 포함한다. 방화벽이 매칭 필터를 식별하면, 필터 조건에 연관된 하나 이상의 액션이 실행된다.
본 명세서에 사용된 패킷이라는 용어는 데이터를 말하는 것이다. 패킷은 네트워크 프로토콜을 따라 포맷된 네트워크 패킷일 수 있고, 혹은 계층, 프로그램, 또는 모듈에 의해 처리되는 데이터 스트림(data stream)일 수 있다.
도 3은 본 발명의 방법이 사용될 수 있는 방화벽 아키텍처의 일 실시예를 도시한다. 본 방법은 네트워크 스택의 모든 계층의 필터들에 패킷을 적용하는 기능을 제공한다. 본 방법은, 필터들을 부가 및 삭제하고 필터 충돌(filter conflict)을 식별 및 해결할 수 있는 중앙 관리 기능을 제공한다. 방화벽 아키텍처는 필요에 따라 필터 계층이 부가 및 삭제된다는 점에서 확장 가능하고, 허가 액션 및 차단 액션 이외의 특수한 기능을 포함할 수 있도록 전개된다. 본 발명이 방화벽 및 방화벽 필터에 특히 관련하여 기술되지만, 본 방법은 다른 필터 및 정책을 용이하게 하고 관리하는 데에도 사용된다. 특정 예로서, 본 발명은 QOS(Quality of Service), IPSec(Internet Protocol Security) 슈트(suite) 뿐만 아니라 기타 암호화, 인증, 및 키 관리 프로토콜들에 사용되는 필터를 용이하게 하고 관리하기에 적절하다.
방화벽 아키텍처는 사용자 모드 프로세스(250) 및 커널 모드 프로세스(252)를 포함한다. 사용자 모드 프로세스(250) 및 커널 모드 프로세스(252)는 네트워크 디바이스의 오퍼레이팅 시스템의 일부로서 실행된다. 본 기술 분야의 숙련자라면, 오퍼레이팅 시스템의 사용자 모드 프로세스(250) 및 커널 모드 프로세스(252)가 간명한 설명을 위해 도시되지 않은 추가의 컴포넌트를 포함한다는 것을 알 것이다. 대안으로, 방화벽 아키텍처는 하나 이상의 프로그램 모듈 또는 애플리케이션 프로그램으로서 오퍼레이팅 시스템의 외부에 전부 혹은 부분적으로 실행되거나 단일 오퍼레이팅 시스템 프로세스 내에서 실행된다.
커널 모드 프로세스(252)는 네트워크 스택(254), 커널 방화벽 엔진(256), 및 선택적(optional) 콜아웃(258)을 포함한다. 총괄적으로 설명하면, 커널 모드 프로세스(252)는 네트워크 패킷에 대한 매칭 필터를 식별하고, 패킷을 공지된 프로토콜에 따라 처리하며, 매칭 필터가 지정한 바대로 패킷에 대한 기타 액션을 실행함으로써, 설정된 방화벽 정책을 구현한다.
네트워크 스택(254)은, 데이터 스트림 계층(268), 전송 계층(270), 네트워크 계층(272), 및 연결 계층(274)을 포함한 복수의 계층을 포함한다. 방화벽 아키텍처는 확장 가능하고, 필요에 따라 추가의 계층이 다이내믹하게 부가 또는 제거된다. 부가되는 계층의 예로는, SMB(Service Master Block) 프로토콜에 따라 구현된 파일 액세스 계층(276)이 포함된다. 상기 계층들은 HTTP 파서(parser) 모듈(278) 등의 다른 프로그램 모듈들과 연동할 수 있다.
네트워크 스택(254)의 계층들은 인바운드 네트워크 패킷 및 아웃바운드 패킷을 처리한다. 아웃바운드 네트워크 패킷은 네트워크 상에 방화벽 아키텍처를 구현하는 네트워크 디바이스로부터 전송된 패킷이다. 인바운드 네트워크 패킷은 방화벽 아키텍처를 구현하는 네트워크 디바이스에서 수신한 패킷이다. 도 3에 도시된 각 화살표가 나타내는 바와 같이, 인바운드 패킷은 네트워크 스택(254)을 최하부로부터 최상부로 통과하고, 아웃바운드 패킷은 네트워크 스택(254)을 최상부로부터 최하부로 통과한다.
네트워크 패킷은 네트워크 계층들을 순차적으로 통과하여, 네트워크 계층들에 의해 순차적으로 처리된다. 공지된 기술에 따르면, 네트워크 스택(254)의 각 계층은 이전의 계층 또는 모듈로부터 패킷을 수신하고, 그 패킷을 스펙(specification) 또는 프로토콜에 따라 처리하며, 처리한 패킷을 후속의 패킷 또는 모듈로 보낼 수 있다. 본 발명에 따르면, 네트워크 스택(254)의 각 계층은 패킷 콘텍스트를 보유하여, 패킷 콘텍스트를 후속 계층에 전달하고, 커널 방화벽 엔진(256)에 분류 요청을 발행하며, 방화벽 정책에 따라 그 패킷에 대한 액션을 취하는 것이 부가된다.
패킷 콘텍스트는 패킷을 따라 계층에서 계층으로 이동되는 데이터 구조이다. 각 계층은, 해당 계층에서 처리하도록 지정된 파라미터들의 세트(예컨대, 해당 계층에서 패킷을 부가 또는 파싱하거나 패킷으로부터 파생되도록 지정된 정보)를 콘텍스트 데이터 구조에 부가함으로써, 패킷 콘텍스트를 보유한다. 도 5를 참조하면, 패킷 콘텍스트용으로 사용되는 데이터 구조의 예가 도시되어 있다.
본 발명에 따른 네트워크 스택(254)의 계층들에 의해 수행되는 동작들 중 하나는 분류 요청을 발행함으로써 커널 방화벽(256) 엔진을 불러내는(invoking) 것이다. 분류 요청은, 패킷에 매칭되는 임의의 필터를 식별하여 그에 연관되는 임의의 정책(예컨대, 방화벽 정책)을 리턴하도록 요청하는 네트워크 스택(254)의 한 계층에 의한 호출(call)이다. 본 명세서에서는 분류 요청을 발행하는 계층을 요청 스테이지(requesting stage) 또는 요청 계층이라고 지칭한다. 또한, 각 계층은 커널 방화벽 엔진(256)에 의해 리턴되는 패킷에 대한 액션을 취한다. 사용자 모드 계층도 요청 계층을 형성할 수 있다.
커널 방화벽 엔진(256)은 계층 API(280), 설치된 필터들의 세트(282), 및 콜아웃 API(284)를 포함한다. 커널 방화벽 엔진(256)은, (1) 방화벽 정책을 정의하 는 설치된 필터들의 세트(282)를 보유하고, (2) 네트워크 스택(254)의 계층들로부터 분류 요청을 수신하며, (3) 분류 요청에 기초하여 하나 이상의 매칭 필터를 식별하고, (4) 해당 패킷에 적용할 임의의 정책을 요청 계층에 지시하는 것을 포함하는 본 발명의 방법에 따른 각종 기능들을 수행한다.
설치된 필터들의 세트의 각 필터는 필터 조건들의 세트 및 이에 연관된 하나 이상의 액션을 포함한다. 도 2를 참조하여 설명한 바와 같이, 필터 조건은 연관된 필터 액션의 적용을 받는 네트워크 패킷을 식별한다. 설치된 필터들의 세트(282)에 특정된 액션은 허가 및 차단을 포함한다. 추가의 기능은 선택적 콜아웃(258)을 통해 부가된다. 도 4를 참조하면, 필터 형태의 예가 도시되어 있다.
계층 API(280)는 네트워크 스택(254)의 계층들과 커널 방화벽 엔진(256) 간의 인터페이스를 제공한다. 계층 API(280)를 통해, 요청 계층은 커널 방화벽 엔진(256)에 분류 요청을 발행한다. 분류 요청은 요청 계층에 의해 수신된 패킷, 요청 계층에 의해 수신된 패킷 콘텍스트, 및 계층 파라미터를 포함한다. 계층 파라미터는 요청 계층에 의해 처리(예컨대, 부가 혹은 파싱)된 패킷 파라미터이다. 일 특정 예로서, 소스 IP 어드레스 및 목적지 IP 어드레스는 IP 프로토콜을 구현할 때 네트워크 계층(272)에서 보낸 계층 파라미터이다. 또한, 계층 파라미터는 패킷에 부가되거나 패킷으로부터 파싱된 패킷 파라미터 외의 정보를 포함한다. 일 특정 예로서, 계층 파라미터는 로컬 어드레스 타입(local address type)을 포함한다. 로컬 어드레스 타입은 IP 계층에 의해 결정되고, 분류 요청의 일부로서 전송된다. 로컬 어드레스 타입으로는 유니캐스트(unicast), 브로드캐스트(broadcast), 멀티캐 스트(multicast), 애니캐스트(anycast) 등이 포함된다. 도 6을 참조하면, 계층 API(280)의 특정 구현예가 도시되어 있다.
선택적으로, 콜아웃(258)은 허가 및 차단 필터 액션 이외의 추가 기능을 구현하는 데 사용된다. 커널 방화벽 엔진(256)이 콜아웃 모듈들 중 하나에 대한 콜아웃을 액션으로서 포함하는 패킷에 대해 매칭 필터를 식별하면, 콜아웃이 실행된다. 커널 방화벽 엔진은 요청 계층에서 발행한 분류 요청 즉, 풀(full) 패킷, 계층 파라미터, 및 패킷 콘텍스트를 매칭 필터의 식별자와 함께 콜아웃 API(284)을 통해 콜아웃 모듈로 보낸다. 방화벽 아키텍처는 콜아웃(258)의 기본 세트를 포함한다. 계층과 마찬가지로, 필요에 따라 추가의 콜아웃이 추가되며, 이로써 확장 가능한 아키텍처가 제공된다. 도 6을 참조하면, 콜아웃 API(284)의 특정 구현예가 도시되어 있다.
사용자 모드 프로세스(250)는 사용자 방화벽 엔진(260) 및 "PP1", "PP2", "PP3"으로 식별되는 하나 이상의 정책 제공자(262)를 포함한다. 정책 제공자(262)는 방화벽 아키텍처 내에 방화벽 정책 즉, 설치된 필터들(282)을 부가하는 프로세스이다. 이러한 태스크를 수행하는 데에는 어떤 프로세스라도 사용될 수 있다. 일례로는 LIPS(legacy IPSec policy service)가 있다. LIPS는 ESP(Encapsulating Security Protocol) 및 AH(Authentication Header Protocol)과 같은 IPSec 프로토콜을 사용하여야 하는 네트워크 트래픽을 정의하는 필터를 추가한다. 일 특정 예로서, LIPS는 모든 비요청 인바운드 패킷이 ESP 프로토콜에 따라 암호화되어야 함을 나타내는 방화벽 정책을 추가한다. 이 방화벽 정책은 비처리 텍스트(clear text) 내의 임의의 비요청 인바운드 패킷 즉, 암호화되지 않은 패킷을 반드시 차단하는 것도 제공한다. 정책 제공자(262)는, 휘발성/비휘발성 메모리의 데이터 또는 관리자나 시스템 사용자가 직접 정책을 입력할 수 있게 하는 GUI(Graphic User Interface) 등의 임의의 적절한 소스로부터 정책을 획득한다. 사용자 방화벽 엔진(260)은 정책을 새로운 필터로 변환하고(즉, 정책을 필터 조건 및 이에 연관된 액션에 관하여 정의하고), 새로운 필터를 설치된 필터들의 세트(282)에 부가한다.
또한, 사용자 방화벽 엔진(260)은 필터 중재(filter arbitration) 기능 및 충돌 해결 기능을 수행한다. 정책 제공자(262)가 사용자 모드 방화벽 엔진(260)에 새로운 정책을 제공하면, 사용자 방화벽 엔진은 새로운 정책으로부터 얻은 새로운 필터가 설치된 필터들(282) 중 어느 것과 충돌하는지의 여부를 판정한다. 충돌이 존재하면, 사용자 방화벽 엔진(260)은 해당 충돌을 해결한다. 본 발명의 프레임워크에 사용하기에 적절한 충돌 식별 및 해결 방법의 일례는 대리인등록번호 제221037호의 "네트워크 필터 기반 정책의 관리 방법(Method for Managing Network Filter Based Policy)"이라는 명칭의 미국특허출원에 개시되어 있다.
또한, 본 아키텍처는 사용자 모드 방화벽 엔진(260)과 커널 방화벽 엔진(256) 간의 인터페이스를 형성하는 필터 엔진 API(266)를 포함한다. 필터 엔진 API(266)는, 새로운 필터를 설치된 필터들의 세트(282)에 부가하고 설치된 필터들(282)을 검사하여 필터 충돌을 검출 및 해결하게 하는 메커니즘을 사용자 방화벽 엔진(260)에 제공한다. 관리 API(290)는 필터 엔진 API(266)의 기능을 정책 제공자(262)에게 공개한다.
또한, 사용자 모드 방화벽 엔진(260)은 필터 모듈(294)을 포함한다. 필터 모듈(294)은 사용자 모드(250)의 커널 방화벽 엔진(256)의 인스턴스이다. 사용자 모드 방화벽 엔진(260)의 필터 모듈(294)의 인스턴스는 사용자 방화벽 엔진(260)으로 하여금 하나 이상의 사용자 모드 계층(282)을 위한 커널 방화벽 엔진(256)의 서비스를 복제(replicate)할 수 있게 한다. 사용자 모드 계층(282)은 커널 모드 계층이 생성되는 것과 동일한 방식으로 추가된다. 필터 모듈(294)이 커널 방화벽 엔진(256)의 사용자 모드 인스턴스이기 때문에, 커널 모드 방화벽 엔진에 대하여 본 명세서에 설명된 어떠한 기능도 필터 모듈(294)에 적용된다는 것을 알 수 있을 것이다. 예를 들면, 추가의 사용자 모드 계층을 시스템 아키텍처에 부가하거나 시스템 아키텍처로부터 삭제하고, 콜아웃을 생성할 수 있으며, 이로써, 추가의 기능이 사용자 모드 계층에 제공된다.
키잉 모듈(keying module) API(288)는 사용자 정책 엔진(260)과 키잉 모듈(296) 간의 인터페이스를 제공한다. 키잉 모듈은 패킷에 어느 보안 설정을 사용할지를 정하기 위한 메커니즘을 제공한다. 키잉 모듈 API(288)는 SA를 설정할 필요를 키잉 모듈에 알리는 데 사용된다.
이제부터, 도 4를 참조하여, 설치된 필터들의 세트(282)를 설명한다. 각 필터(310)는 필터 Id(312), 가중치(314), 하나 이상의 액션(316), 정책 콘텍스트(317), 및 필터 조건들의 세트(318)를 포함하는 복수의 필드들을 갖는다. 필터 Id(312)는 필터에 대한 고유 인증을 제공한다. 필터 Id(312)는 예컨대, 커널 방화벽 엔진(256)이 매칭 필터 정보를 사용자 방화벽 엔진(260) 및 콜아웃(258)으 로 리턴할 수 있게 하는 수단으로서 사용된다. 본 발명의 일 실시예에서, 필터(310)는 네트워크 스택(254)의 계층들 중 하나에 할당된다. 필터 Id(312)는 어느 필터가 어느 계층에 할당되는지를 추적하기 위해 커널 방화벽 엔진(256)에서 사용된다.
가중치 필드(314)는 필터(310)의 우선순위를 식별하는 값을 포함한다. 가중치 필드(314)의 값이 높을수록, 해당 필터의 우선순위도 높다. 필터 우선순위는 매칭 필터들이 커널 방화벽 엔진(256)에 의해 패킷에 적용되는 순서를 정한다.
본 발명의 일 실시예에서, 최고 우선순위 즉, 최고의 가중치를 갖는 필터가 가장 먼저 적용되고, 이어서 다음으로 높은 우선순위 필터가 적용되며, 이러한 처리는 종료 액션(terminating action)을 갖는 매칭 필터가 발견될 때까지 계속된다. 종료 액션은 이후에 보다 상세히 설명될 것이다. 종료 액션을 갖는 매칭 필터가 적용되고 나면, 커널 방화벽 엔진(256)은 매칭 필터의 적용을 멈춘다. 따라서, 종료 처리가 적용된 후에는, 보다 낮은 우선순위의 매칭 필터들에 의해 지정된 액션(316)이 패킷에 취해지지 않는다. 대안으로, 방화벽 엔진(256)은 단일 매칭 필터를 식별하고, 단일 매칭 필터로부터의 액션들의 세트를 리턴한다. 또한, 방화벽 엔진(256)은 가중치(314)와 무관하게 모든 매칭 필터들을 적용할 수도 있다.
필터 조건들의 세트(318)는 패킷이 필터(310)에 매칭되는지의 여부를 판정한다. 각 필터 조건(318)은 타입(320), 데이터(322) 및 계층 Id:필드 Id(324)를 포함한다. 타입(320)은 대응하는 데이터(322)에 포함된 변수들의 길이와 개수를 정의한다. 아키텍처는 바이트(Byte), 쇼트(short), 롱(long), 8 바이트, 스트링(String), 인터넷 프로토콜 버전 4(IPv4) 어드레스, 인터넷 프로토콜 버전 6(IPv6) 어드레스, IPv4 어드레스 플러스 마스크(IPv4 address plus mask), IPv6 어드레스 플러스 마스크, 및 어드레스 범위(Address Range) 등의 사전에 정의된 공지된 변수 타입을 제공한다. 데이터 필드(322)는 타입에 매칭되는 데이터를 포함한다. 예를 들어, 타입이 IPv4 어드레스라면, 데이터 필드(322)의 허용 가능한 값은, 점으로 분리된 십진법 표시(dotted decimal notation)로 표현되는 00.00.00.00∼255.255.255.255의 범위의 32 비트의 수이다. 몇몇 경우에, 타입(320)은 데이터 필드(322)에 여러 값들을 제공한다. 어드레스 범위, IPv4 어드레스 플러스 마스크, IPv6 어드레스 플러스 마스크 타입은, IP 어드레스의 시작과 끝의 범위를 정의하는 2개의 IP 어드레스 값을 허용한다. 유연성(flexibility)을 최대로 하기 위해, 아키텍처는 사용자 정의 타입을 허용하기도 한다. 대안으로는, 추가의 타입이 수동으로 시스템 아키텍처에 추가된다.
계층 Id:필드 Id(322)는 발신 계층(originating layer) 및 발신 계층으로부터의 파라미터를 식별하는 데 각각 사용된다. 발신 계층 및 발신 계층으로부터의 파라미터는 패킷 파라미터 즉, 데이터(322)와 비교되는 계층 파라미터 및 패킷 콘텍스트를 정의한다. 발신 계층은 네트워크 스택의 계층을 식별한다. 발신 계층으로부터의 파라미터는 발신 계층에 연관된 소정의 파라미터를 식별한다. 일 특정 예로는 필터 조건(326)을 들 수 있다. 타입은 IPv4이며, 이는 데이터(322)가 32 비트 IP 어드레스임을 나타낸다. 계층 Id는 32 비트 수가 IP 즉, 네트워크, 계층 파라미터임을 나타내는 "IP"이다. 필드 Id는 본 예에서 IP 계층 파라미터, 특히 소스 IP 어드레스를 나타내는 "Src IP Addr"이다. 데이터 필드에 제공되는 소스 IP 어드레스는 소스 IP 어드레스를 갖는 임의의 패킷이 필터 조건을 만족시킴으로써 필터에 매칭됨을 나타내는 "123.3.2.1"이다.
복수의 필터 조건들(318)이 지정될 수 있다. 복수의 필터 조건들(318)이 지정되면, 패킷들은 모든 필터 조건들(318)이 만족되는 경우에 필터(310)에 매칭되는 것이다.
필터(310)에 지정되는 액션(326)은 허가, 차단, 혹은 콜아웃이다. 필터(310)에서의 액션(324)이 허가 혹은 차단이고, 패킷이 필터(310)에 매칭되면, 허가 액션 혹은 차단 액션은 커널 방화벽 엔진(256)에 의해 요청 계층으로 리턴된다. 액션(316)이 콜아웃인 경우, 커널 방화벽 엔진(256)은, 풀 패킷, 계층 파라미터, 콘텍스트, 및 매칭 필터의 식별자를 포함한 자신의 분류 요청을, 지정된 콜아웃 모듈(258)로 발행한다. 콜아웃 모듈(258)은 패킷에 대한 자신의 프로그래밍된 기능, 예컨대 침입 검출 기능을 수행한다. 콜아웃은 액션(허가 혹은 차단)을 커널 방화벽 엔진으로 리턴할 수 있고, 커널 방화벽 엔진은 이 액션을 요청 계층으로 전달한다. 또한, 콜아웃은, 허가 액션 또는 차단 액션을 제공하지 않고도 패킷 적용을 계속하도록 커널 방화벽 엔진에 지시할 수 있다. 또한, 콜아웃은 패킷 콘텍스트를 보유할 수 있으며, 패킷 콘텍스트도 커널 방화벽 엔진(256)을 통해 요청 계층으로 리턴된다.
액션은 종료 또는 비종료로 지정된다. 디폴트(default)로서, 허가 및 차단은 종료 액션으로 지정된다. 종료 액션은, 매칭 패킷에서 식별되면 상술한 바와 같이 매칭 필터들을 적용하는 처리를 멈추는 데 사용될 수 있는 액션이다.
정책 콘텍스트(317)는 보안 정책, QOS 정책과 같은 방화벽 정책 이외의 정책을 저장하는 데 사용된다. 정책 콘텍스트는 임의의 적절한 데이터 구조이다. 예를 들어, 정책 콘텍스트는 정책 콘텍스트를 추가한 프로세스에 의해 해석되는 64 비트 수이다. 또한, 정책 콘텍스트 및/또는 액션은 널(null)값일 수 있다.
도 5는, 콜아웃 모듈(258) 및 네트워크 스택(254)의 계층들에서 보유되며 이들로 전달되는 패킷 콘텍스트용으로 사용되는 데이터 구조(330)의 일례를 도시한다. 패킷 콘텍스트(330)는, 계층들을 통과하고 하나 이상의 엔트리들(336∼340)을 포함하는 인바운드 네트워크 패킷 또는 아웃바운드 네트워크 패킷에 후속한다. 각각의 엔트리는 계층 Id:필드 Id(332) 및 이에 대응하는 값(334)을 포함한다.
계층 Id:필드 Id(332)는 필터(310)의 필터 조건들(318)의 일부로서 제공되는 계층 Id:필드 Id(324)와 동일한 의미를 갖는다(도 4 참조). 즉, 계층 Id:필드 Id(322)는 값 필드(334)의 데이터에 대한 발신 계층 및 발신 계층으로부터의 계층 파라미터를 식별한다. 값 필드(334)는 소정의 계층 파라미터를 포함한다.
일 특정 예로서, 엔트리(336)는 "NDIS: Src. MAC Addr."의 계층 Id:필드 Id(332)를 포함한다. "NDIS"는 연결 계층(274)의 네트워크 드라이버 인터페이스 스펙(Network Driver Interface Specification)을 나타낸다(도 1 참조). "Src MAC addr."는 소스 MAC 어드레스를 나타낸다. 따라서, 계층 Id:필드 Id(332)는 값 필드(334)의 데이터가 NDIS(Link) 계층에서 처리된 소스 MAC 어드레스임을 나타낸다. 값 필드(334)는 실제의 소스 MAC 어드레스를 포함하고, 이 소스 MAC 어드레스는 본 예에서 16진수법 표시로 표현되는 "00.08.74.4F.22.E5"이다.
제2예로서, 엔트리(338)는 "NDIS:IF No"의 계층 Id:필드 Id(332)를 갖는다. 이것도 NDIS로서 계층을 식별하지만, 이 경우에는 NDIS 파라미터로서 인터페이스 번호를 나타내는 "IF No"로서 파라미터를 식별한다. 값 필드(334)는 실제의 인터페이스 번호를 포함하고, 이 인터페이스 번호는 이 경우에 2이다.
제3예로서, 엔트리(340)는 "IP:Dst IP Addr"의 계층 Id:필드 Id(332)를 갖는다. "IP"는 IP 프로토콜을 사용하는 네트워크 계층을 나타내고, "Dst IP Addr"는 목적지 IP 어드레스를 IP 계층 파라미터로서 나타낸다. 값 필드(334)는 "123.3.2.1"의 실제의 목적지 IP 어드레스를 포함한다.
기본적인 방화벽 아키텍처를 설명하였으므로, 본 명세서에 설명한 기본적인 방화벽 아키텍처를 사용하여 수행되는 예시적인 방법 및 시스템의 기능상의 인터페이스에 주목한다. 기능상의 인터페이스는 복수의 API(application programming interface)로서 구현된다. API는 도 6 및 도 7에 예시적으로 도시된 바와 같이 계층 API(280), 콜아웃 API(284), 필터 엔진 API(266), 및 키잉 모듈 API(288)를 포함한다.
계층 API(280)는 커널 방화벽 엔진(256)과 네트워크 스택(254)의 각 계층 간의 데이터 교환을 용이하게 한다. 도시된 바와 같이, 계층 API(280)는 분류 메소드(Classify method)(350), 계층 추가 메소드(Add Layer method)(352), 및 계층 삭제 메소드(Delete Layer method)(354)를 포함한다.
분류 메소드(350)는, 계층 파라미터, 요청에 의해 수신한 패킷, 및 패킷 콘 텍스트를 커널 방화벽 엔진(256)으로 보내기 위해서 요청 계층에서 사용되는 것이다. 커널 방화벽 엔진(256)은 (1) 요청 계층으로부터의 계층 파라미터 및 (2) 패킷 콘텍스트 엔트리를, 요청 계층에 할당된 필터들 각각(310)의 필터 조건(318)과 비교하여, 매칭 필터를 식별한다. 이하에는 분류 메소드의 예시적인 구현예가 기술되어 있다. 이하의 메소드들이 데이터 값을 수신하거나 리턴하는 것이 기술되어 있음을 알 수 있다. 공지된 프로그래밍 기술에 따르면, 메소드들은 실제의 데이터 값 대신에 데이터 값으로의 포인터를 사용할 수도 있다.
NTSTATUS
WFP Classify
(
IN ULONG LayerId,
IN WFP_INCOMING_VALUE* pInFixedValues,
IN WFP_INCOMING_CONTEXT_VALUE* pInContext,
PVOID pPacket,
OUT WFP_ACTION_TYPE* pActionType,
OUT UINT64* pOutContext
);
이하, 상기 파라미터들의 특징을 설명한다.
LayerId는 분류 요청을 발행하는 계층 즉, 요청 계층을 식별한다. 도 3을 참조하면, 계층 Id는 그 계층을, 데이터 스트림 계층(268), 전송 계층(270), 네트 워크 계층(272), 또는 연결 계층(274)으로서 식별한다. 사용자 모드 계층을 포함하는 다른 계층들이 시스템에 추가되어도 유효하다. 예를 들어, SMB 계층(276)이 추가되면, SMB 계층은 그 자신에 대한 고유 식별자를 갖는다. 또한, 본 발명의 방화벽 아키텍처는 네트워크 스택(254)의 한 계층에서 복수의 프로토콜 구현을 허용한다. 예를 들어, 네트워크 스택은 TCP 프로토콜을 사용하는 제1 전송 계층 및 UDP 프로토콜을 사용하는 제2 전송 계층의 2개의 전송 계층(270)을 갖는다.
pInFixedValues는 요청 계층에서 처리되는 계층 파라미터들의 서브세트(subset)를 포함한다. pInFixedValues는 패킷 콘텍스트 엔트리들과 함께 필터 조건과 비교되어, 패킷이 필터에 매칭되는지의 여부가 판정된다. 각 계층에서 pInFixedValues에 포함되는 디폴트 계층 파라미터는 아래의 표 A에서 확인된다. 계층은 pInFixedValues에서 액세스를 갖는 어떤 파라미터도 포함할 수 있기 때문에, 디폴트 계층 파라미터는 예시적인 것일 뿐이고, 이에 한정되지 않다는 것을 알 것이다.
<표 A>
계층 디폴트 계층 파라미터
연결 계층 소스 MAC 어드레스 및 목적지 MAC 어드레스; 인터페이스 번호
네트워크 계층 소스 MAC 어드레스 및 목적지 MAC 어드레스; 프로토콜 타입; 로컬 어드레스 타입
전송 계층 소스 포트 번호 및 목적지 포트 번호
응용 계층 복호된(deciphered) 응용 계층 프로토콜 페이로드
pInContext는 요청 계층에서 수신한 콘텍스트 데이터 구조(330)(도 5 참조)를 포함한다. 패킷 콘텍스트는 계층 파라미터와 함께 매칭 패킷을 식별하기 위해 커널 방화벽 엔진(256)에서 사용된다.
pPacket은 요청 계층에서 수신한 전체 패킷을 포함한다. pPacket은 매칭 필터들을 식별하기 위한 커널 방화벽 엔진(256)에서 사용되지 않는다. 상술한 바와 같이, 커널 방화벽 엔진(256)은 매칭 필터들을 식별하는 데 pInFixedValues 및 pInContext를 사용한다. pPacket은 커널 방화벽 엔진(256)이 매칭 필터의 액션(316)으로서 식별되는 하나 이상의 콜아웃 모듈(258)로 pPacket을 보낼 수 있도록 분류 메소드에 포함된다.
pActionType은 요청 계층으로 리턴되는 액션(316)을 포함한다. 액션(316)은 매칭 필터에서 식별되는 허가, 차단, 또는 아무것도 없음(none), 또는 매칭 필터에서 실행되는 콜아웃 모듈을 포함한다.
pOutContext는 정책 콘텍스트 데이터를 포함한다. 상술한 바와 같이, 정책 콘텍스트는 IPSec, QOS, 및 임의의 다른 비방화벽 필터 기반의 정책과 연관된 네트워크 정책을 용이하게 하는 데 사용된다.
계층 추가 메소드(352) 및 계층 삭제 메소드(354)는 각각 방화벽 아키텍처에 계층을 추가하고 방화벽 아키텍처로부터 계층을 제거하는 데 사용된다. 이하에는 계층 추가 메소드(352)의 예시적인 형태가 기술되어 있다.
NTSTATUS
AddExtensionLayer(OUT PULONG pLayerId);
이하, 상기 파라미터의 특징을 설명한다.
pLayerId는 추가되는 계층 즉, 계층 추가 메소드를 실행하는 계층으로 리턴되는 고유 계층 식별자 값이다.
이하에는 계층 삭제 메소드(406)의 예시적인 형태가 기술되어 있다.
NTSTATUS
RemoveExtensionLayer(ULONG LayerId);
이하, 상기 파라미터의 특징을 설명한다.
LayerId는 삭제되는 계층 즉, 계층 삭제 메소드를 실행하는 계층을 식별한다.
콜아웃 API(284)는 커널 방화벽 엔진(256)과 콜아웃(258) 간의 데이터 교환을 용이하게 한다. 계층 API(280)와 마찬가지로, 콜아웃 API(284)는 분류 메소드를 갖는다. 콜아웃 API(284)의 분류 메소드(356)는 매칭 필터 데이터를 포함한다는 점을 제외하고는 계층 API(280)의 분류 메소드(350)과 유사하다. 이하에는, 콜아웃을 실행하는 데 사용되는 분류 메소드(356)의 예시적인 형태가 기술되어 있다.
typedef NTSTATUS(*WFP_CALLOUT_CLASSIFY_FN)
(
IN const WFP_INCOMING_VALUES* fixedValues,
IN WFP_INCOMING_CONTEXT_VALUE* wfpContext,
IN VOID* packet,
IN WFP_FILTER* matchedFilter,
OUT WFP_ACTION_TYPE* action,
OUT UINT64* outContext
);
이하, 상기 파라미터들의 특징을 설명한다.
fixedValues는 요청 계층으로부터 보내어진 계층 파라미터를 포함한다. fixedValues는 계층 API(280)의 분류 메소드(350)의 일부로서 보내어진 pInFixedValues 데이터 중 요청 계층이 제공한 데이터와 동일하다.
wfpContext는 콘텍스트 데이터 구조(330)를 포함한다(도 5 참조). 이 데이터는 계층 API(280)의 분류 메소드(350)의 일부로서 보내어진 pInContext 데이터 중 요청 계층이 보낸 것과 동일하다.
packet은 요청 계층에서 수신한 전체 패킷을 포함한다. 이 데이터는 계층 API(284)의 분류 메소드(356)의 일부로서 보내어진 pPacket 데이터 중 요청 계층이 보낸 것과 동일하다.
matchedFilter는 콜아웃을 요청하는 필터를 식별한다. 통상적으로, 매칭 필터는 콜아웃 API(284)의 분류 메소드를 개시하는 매칭 필터(310)의 필터 Id(312)에 의해 식별된다.
pActionType은 콜아웃(258)으로부터 커널 방화벽 엔진(256)으로 리턴되는 액션을 포함한다. pActionType이 허가 혹은 차단이면, 계층 API(280)에 의해 리턴되는 pActionType과 마찬가지로 요청 계층으로 리턴된다. 또한, 콜아웃은, 패킷에 매칭 필터를 적용하는 것을 계속할 것을 커널 방화벽 엔진(256)에 지시하는 계속 액션(continue action)을 리턴할 수 있다.
pOutContext는 보안 또는 QOS 정책 데이터와 같은 정책 콘텍스트 데이터를 포함한다.
또한, 콜아웃 API(408)는 통지 메소드(Notify method)(358)를 포함한다. 통지 메소드(358)는, 콜아웃 모듈(258)을 액션들(316) 중 하나로서 식별하는 설치된 필터들의 세트(282)에 필터(310)가 추가될 경우에, 콜아웃을 통지하는 데 사용된다. 통지 메소드는, 커널 방화벽 엔진(256)에 의해 실행되면, 콜아웃(258)에 의해 사용될 버퍼 할당 또는 버퍼 할당 해제와 같은 임의의 요청된 액션을 취할 기회를 콜아웃에 제공한다. 이하에는 통지 메소드(358)의 예시적인 형태가 기술되어 있다.
typedef NTSTATUS(*WFP_CALLOUT_NOTIFY_FN)
(
IN WFP_NOTIFY_ENUM notify,
IN WFP_FILTER* filter
);
이하, 상기 파라미터들의 특징을 설명한다.
notify는 필터가 추가될지 혹은 삭제될지를 나타내는 수치를 포함한다. 예를 들어, 값 1은 필터가 추가되는 것을 나타내고, 값 2는 필터가 삭제되는 것을 나타낸다.
filter는 고유값만큼 추가 또는 삭제되는 필터를 식별한다. 이는 필터(310)의 일부로서 포함된 필터 Id(312)를 제공함으로서 달성될 수 있다.
또한, 콜아웃 API는 콜아웃 모듈을 추가 및 제거하기 위한 콜아웃 등록 메소드(Callout Registration method)(360) 및 콜아웃 등록 해제 메소드(Callout Deregistration method)(362)를 포함한다. 콜아웃 등록 메소드(360)의 예시적인 형태는 다음과 같다 :
NTSTATUS WfpRegisterCallout
(
IN const GUID* calloutId,
IN const WFP_CALLOUT* callout,
IN const SECURITY_DESCRIPTOR* sd
);
이하, 상기 파라미터들의 특징을 설명한다.
calloutId는 등록 콜아웃 모듈의 고유 식별자를 제공한다.
callout은 드라이버 서비스 명, 디바이스 명, 콜아웃 분류 및 통지 함수로의 포인터와 같은 임의의 콜아웃 특정 정보를 제공한다.
sd는 콜아웃에 대한 보안 디스크립터(security descriptor)를 제공한다. 보안 디스크립터는 어느 프로세스가 콜아웃을 판독하고 삭제하는지를 식별한다.
콜아웃 등록 취소 메소드(362)의 예시적인 형태는 다음과 같다 :
NTSTATUS WfpDeregisterCallout
(
IN const GUID* calloutId
);
이하, 상기 파라미터의 특징을 설명한다.
calloutId는 제거될 콜아웃의 고유 Id이다.
필터 엔진 API(266)는 사용자 모드 방화벽 엔진(260)과 커널 모드 방화벽 엔진(256) 간의 데이터 교환을 용이하게 한다. 도시된 바와 같이, 필터 엔진 API(266)는 필터 추가 메소드(Add Filter method)(364), 필터 삭제 메소드(Delete Filter method)(366), 및 계층 열거 메소드(Enum Layer method)(368)를 포함한다. 상술한 바와 같이, 필터 엔진 API(266)의 메소드들은 정책 제공자(262)에게 그 기능을 공개하기 위해 관리 API(290)에 포함될 수도 있다.
필터 추가 메소드(364) 및 필터 삭제 메소드(366)는, 설치된 필터들의 세트(282)에 새로운 필터를 추가하고, 설치된 필터들의 세트(282)로부터 기존의 필터를 삭제하는 데 각각 사용된다. 다음은 필터 추가 메소드(364)의 예시적인 형태이다.
NTSTATUS
AddFilterToLayer
(
ULONG LayerId,
WFP_FILTER* pFilter
);
이하, 상기 파라미터들의 특징을 설명한다.
LayerId는 필터에 할당된 계층을 식별한다.
pFilter는 설치된 필터들의 세트(282)에 추가되는 필터(310)이다.
다음은 필터 삭제 메소드(366)의 예시적인 형태이다.
NTSTATUS
DeleteFilterFromLayer
(
ULONG LayerId,
ULONG FilterId
);
이하, 상기 파라미터들의 특징을 설명한다.
LayerId는 필터가 할당되는 계층을 식별한다.
pFilter는 설치된 필터들의 세트로부터 삭제되는 필터이다.
계층 열거 메소드(368)는 일련의 기준들에 매칭되는 모든 필터를 식별하기 위한 메커니즘을 사용자 방화벽 엔진(260)에 제공한다. 이는, 필터 엔진 API가 필터 중재 및 충돌 해결을 위해 필터들의 충돌을 식별할 수 있게 한다. 다음은 계층 열거 메소드(368)의 예시적인 형태이다.
IndexStartEnum
(
PWFP_ENUM_TEMPLATE pEnumTemplate,
OUT PULONG pMatchCount,
OUT PWFP_ENUM_HANDLE pEnumHandle
);
이하, 상기 파라미터들의 특징을 설명한다.
pEnumTemplate는 리턴될 필터를 정의하는 데이터 구조를 포함한다. 예를 들어, pEnumTemplate는, 리턴될 필터와 필터 조건이 매칭되어야 하는 파라미터를 포함한다.
pMatchCount는 pEnumTemplate에 기초하여 필터가 매칭된 수를 포함한다.
pEnumHandle은 매칭 필터의 엔트리에 대한 참조(reference)를 포함한다.
키잉 모듈 API(288)는 사용자 모드 키잉 모듈 계층(282)과 사용자 방화벽 엔진(260) 간의 인터페이스를 제공한다. 키잉 모듈 API(288)는 IPSec SA 획득 메소드(IPSec Sa Acquire method)(370), 소멸 통지 메소드(Expire Notify method)(372), 및 IPSec 획득 완료 메소드(IPSec Acquire Complete method)(374), 키잉 모듈 등록 메소드(Keying Module Register method)(376), 키잉 모듈 등록 해제 메소드(Keying Module Deregister method)(378), IPSec 인바운드 취득 SPI 메소드(IPSec Inbound Get SPI method)(380), 추가 인바운드 SA 메소드(Add Inbound SA method)(382), 추가 아웃바운드 SA 메소드(Add Outbound SA method)(384), 인바운드 SA 소멸 메소드(Inbound SA Expire method)(386), 및 키잉 모듈 개시 메소드(Keying Module Initiate method)(388)를 포함한다.
키잉 모듈 API는, IPSec에 의한 정의, 개시 컴퓨터 및 응답 컴퓨터에 의한 사용 등의 보안 프로토콜의 사용을 용이하게 하는 데 사용된다. IPSec는 AH(authentication header), 및 ESP(encapsulating security protocol) 등의 프로토콜을 포함한다. IETF RFC(Request for Comments) 2406에서 주로 문서화된 ESP 프로토콜은 데이터의 무결성(integrity), 소스 인증, 및 기밀성(confidentiality)을 제공하기 위해 암호화 메커니즘을 사용하는 인증 및 암호화 프로토콜이다. IETF RFC 2402에 의해 주로 문서화된 AH 프로토콜은 패킷 데이터의 무결성 및 송신자의 인증성(authenticity)을 유효하게 하기 위해 패킷 헤더에 해쉬 서명(hash signature)을 사용하는 인증 프로토콜이다.
IETF RFC 2409에 의해 주로 문서화된 IKE 프로토콜은, 개시 컴퓨터 및 응답 컴퓨터에, AH 프로토콜 및 ESP 프로토콜에 사용된 보안 설정을 협상하는 메소드를 제공한다. 협상된 보안 설정은 SA(security association)라 불리는 데이터 구조를 형성한다. SA는, IP 패킷의 내용을 보호하기 위해 ESP 또는 AH에서 사용되는 인증 알고리즘, 암호화 알고리즘, 키, 및 키의 유효 기간 등의 파라미터를 정의한다. ESP 및 AH는 확립된 SA를 필요로 하므로, IKE 협상은 ESP 프로토콜 또는 AH 프로토콜이 개시 컴퓨터 및 응답 컴퓨터에 의해 사용되기 전에 실행된다. SA는 SPI(Security Parameter Index)라고 알려진 값에 의해 식별된다.
개시 컴퓨터 및 응답 컴퓨터 각각은, IPSec 정책에 기초하여, 개시 컴퓨터와 응답 컴퓨터 간에 전송된 데이터가 암호화 또는 인증을 요구하는지의 여부를 판정하는 IPSec 드라이버를 포함한다. IPSec 정책은 네트워크 디바이스가 어떻게 IPSec를 사용하는지를 정의하고, 필터 리스트, 인증 방법, 및 기타 정보를 포함하는 필터들의 세트이다. 본 발명의 일 실시예에서, IPSec 정책은 설치된 필터들의 세트에 포함된 필터들에 의해 정의된다.
IPSec SA 획득 메소드(370)는 드라이버 획득 또는 외부의 개시 요청을 키잉 모듈로 전달하기 위해 (클라이언트 프록시(client proxy)를 통해) 사용자 방화벽 엔진(260)에 의해 호출된다. 키잉 모듈은 이러한 호출을 리턴하고, 비동기적으로 협상을 수행한다. 일단 키잉 모듈이 협상을 완료하면, 키잉 모듈 계층은 협상이 완료되었음을 사용자 방화벽 엔진에 통지하기 위해 IPSec SA 획득 완료 메소드(374)를 호출한다. 다음은 IPSec SA 획득 메소드의 예시적인 형태이다.
typedef WIN32_ERR
(*PROCESS_IPSEC_SA_ACQUIRE0)
(
IN FWP_IPSEC_ACQUIRE_CONTEXT0 ipsecContext,
IN const FWP_IPSEC_SA_ACQUIRE0* acquire,
IN FWP_IPSEC_SPI inboundSAspi
);
이하, 상기 파라미터들의 특징을 설명한다.
ipsecContext는 추가되는 SA를 갖는 획득을 링크하기 위한 핸들(handle)이다.
acquire는 IKE와 같은 공지된 프로토콜에 따라 SA를 협상하기 위한 필수 정보를 포함한다.
inboundSAspi는 인바운드 SA에 사용되는 SPI를 포함한다.
소멸 통지 메소드(372)는 인바운드 SA를 추가한 키잉 모듈에 소멸 통지를 전달하기 위해 호출된다. 다음은 소멸 통지 메소드의 예시적인 형태이다.
typedef VOID
(*PROCESS_IPSEC_SA_EXPIRE0)
(
IN const FWP_IPSEC_SA_EXPIRE_NOTIFY0* expireNotify
);
이하, 상기 파라미터의 특징을 설명한다.
expireNotify는 소멸된 SA를 식별하는 정보를 포함한다. 예를 들어, 아웃바운드 SA의 경우에는 SPI가 제공된다.
IPSec SA 획득 완료 메소드(374)는, 협상을 완성하고 모든 SA를 추가한 후, 또는 에러를 발견한 후, 사용자 방화벽 엔진의 콘텍스트를 닫기 위해 키잉 모듈에 의해 호출된다. 이 메소드가 실행된 후, 키잉 모듈 계층은 임의의 다른 API 메소드를 위해 ipsecContext를 재사용하지 않는다. 다음은 IPSec SA 획득 완료 메소드의 예시적인 형태이다.
WIN32_ERR
FwpIPSecSAAcquireComplete0
(
IN FWPM_ENGINE_HANDLE engineHandle,
IN FWP_IPSEC_ACQUIRE_CONTEXT0 ipsecContext,
IN const FWP_IPSEC_NEGOTIATION_STATUS0* status
);
이하, 상기 파라미터들의 특징을 설명한다.
engineHandle은 사용자 방화벽 엔진(260)에 대한 핸들을 제공한다.
ipsecContext는 IPSec 획득 메소드를 사용하여 사용자 방화벽 엔진에 의해 전달된 콘텍스트이다.
status는 SA 협상의 상태 및 기타 상세들을 제공한다. status는, 획득이 FwpKeyingModuleInitiate0를 통해 외부에서 개시되면, 사용자 방화벽 엔진(260)에 의해 리턴된다.
키잉 모듈 등록 메소드(376)는, 사용자 방화벽 엔진(260)을 등록하고 함수 포인터를 전달하기 위해, 키잉 모듈 계층에 의해 호출된다. 다음은 키잉 모듈 등록 메소드의 예시적인 형태이다.
WIN32_ERR
FwpKeyingModuleRegister0
(
IN FWPM_ENGINE_HANDLE engineHandle,
IN const GUID* keyingModuleID,
IN const FWP_KEYING_MODULE_INFO0* keymodInfo
);
이하, 상기 파라미터들의 특징을 설명한다 :
engineHandle은 사용자 방화벽 엔진(260)에 대한 핸들을 제공한다.
keyingModuleID는 키잉 모듈에 대한 고유 ID이다.
keymodInfo는 IPSec SA 획득 함수를 처리하고 IPSec SA 소멸 함수를 처리하기 위한 포인터와 같이 키잉 모듈 계층에 대한 등록 정보를 포함한다.
키잉 모듈 등록 해제 메소드(378)는 사용자 방화벽 엔진(260)으로부터 키잉 모듈을 등록 해제하기 위해 키잉 모듈에 의해 호출된다. 다음은 키잉 모듈 등록 해제 메소드의 예시적인 형태이다.
WIN32_ERR
FwpKeyingModuleDeregister0
(
IN FWPM_ENGINE_HANDLE engineHandle,
IN const GUID* keyingModuleID
);
이하, 상기 파라미터들의 특징을 설명한다 :
engineHandle은 사용자 방화벽 엔진(260)에 대한 핸들이다.
keyingModuleID는 키잉 모듈 계층의 고유 ID이다.
IPSec 인바운드 취득 SPI 메소드(380)는 새로운 인바운드 SA를 위한 SPI를 획득하기 위해 키잉 모듈 계층에 의해 호출된다. IPSec 인바운드 취득 SPI 메소드(380)는 통상적으로 키잉 모듈 계층이 응답 네트워크 디바이스에서 실행될 경우에 사용된다. 다음은 IPSec 인바운드 취득 SPI 메소드의 예시적인 형태이다.
WIN32_ERR
FwpIPSecSAInboundGetSpi0
(
IN FWPM_ENGINE_HANDLE engineHandle,
IN const FWP_IPSEC_TRAFFIC0* ipsecTrafficDescription,
IN const FWP_IPSEC_UDP_ENCAP0* udpEncapInfo,
OUT FWP_IPSEC_SPI* inboundSpi
);
이하, 상기 파라미터들의 특징을 설명한다 :
engineHandle은 사용자 방화벽 엔진(260)에 대한 핸들이다.
ipsecTrafficDescription은 인바운드 라벌(larval) SA를 생성하기 위한 5-투플(tuple) 기술(description)이다. 5-투플은 소스 IP 어드레스, 목적지 IP 어드레스, 소스 포트, 목적지 포트, 및 전송 계층 프로토콜 타입을 포함한다.
udpEncapInfo는 라벌 SA를 생성하기 위한 UDP 캡슐화 데이터이다. UDP 캡슐화는, 암호화되지 않은 UDP 패킷에, 보안 프로토콜에 따라 포맷된 패킷을 임베딩하는 공지된 방법이다.
inboundSpi는 인바운드 SA를 위한 SPI이다.
추가 인바운드 SA 메소드(382)는 인바운드 SA를 추가하기 위해 즉, 라벌 SA를 갱신하기 위해 키잉 모듈 계층에 의해 호출된다. 사용자 방화벽 엔진(260)은, 상기 호출을 내부 상태에 맵핑(mapping)하고 ioctl 문을 사용하여 SA를 IPSec 드라이버로 보내기 위해, SA의 SPI를 사용한다. 다음은 추가 인바운드 SA 메소드의 예시적인 형태이다.
WIN32_ERR
FwpIPSecSAInboundAdd0
(
IN FWPM_ENGINE_HANDLE engineHandle,
IN const FWP_IPSEC_SA_STRUCT0* inboundSA
);
이하, 상기 파라미터들의 특징을 설명한다 :
engineHandle은 사용자 방화벽 엔진에 대한 핸들이다.
inboundSA는 인바운드 SA를 포함한다.
추가 아웃바운드 SA 메소드(384)는 아웃바운드 SA를 추가하기 위해 키잉 모듈에 의해 호출된다. 사용자 방화벽 엔진은, 상기 호출을 내부 상태에 맵핑하고 ioctl 문을 사용하여 SA를 IPSec 드라이버로 보내기 위해, 인바운드 SPI 파라미터를 사용한다. 다음은 추가 아웃바운드 SA 메소드의 예시적인 형태이다.
WIN32_ERR
FwpIPSecSAOutboundAdd0
(
IN FWPM_ENGINE_HANDLE engineHandle,
IN FWP_IPSEC_SPI inboundSpi,
IN const FWP_IPSEC_SA_STRUCT0* outboundSA
);
이하, 상기 파라미터들의 특징을 설명한다.
engineHandle은 사용자 방화벽 엔진(260)에 대한 핸들이다.
inboundSpi는 아웃바운드 SA와 쌍을 이루는 인바운드 SA를 위한 SPI이다.
outboundSA는 아웃바운드 SA를 포함한다.
인바운드 SA 소멸 메소드(386)는, 앞서 추가된 인바운드 SA를 소멸하기 위해 키잉 모듈에 의해 호출된다. 다음은 인바운드 SA 소멸 메소드(386)의 예시적인 형태이다.
WIN32_ERR
FwpIPSecSAInboundExpire0
(
IN FWPM_ENGINE_HANDLE engineHandle,
IN const FWP_IPSEC_SA_EXPIRE0* expire
);
이하, 상기 파라미터들의 특징을 설명한다.
engineHandle은 사용자 방화벽 엔진(260)에 대한 핸들이다.
expire는 소멸될 SA에 대한 데이터를 포함한다.
키잉 모듈 개시 메소드(388)는, 키잉 모듈 계층을 개시하고 해당 애플리케이션의 네트워크 트래픽 송신 개시 이전에 SA를 셋업하기 위해, RAS, Winsock API 등의 공지된 외부 애플리케이션에 의해 호출된다. 사용자 방화벽 엔진(260)은 비동기적으로 RPC 호출을 보류하여, IPSec 드라이버로부터 SPI를 획득하고, 그 획득을 적절한 키잉 모듈로 전달한다. 키잉 모듈 계층이 FwpIPSecSAAcquireComplete0를 호출하면, 사용자 방화벽 엔진은 협상 스테이터스(negotiation status)를 사용하여 비동기 RPC를 완료한다. 다음은 키잉 모듈 개시 메소드의 예시적인 형태이다.
WIN32_ERR
FwpKeyingModuleInitiate0
(
IN FWPM_ENGINE_HANDLE engineHandle,
IN const FWP_IPSEC_SA_ACQUIRE0* acquire,
IN HANDLE waitEvent,
OUT FWP_IPSEC_NEGOTIATION_STATUS0* negotiationStatus
);
이하, 상기 파라미터들의 특징을 설명한다.
engineHandle은 사용자 방화벽 엔진(260)에 대한 핸들이다.
acquire는 SA를 협상하는 데 필요한 데이터를 포함한다.
waitEvent는 협상 스테이터스가 이용 가능한 경우에 개시되는 이벤트에 대한 핸들이다. 클라이언트 즉, 호출한 외부 애플리케이션은 협상 완료를 대기하는 것에 관련이 없다면 이 파라미터를 NULL로 설정할 수 있다. 내부적으로는, 클라이언트 프록시는 상기 이벤트를 RPC로 선택적으로 전달하고, 비동기 RPC 호출이 완료되면 상기 이벤트를 설정하도록 RPC에 요청한다.
negotiationStatus는 협상 결과를 포함한다. negotiationStatus는 waitEvent가 NULL이면 NULL이다. 반면, negotiationStatus는 waitEvent가 개시될 때까지는 유효(valid)로 유지된다.
도 8은 본 발명에 따라 네트워크 스택(254)의 계층들에서 사용되는 방법을 도시한다. 또한, 도 8에 도시된 방법은 필터 모듈(294) 및 사용자 방화벽 엔진(260)과 연동하여 하나 이상의 사용자 모드 계층(282)에서 사용될 수 있다.
각 계층은, 네트워크 패킷을 처리하는 기능, 커널 방화벽 엔진(256)에 분류 요청을 발행하는 기능, 패킷 콘텍스트를 관리하는 기능을 포함한 복수의 기능을 가질 수 있다. 본 발명의 일 실시예에서, 이 기능들은 네트워크 스택(254)에 설치된 심(shim)(400, 402, 404, 406)의 계층들 각각에서 실행된다. 대안으로, 이 기능들은 심을 필요로 하지 않고 개별 계층들에 직접 구축될 수도 있다.
네트워크 스택(254)은 데이터 스트림 계층(268), 전송 계층(270), 네트워크 계층(272), 및 연결 계층(274)을 포함한다. 본 발명을 예시하고자 하는 목적으로, 연결 계층(274)은 NDIS 드라이버로 구현되고, 네트워크 계층(272)은 IP 계층으로서 구현되며, 전송 계층(270)은 TCP 계층으로서 구현되고, 데이터 스트림 계층(268)은 HTTP 계층으로서 구현된다. 계층들이 임의의 프로토콜에 따라 구현될 수 있음을 알 것이다. 예를 들어, 전송 계층은 UDP(User Datagram Protocol)도 수용한다. 응용 계층은 FTP, RPC(Remote Procedure Call), SMTP, SMB(Server Master Block) 등을 지원한다. 상술한 바와 같이, 추가의 계층들이 아키텍처에 부가될 수도 있고, 계층들이 삭제될 수도 있다. 예를 들어, 계층은 도 6을 참조하여 설명한 계층 추가 메소드 및 계층 삭제 메소드를 이용하여 부가 및 삭제된다.
네트워크 패킷(408(a)∼408(d))이 네트워크 스택(254)의 계층들을 통과하여 네트워크 스택의 계층들에 의해 처리되는 것이 예시되어 있다. 네트워크 패킷(408(a)∼408(d))이 인바운드 패킷이면, 이 패킷은 네트워크 스택을 최하부로부터 최상부로 통과한다. 네트워크 패킷(408(a)∼408(d))이 아웃바운드 패킷이면, 이 패킷은 네트워크 스택을 최상부로부터 최하부로 통과한다. 이러한 처리는 공지된 것이지만, 본 발명을 예시하기 위한 목적에서 간단히 설명한다.
웹 브라우저와 같이 네트워크 디바이스에서 실행되는 애플리케이션이 다른 네트워크 디바이스 상에 위치하는 웹 페이지의 콘텐츠에 대한 요청을 개시한다고 가정하면, 이 애플리케이션은 데이터 스트림 계층(268)에 요청을 발행하게 된다. 본 예에서, 데이터 스트림 계층(264)은 HTTP 프로토콜에 따라 상기 요청을 포맷하고, 상기 요청을 패킷(408(a))으로 전송 계층에 보낸다. 전송 계층(270)은 패킷(408(a))을 수신한다. TCP 프로토콜을 구현하는 전송 계층(270)은 데이터를 하나 이상의 패킷에 배치하고, 각 패킷에는 TCP 헤더가 제공된다. TCP 헤더는 소스 포트 및 목적지 포트, 프로토콜 타입 즉, TCP, 시퀀스 번호(seqeunce numbers), 플래그(flag), 체크섬(checksum)과 같은 정보를 포함한다. 이어서, 전송 계층은 패킷(408(b))을 네트워크 계층으로 보낸다.
네트워크 계층은 IP 프로토콜을 구현하고, 소스 IP 어드레스, 목적지 IP 어드레스, 플래그, 체크섬, 및 기타 공지된 정보를 포함하는 데이터를 IP 헤더 내에 캡슐화한다. 또한, IP 헤더는 패킷이 단편화(fragment)되었는지의 여부를 나타낸다. IP 패킷의 사이즈가 해당 패킷을 전송하는 데 사용되는 네트워크 기술의 MTU(Maximum Transmission Unit)의 사이즈를 초과하면, 해당 패킷은 단편화된다. 예를 들어, 이더넷 기술은 MTU를 1500 바이트로 지정하고 있다. IP 패킷의 길이가 MTU를 초과하면, 해당 패킷은 2개 이상의 IP 패킷으로 단편화되고, 이러한 IP 패킷들 각각은 IP 헤더를 구비하며, IP 패킷들 모두는 MTU에 비해 동일하거나 짧은 길이를 갖는다.
본 발명의 일 실시예에서, 네트워크 계층은 제1 계층 및 제2 계층으로 분리된다. 단편 계층(fragment layer)이라고 불리는 제1 계층은 IP 패킷 단편들을 처리한다. 풀 어셈블 계층(fully assembled layer)이라고 불리는 제2 계층은, 예컨대 아웃바운드 IP 패킷이 단편화되기 이전 및 인바운드 IP 패킷이 단일의 IP 패킷으로 다시 어셈블된 이후의 풀 IP 패킷을 처리한다. 네트워크 계층 처리 및 이용 가능한 단편화에 이어서, 패킷(408(c))은 연결 계층(274)으로 보내어진다. 연결 계층(274)은 소스 MAC 어드레스, 목적지 MAC 어드레스, 및 기타 정보를 MAC 헤더에 제공함으로써 데이터를 더 패킷화한다. 이어서, 패킷은 물리적으로 네트워크 상으로 전송되는 NIC(network interface card)로 보내어진다.
인바운드 패킷은 역처리된다. NIC에서 패킷(408(d))이 수신되어, 연결 계층(274)에 보내어진다. MSC 헤더가 제거된 패킷(408(c))은 네트워크 계층으로 보내어진다. 네트워크 계층에서는 IP 패킷 단편들이 다시 어셈블되며, 필요에 따라서는 IP 헤더가 파싱된다. 이어서, 네트워크 계층은 패킷(408(b))을 전송 계층으로 보낸다. 전송 계층에서는 TCP 헤더가 제거되며, 만일 데이터 스트림이 복수의 TCP 패킷으로 보내어진 것이면 해당 데이터 스트림이 다시 어셈블된다. 마지막 으로, 데이터 스트림(408(a))은 데이터 스트림 계층(268)으로 보내어진다. 데이터 스트림 계층에서는 데이터가 응용 프로토콜(이 경우, HTTP 프로토콜)에 의해 복호된다.
아웃바운드 패킷 각각마다, 네트워크 스택의 계층들은 패킷 콘텍스트(410(a)∼410(c))를 보유한다. 인바운드 패킷 각각마다, 네트워크 스택의 계층들은 패킷 콘텍스트(412(a)∼412(c))를 보유한다. 패킷 콘텍스트는 네트워크 계층들을 통과하는 각 패킷에 후속한다. 패킷 콘텍스트도 콜아웃(258)으로 전달되며, 콜아웃에 의해 변경될 수도 있다(도 3 참조).
패킷 콘텍스트는 패킷이 각 계층에서 처리될 때마다 갱신된다. 각각의 계층은 자신의 계층 파라미터를 패킷 콘텍스트에 부가함으로써, 이 정보를 후속하는 계층들 또는 프로세스들에 제공한다. 도시된 바와 같이, 연결 계층(274)은, 패킷 콘텍스트(412(a))에 나타나 있는 바와 같이, 인바운드 패킷에 소스 MAC 어드레스, 목적지 MAC 어드레스, 및 인터페이스 번호를 부가한다. 패킷 콘텍스트는 네트워크 계층(272)에서 수신되고, 네트워크 계층에서는 패킷 콘텍스트(412(b))에 나타나 있는 바와 같이 소스 IP 어드레스 및 목적지 IP 어드레스를 부가한다. 전송 계층(266)은 이러한 패킷 콘텍스트를 수신하고, 패킷 콘텍스트(412(c))에 나타나 있는 바와 같이 포트 번호를 부가한다.
아웃바운드 패킷에 연관된 콘텍스트(410(a)∼410(c))에 대해서 마찬가지의 처리가 적용된다. 데이터 스트림 계층(268)은 콘텍스트(410(a))에 나타나 있는 바와 같이 패킷 페이로드로부터 URL 어드레스 등의 정보를 부가하고, 전송 계층(270) 은 콘텍스트(410(b))에 나타나 있는 바와 같이 소스 포트 번호 및 목적지 포트 번호를 더 부가하며, 네트워크 계층은 콘텍스트(410(c))에 나타나 있는 바와 같이 소스 IP 어드레스 및 목적지 IP 어드레스를 부가한다.
각각의 계층이 해당 계층에 이용 가능한 임의의 콘텍스트 정보를 추가할 수 있음을 알 것이다. 통상적으로, 이는 해당 계층이 처리(즉, 부가 혹은 파싱하거나, 패킷으로부터 파생)하도록 설계된 임의의 정보를 포함한다.
패킷 및 이에 대응하는 콘텍스트가 각 계층에서 수신되면, 해당 계층은 계층 파라미터를 식별하고 분류 요청을 보냄으로써(414) 요청 계층으로서 기능한다. 분류 요청(414)은 계층 파라미터(416), 이전의 계층으로부터 수신된 패킷 콘텍스트(418), 및 풀 패킷(420)을 포함한다. 분류 요청을 발행하는 데 사용되는 메소드의 예로는, 계층 API(280)를 참조하여 설명한 분류 메소드(350)가 있다(도 7 참조).
각 분류 요청에 응답하여, 커널 모드 방화벽 엔진(256)은 계층 파라미터(416) 및 패킷 콘텍스트(418)를 요청 계층에 할당된 필터들의 필터 조건들(318)(도 4 참조)과 비교한다. 커널 방화벽 엔진(256)은 액션(424)과 함께 응답을, 최고 가중치(314)를 갖는 매칭 필터(310)로부터 요청 계층으로 보낸다(422). 또한, 커널 방화벽 엔진(256)은 정책 콘텍스트(426)를 리턴한다. 커널 방화벽 엔진(256)에서 어떠한 매칭 필터도 식별되지 않으면, 커널 방화벽 엔진은 매칭 필터가 존재하지 않음을 요청 계층에 통지한다. 커널 방화벽 엔진(256)은, 매칭 필터가 종료 액션(즉, 허가 혹은 차단)을 지정할 때 및 요청 계층에 할당 된 모든 필터들이 체크될 때 중 먼저 완료되는 것에 따라 그 때까지, 매칭 필터를 계속해서 식별한다. 대안으로, 커널 방화벽 엔진(256)은 모든 매칭을 식별하면, 액션을 단일의 응답으로 요청 계층에 리턴한다.
전반적으로 설명한 바와 같이, 계층 파라미터를 식별하는 것은 네트워크 스택(254)의 계층들에 의해 수행되는 정규의 계층 처리의 일부로서 행하여지는 것이다. 추가의 패킷 파싱이 요구되지 않으므로, 시스템 성능에 대한 영향을 최소화한다. 게다가, 계층들이 패킷 콘텍스트를 보유하는 데 있어 연동하여 동작하기 때문에, 정규적으로는 패킷 파라미터로의 액세스를 갖지 않는 계층들에서 패킷 파라미터와 필터 조건을 비교할 수 있는 방화벽 엔진(256)이 제공된다. 예를 들어, 네트워크 계층(272)은 연결 계층(274)으로부터 소스 MAC 어드레스 및 목적지 MAC 어드레스를 포함하는 인바운드 패킷 콘텍스트를 수신한다. 네트워크 계층(272)이 네트워크 계층 파라미터, 예컨대 패킷 콘텍스트 뿐만 아니라 소스 IP 어드레스 및 목적지 IP 어드레스를 갖는 분류 요청을 발행하기 때문에, 커널 방화벽 엔진(256)은 상기 MAC 어드레스들이 통상적으로 이용 가능하지 않음에도 불구하고 네트워크 계층(272)에서 IP 어드레스 및 MAC 어드레스 모두를 필터링할 수 있다.
이제부터, 도 9를 참조하여, 본 발명의 방화벽 아키텍처가 포함된 예시적인 콜아웃 모듈들의 세트(258)를 설명한다. 콜아웃 모듈들(258)은 HTTP 콘텍스트 콜아웃(430), 침입 검출 콜아웃(436), IPSec 콜아웃(438), 및 로깅 콜아웃(440)을 포함한다.
HTTP 콘텍스트 콜아웃(430)은 허용 가능한 URL 어드레스 혹은 그 대안인 허 용 불가한 URL 어드레스의 캐쉬(432)를 보유한다. HTTP 콘텍스트 콜아웃(430)은 공중 네트워크에 인터페이싱된 서버(434)를 주기적으로 액세스한다. 이 서버는 URL 어드레스들을 보유하며, 이들이 허용 가능한 것인지 혹은 허용 불가한 것인지를 분류한다. 커널 방화벽 엔진(256)이 HTTP 콘텍스트 콜아웃을 실행하면, 이 콜아웃은 패킷을 검사하고, 필요에 따라서는 URL 어드레스를 복호하고, 캐쉬(432)의 정보에 기초하여 허용 가능한지를 결정한다. 이어서, HTTP 콘텍스트 콜아웃은, URL 어드레스가 허용 가능한 경우에는 액션(316)으로서 허가를 커널 모드 방화벽 엔진(256)으로 리턴하고, URL 어드레스가 허용 불가한 경우에는 차단을 리턴한다. 그러면, 커널 모드 방화벽 엔진은 상기 액션(316)을 계층 API(280)를 통해 요청 계층으로 리턴한다. HTTP 콘텍스트 콜아웃은 자녀 보호 제어 기능을 구현하는 데 유용하다.
침입 검출 콜아웃(436)은 바이러스 혹은 혐의가 있는 패킷의 징후(indicia)를 식별하기 위해 패킷을 검사하는 데 이용 가능한 알고리즘 및 기술을 사용한다. 혐의가 있는 패킷이 검출되면, 차단 액션(316)이 리턴된다. 혐의가 있는 패킷의 일례로는, IP 헤더 및 TCP 헤더의 모든 플래그의 값이 1로 설정된 패킷이다. 이러한 패킷은 결코 유효한 것이 아니고 오히려 공격 서명(attack signature)을 나타내는 것일 수 있기 때문에 혐의가 있다. 대안으로, 침입 검출 콜아웃(436)은 패킷 콘텍스트에 대하여 패킷의 혐의있는 특성을 플래그 표시하도록 변경함으로써, 해당 패킷을 차단할지에 대한 결정을 네트워크 스택의 후속 계층들에게 맡긴다.
IPSec 콜아웃(438)은 해당 패킷에 적절한 보안 프로토콜이 적용되었는지의 여부를 판정하도록 설계된다. IPSec 콜아웃(438)은 IPSec 프로세스와 통신하여, 해당 패킷이 IPSec 처리를 받기로 되어 있었는지의 여부를 IPSec 정책에 기초하여 판정한다. 받기로 되어 있었다면, IPSec 콜아웃(438)은 해당 패킷이 사실상 IPSec 처리를 받았는지의 여부를 패킷 콘텍스트에 기초하여 검증한다. 해당 패킷이 IPSec에 따라 처리받기로 되어 있었으나 그렇게 하지 않았다면, 예컨대 해당 패킷이 비처리 텍스트 내에 있었다면, 차단 액션이 리턴된다. 해당 패킷이 IPSec 처리를 받았다면, IPSec 콜아웃은 적절한 SA가 적용되었는지를 검증한다.
로깅 콜아웃(440)은 차후의 사용을 위해 풀 패킷 등의 패킷에 포함된 정보를 저장하는 데 사용된다. 이러한 차후의 사용은, 예컨대 네트워크가 차단되어 예기치 않게 네트워크를 통과하지 못하는 네트워크 트래픽을 위한, 혹은 시스템에 대한 악의적 공격을 추적하기 위한 진단 수단(diagnostics)이 될 수 있다.
도 10은 본 발명에 따른 전체적인 방화벽 기능을 구현하는 데 사용되는 프로세스(450)를 예시한다. 단계 452에서, 요청 내의 패킷 파라미터를 식별하는 요청 계층은 소정의 패킷에 대하여 분류 요청을 발행한다. 단계 454에서는, 분류 요청의 패킷 파라미터에 매칭되는 필터들이 식별된다. 이어서, 단계 456에 나타나 있는 바와 같이, 매칭되는 필터에 기초하여 상기 패킷이 드롭되어야 하는지의 여부가 결정된다. 패킷을 드롭하는 것으로 결정되면, 상기 패킷은 드롭되고, 본 프로세스는 더 이상의 패킷 처리없이 종료된다. 패킷을 드롭하지 않는 것으로 결정되면, 단계 458에 나타나 있는 바와 같이, 요청 계층은 상기 패킷을 요청 계층에서 구현된 프로토콜에 따라 처리하고, 패킷 콘텍스트 데이터 구조가 변경된다. 추가의 계 층이 존재하지 않으면, 마찬가지로 본 프로세스는 종료된다. 추가의 계층이 존재하면, 단계 462에 나타나 있는 바와 같이, 처리된 패킷 및 패킷 콘텍스트는 후속 계층으로 보내어진다. 본 프로세스는 패킷이 드롭될 때까지 혹은 패킷이 모든 계층을 통과할 때까지 계속된다.
도 11은, 패킷을 처리하고, 분류 요청을 발행하며, 패킷 콘텍스트를 보유하는 방법(502)을 도시한다. 이 방법은 요청 계층에서 사용된다. 여기에서 설명되는 방법은 다양한 네트워크 계층들의 심 모듈들(400, 402, 404, 406)에서 실행된다. 대안으로, 본 방법(500)은 개개의 심 모듈을 필요로 하지 않고 네트워크 스택의 계층들 내에서 하나의 통합된 프로세스로 실행될 수 있다. 또한, 본 방법(500)은 하나 이상의 사용자 모드 계층에서 구현될 수 있다.
단계 502에서, 요청 계층은 이전의 계층으로부터 풀 패킷(408) 및 이에 대응하는 패킷 콘텍스트(412)를 수신한다. 아웃바운드 패킷의 경우, 이전의 계층은 네트워크 스택에서 요청 계층보다 더 상위에 있다. 인바운드 패킷의 경우, 이전 계층은 네트워크 스택에서 요청 계층보다 더 하위에 있다.
단계 504에서, 요청 계층은 계층 파라미터를 식별한다. 계층 파라미터는, 인바운드 패킷으로부터의 파라미터를 파싱하거나 아웃바운드 패킷에 파라미터를 추가하는 방식으로, 요청 계층에 의해 처리된다. 계층 파라미터는 로컬 어드레스 타입 등, 패킷으로부터 도출될 수 있는 기타 정보를 포함할 수 있다. 디폴트 계층 파라미터는 표 A에 상술되어 있고, 계층 API(280)의 분류 메소드(350)의 pInFixedValues에 포함되어 있다.
단계 506에서, 요청 계층은 커널 방화벽 엔진(256)에 분류 요청을 발행한다. 분류 요청을 발행하는 메소드의 예는 계층 API(280)의 분류 메소드(350)를 참조하여 설명한 바 있다.
분류 요청에 응답하여, 액션이 요청 계층으로 리턴된다. 요청 계층은 리턴된 액션에 기초하여 패킷을 드롭할지의 여부를 결정한다(508). 커널 방화벽 엔진이 액션으로서 차단을 리턴하면, 요청 계층은 해당 패킷을 드롭한다. 또한, 커널 방화벽 엔진(256)이 매칭 필터가 발견되지 않는다는 것으로서 액션을 리턴하면, 요청 계층은 해당 패킷을 드롭할 수 있다. 매칭 필터가 발견되지 않는 경우에 요청 계층이 패킷을 드롭할지의 여부는 시스템 전체 혹은 계층별 중 하나에 기초하여 설정할 수 있다.
리턴된 액션이 허가인 경우, 다른 패킷 처리가 개시된다. 단계 510에서, 요청 계층은 계층 정보를 포함시키기 위해 패킷 콘텍스트를 변경하며, 이러한 계층 정보는 통상적으로 분류 요청에 계층 파라미터로서 포함되었던 정보와 동일한 타입이다. 따라서, 상술한 표 A는 계층 파라미터 뿐만 아니라 각 계층에서 패킷 콘텍스트에 추가하는 디폴트 정보도 식별한다. 패킷 콘텍스트는 도 5를 참조하여 설명한 데이터 구조와 같은 데이터 구조로 보유된다.
단계 512에서, 요청 계층은 해당 계층의 프로토콜 구현에 따라 패킷을 처리한다. 이러한 처리는 공지된 것이므로, 본 명세서에서는 그 상세한 설명을 생략한다. 프로토콜 구현의 예로서, 응용 계층용으로는 HTTP, FTP, SMTP, 및 RPC가 포함되고, 전송 계층용으로는 TCP 및 UDP가 포함되며, 네트워크 계층용으로는 IP가 포 함되고, 연결 계층용으로는 NDIS가 포함된다.
단계 514에서, 요청 계층은, 변경된 패킷 콘텍스트와 함께, 계층 프로토콜에 따라 처리된 패킷을 후속 계층으로 전달한다. 전달된 패킷이 인바운드 패킷인 경우, 후속 계층은 네트워크 스택에서 보다 상위의 계층이다. 전달된 패킷이 아웃바운드 패킷인 경우, 후속 계층은 네트워크 스택에서 보다 하위의 계층이다. 본 프로세스(500)는 네트워크 스택의 각 계층마다 반복되고, 패킷이 네트워크 스택의 모든 계층을 통과할 때까지 혹은 패킷이 네트워크 스택의 계층들 중 하나에 의해 드롭될 때까지 계속된다.
이제부터, 도 12를 참조하여, 매칭 필터를 식별하고 요청 계층으로 액션을 리턴하는 예시적인 방법(520)을 설명한다. 이 방법은 커널 방화벽 엔진(256)에서 사용된다. 상술한 바와 같이, 커널 방화벽 엔진(256)의 기능도 사용자 방화벽 엔진을 실행하는 필터 모듈(294)에서 수행될 수 있다.
단계 522에서, 커널 방화벽 엔진(256)은, 예컨대 분류 메소드(350)를 사용하여, 요청 계층으로부터 계층 API(280)를 통해 패킷, 계층 파라미터, 및 패킷 콘텍스트를 수신한다.
단계 524에서, 커널 방화벽 엔진은 하나 이상의 매칭 필터를 식별한다. 본 발명의 일 실시예에서, 필터는 소정의 요청 계층에 할당된다. 커널 방화벽 엔진(256)은 필터가 요청 계층에 할당되고 패킷 파라미터가 모든 필터 조건(318)에 매칭되는 경우(도 5)에 필터가 매칭되는 것으로서 식별하려고만 한다. 상술한 바와 같이, 패킷 파라미터는 요청 계층으로부터의 계층 파라미터 및 패킷 콘텍스트를 모두 포함한다. 모든 매칭 필터가 식별된 후에는, 커널 방화벽 엔진은 각 매칭 필터의 가중치 필드(314)에 기초하여 매칭 필터들을 정렬한다.
단계 526에서, 커널 방화벽 엔진(256)은, 지금까지 적용되지 않았으며 최고의 가중치 필드(314)를 가진 필터를 적용한다. 특히, 커널 방화벽 엔진(256)은 필터에서 지정된 액션(316)을 식별한다. 이 액션(316)이 콜아웃 모듈들(258) 중 하나를 지정한 경우, 단계 532에 도시된 바와 같이, 커널 방화벽 엔진(256)은 콜아웃 API(284)를 통해 해당 콜아웃을 실행한다. 콜아웃을 실행하는 데 사용되는 메소드의 예는 콜아웃 API의 분류 메소드(356)를 참조하여 설명한 바 있다(도 6 참조). 실행된 콜아웃은 액션을 커널 방화벽 엔진(256)으로 리턴할 수 있다.
액션이 콜아웃이 아니었다면, 혹은 콜아웃이 실행된 후에는, 단계 536에 나타나 있는 바와 같이, 커널 방화벽 엔진은 매칭 필터로부터의 액션 혹은 콜아웃에 의해 식별된 액션을 요청 계층으로 리턴한다. 대안으로, 커널 방화벽 엔진(256)은 모든 매칭 필터가 적용될 때까지 액션을 리턴하는 것을 대기한다.
단계 534에서, 커널 방화벽 엔진(256)은 임의의 매칭 필터가 더 존재하는지를 판정한다. 존재하지 않는다면, 본 프로세스는 종료한다. 매칭 필터가 더 존재하면, 본 프로세스는 단계 526으로 복귀하고, 단계 526에서는 최고 우선순위 아래의 우선순위를 갖는 필터가 적용된다. 본 프로세스는 모든 매칭 필터가 적용될 때까지 계속된다. 대안으로, 본 프로세스는 패킷에서 종료 액션이 식별되면 종료한다. 패킷에서 매칭 필터가 식별되지 않으면, 커널 방화벽 엔진은 매칭 필터가 발견되지 않았음을 요청 계층에 통지한다. 이어서, 요청 계층은 해당 패킷을 어떻게 처리할지 즉, 그 패킷을 허가할지 아니면 차단할지를 결정한다.
도 13은 본 발명에 따라 사용되는 방법(560)을 도시하는 것으로서, 이 방법은 비요청 인바운드 패킷에 의한 악의적 공격을 막는 한편, 신뢰받는 사용자의 통신이, 알 수 없는(unknown) 네트워크 어드레스로부터의 통신을 개시하는 것을 허용하는 것이다.
단계 562에서, 본 발명의 방화벽을 구현하는 응답 컴퓨터가 비요청 인바운드 패킷을 수신한다. 본 프로세스(560)는 단계 564에서 상기 인바운드 패킷이 인증 요청(authentication request)인지를 판정한다. 인증 요청은 예컨대 IKE 프로토콜에 따른 것일 수 있다. 인바운드 패킷이 인증 요청이면, 단계 568에 나타나 있는 바와 같이, 응답 컴퓨터는 개시 컴퓨터의 인증을 시도한다. 개시 컴퓨터를 인증하는 데 사용되는 일 방법으로는 디지털 증명서(digital certificate)를 사용하는 것이 있다. 디지털 증명서는 CA(certification authority)에서 발행되는 것으로서, 수취인이 그 증명서가 진본임을 검증할 수 있도록 사용자 명, 일련 번호, 유효 기간, (암호화 메시지 및 디지털 서명에 사용되는) 공개 키의 사본, 및 CA의 디지털 서명 등의 정보를 포함한다.
이어서, 본 프로세스는 단계 568에서 인증 처리가 성공적이었는지의 여부를 판정한다. 인증이 성공하지 못했다면 즉, 응답 컴퓨터가 개시 컴퓨터를 인증할 수 없다면, 본 프로세스는 종료한다.
인증 처리가 성공이었다면, 단계 570에 나타나 있는 바와 같이, 새로운 필터가 생성된다. 새로운 필터는 IP 어드레스, 포트 번호, 프로토콜 타입 등과 같이 응답 컴퓨터의 어드레스 정보에 매칭되는 필터 조건을 포함하고, 이에 연관된 액션으로서 허가를 포함한다. 대안으로, 새로운 필터는 개시 컴퓨터와 응답 컴퓨터 간의 보안 설정에 대한 협안에 매칭되는 필터 조건을 갖는다. 단계 572에 도시된 바와 같이, 인증 요청이 아닌 인바운드 패킷이 수신된 경우에는, 본 프로세스는 개시 컴퓨터가 인증된 것인지의 여부 즉, 허가 액션을 갖는 매칭 필터가 존재하는지의 여부를 판정한다. 매칭 필터가 액션으로서 허가를 가진 경우, 단계 547에 나타나 있는 바와 같이, 해당 패킷은 네트워크 통과가 허가된다. 그렇지 않은 경우에는, 단계 576에 도시된 바와 같이, 해당 패킷은 그 이상의 네트워크 통과가 차단된다.
비요청 사용자로부터의 보안 통신을 제공하는 방법(516)에 대한 대안으로는, 모든 인바운드 패킷을 IPSec에 의해 제공되는 바와 같이 보안 프로토콜을 따르는 필터를 생성하는 것을 들 수 있다. 이와 같이 하면, 패킷을 차단하지 않고 상기 패킷을 상기 필터에 적용할 수 있기 이전에, 먼저 단계 566에 나타나 있는 바와 같이 인증된 SA를 설정해야 한다.
본 명세서에 인용된 모든 참조들은 본 명세서에 참조로서 그대로 포함된다.
본 발명의 원리들이 적용될 수 있는 여러 가능한 실시예들을 검토할 때, 도면을 참조하여 본 명세서에서 설명된 실시예는 단지 예시일 뿐이고, 본 발명의 범위를 제한하는 것으로 취해서는 안된다는 것을 이해하여야 한다. 예를 들어, 본 기술 분야의 숙련자라면, 소프트웨어로 설명된 실시예의 구성 요소들이 하드웨어로 구현될 수 있고, 그 역도 마찬가지로 구현될 수 있으며, 예시된 실시예는 본 발명의 사상으로부터 벗어나지 않는 범위 내에서 그 구성이나 상세를 변경할 수 있음을 이해할 것이다. 또한, 본 기술 분야의 숙련자라면, 기타 프로세스들이 QOS, IPSec 등의 필터를 사용할 수 있음을 이해할 것이다. 본 발명은 상기 및 추가의 프로세스들의 필터 기반 정책 및 필터를 관리하고 실행하는 데 사용할 수 있다. 그러므로, 본 명세서에 개시된 발명은 이하의 특허청구범위의 범주 내에 있을 수 있는 모든 실시예 및 그 등가물을 포함하도록 의도된 것이다.
본 발명에 따르면, 방화벽 아키텍처의 방화벽을 구현하기 위한 방법이 제공되며, 또한, 신뢰하는 네트워크 디바이스와의 비요청 통신을 허가하는 반면, 그 외의 다른 네트워크 디바이스로부터의 비요청 통신은 차단하는 방법이 제공된다.

Claims (28)

  1. 요청 스테이지(requesting stage)에 방화벽 정책(firewall policy)을 구현하는 방법에 있어서 - 상기 요청 스테이지는 방화벽 프레임워크(firewall framework)의 복수의 스테이지 중 제1 스테이지이고, 상기 방화벽 프레임워크는 복수의 설치된 필터를 갖는 방화벽 엔진을 더 포함함 -,
    상기 요청 스테이지에서, 상기 복수의 스테이지 중 제2 스테이지부터의 패킷을 수신하는 단계;
    상기 요청 스테이지에서, 상기 패킷과 연관된 파라미터들의 세트를 식별하는 단계;
    상기 패킷과 연관된 상기 파라미터들의 세트를 포함하는 분류 호출(classify call)을 발행하는 단계;
    상기 분류 호출에 응답하여, 상기 복수의 설치된 필터들 중 적어도 하나에 의해 지정되는 상기 방화벽 정책에 따른 액션(action)을 수신하는 단계; 및
    상기 액션이 상기 패킷으로 하여금 네트워크 통과(network traversal)를 계속하도록 허용하는 명령(instruction)이면, 상기 요청 스테이지에 의해 실행되는 프로토콜에 따라 상기 패킷을 처리하고 상기 복수의 스테이지 중 제3 스테이지에 상기 패킷을 보내는 단계
    를 포함하고,
    상기 제2 스테이지로부터 패킷 콘텍스트 데이터 구조(packet context data structure)를 수신하는 단계 - 상기 패킷 콘텍스트는 상기 패킷과 연관된 제2 스테이지 데이터를 포함함 -; 및
    상기 파라미터들의 세트를 부가함으로써 상기 패킷 콘텍스트 데이터 구조를 변경하는 단계
    를 더 포함하는 방화벽 정책 구현 방법.
  2. 제1항에 있어서,
    상기 액션은 상기 패킷이 네트워크 통과(network traversal)를 계속하도록 허용하는 상기 명령(instruction)이고,
    상기 패킷을 계층 프로토콜(layer protocol)에 따라 처리하는 단계; 및
    상기 패킷을 상기 복수의 스테이지 중 제3 스테이지로 보내는 단계
    를 더 포함하는 방화벽 정책 구현 방법.
  3. 제1항에 있어서,
    상기 패킷은 네트워크 디바이스로 향하는 아웃바운드 패킷(outbound packet)이고, 상기 파라미터들의 세트는 상기 요청 스테이지에 의해 구현된 프로토콜에 따라 상기 패킷에 부가될 정보를 포함하는 방화벽 정책 구현 방법.
  4. 제1항에 있어서,
    상기 패킷은 네트워크 디바이스로부터 수신된 인바운드 패킷(inbound packet)이고, 상기 파라미터들의 세트는 상기 요청 스테이지에 의해 구현된 프로토콜에 따라 상기 요청 스테이지가 상기 인바운드 패킷으로부터 파싱(parsing)한 정보를 포함하는 방화벽 정책 구현 방법.
  5. 제1항에 있어서,
    상기 복수의 스테이지는 오퍼레이팅 시스템의 커널 모드(kernel mode) 내에서 실행되는 방화벽 정책 구현 방법.
  6. 제1항에 있어서,
    상기 복수의 스테이지는 오퍼레이팅 시스템의 사용자 모드(user mode) 내에 서 실행되는 방화벽 정책 구현 방법.
  7. 삭제
  8. 제1항에 있어서,
    상기 파라미터들의 세트의 파라미터들은 상기 요청 스테이지의 식별자, 상기 파라미터 타입, 및 값을 포함하는 방화벽 정책 구현 방법.
  9. 제1항에 있어서,
    상기 요청 스테이지는 상기 변경된 패킷 콘텍스트 데이터 구조를 상기 복수의 스테이지 중 후속 스테이지로 보내는 방화벽 정책 구현 방법.
  10. 설치된 필터들의 세트를 포함하는 방화벽 엔진에 방화벽 정책을 구현하는 방법에 있어서 - 상기 설치된 필터들 각각은 필터 조건들의 세트 및 연관된 액션을 포함함 -,
    요청 계층(requesting layer)으로부터, 상기 요청 계층과 연관된 제1 패킷 정보 및 패킷 콘텍스트 데이터 구조와 연관된 제2 패킷 정보를 포함하는 패킷 파라미터들의 세트를 수신하는 단계;
    매칭 필터(matching filter)들의 세트를 식별하는 단계 - 상기 매칭 필터들의 세트의 각 필터는 상기 패킷 파라미터들에 대응하는 필터 조건들을 가짐 -;
    상기 매칭 필터들 중 적어도 하나로부터 상기 연관된 액션을 식별하는 단계;
    상기 연관된 액션이 상기 패킷으로 하여금 네트워크 통과(network traversal)를 계속하도록 허용하는 명령(instruction) 또는 상기 패킷이 네트워크 통과(network traversal)를 계속하는 것을 불허하는 명령(instruction)이면, 상기 연관된 액션을 상기 요청 계층에 리턴(return)하는 단계
    를 포함하는 방화벽 정책 구현 방법.
  11. 제10항에 있어서,`
    상기 매칭 필터들의 세트의 각 필터는 우선순위(priority)를 갖고, 최고 우선순위의 필터로부터의 상기 연관된 액션은 비종료 액션(non-terminating action)이며,
    종료 액션(terminating action)이 도달될 때까지 상기 매칭 필터들의 세트 중 하나 이상의 보다 낮은 우선순위의 필터로부터 상기 연관된 액션을 식별하는 단계
    를 더 포함하는 방화벽 정책 구현 방법.
  12. 제10항에 있어서,
    상기 매칭 필터들의 세트 중의 한 필터는 콜아웃 모듈(callout module)을 식 별하고,
    상기 패킷 파라미터들 및 상기 매칭 필터들의 세트 중의 상기 한 필터의 식별자를 상기 콜아웃 모듈로 보내는 단계
    를 더 포함하는 방화벽 정책 구현 방법.
  13. 제12항에 있어서,
    상기 콜아웃은 상기 패킷 콘텍스트를 변경하는 방화벽 정책 구현 방법.
  14. 제10항에 있어서,
    상기 방화벽 엔진은 오퍼레이팅 시스템의 사용자 모드에서 실행되는 방화벽 정책 구현 방법.
  15. 제10항에 있어서,
    상기 방화벽 엔진은 오퍼레이팅 시스템의 커널 모드에서 실행되는 방화벽 정책 구현 방법.
  16. 개시 네트워크 디바이스(initiating network device)와 응답 네트워크 디바이스(responding network device) 간의 네트워크 통신을 허가하는 방법에 있어서 - 상기 응답 네트워크 디바이스는 비요청(unsolicited) 네트워크 통신을 막기 위한 방화벽을 포함함 -,
    상기 응답 네트워크 다비이스에서 상기 개시 네트워크 디바이스로부터의 인바운드(inbound) 패킷을 수신하는 단계;
    상기 인바운드 패킷이 인증 요청(authentication request)인지를 판정하는 단계;
    상기 인바운드 패킷이 상기 인증 요청이면,
    상기 개시 네트워크 디바이스와 상기 응답 네트워크 디바이스 간의 키 협상 (key negotiation)을 상기 키 협상 프로토콜(key negotiation protocol)에 따라 실행하는 단계;
    상기 키 협상이 성공하면, 상기 키 협상 프로토콜에 따르는 상기 개시 네트워크 디바이스로부터 보내진 인바운드 패킷들을 허가하는 방화벽 필터를 생성하는 단계;
    상기 인바운드 패킷이 상기 인증 요청이 아니면,
    상기 개시 네트워크 디바이스가 이전에 인증되었는지를 결정하는 단계; 및
    상기 개시 네트워크 디바이스가 이전에 인증되었으면, 상기 인바운드 패킷을 허가하는 단계
    를 포함하는 네트워크 통신 허가 방법.
  17. 제16항에 있어서,
    상기 방화벽 필터는 상기 개시 네트워크 디바이스와 상기 응답 네트워크 디바이스 간의 보안 설정들을 따르는 인바운드 패킷들을 허가하는 네트워크 통신 허가 방법.
  18. 제16항에 있어서,
    상기 방화벽 필터는 상기 응답 네트워크 디바이스의 어드레스 정보를 지정하는 인바운드 패킷을 허가하는 네트워크 통신 허가 방법.
  19. 제16항에 있어서,
    상기 키 협상은 IKE 협상인 네트워크 통신 허가 방법.
  20. 요청 스테이지에 방화벽 정책을 구현하기 위한 컴퓨터 판독 가능 명령을 기록한 컴퓨터 판독 가능 기록 매체에 있어서 - 상기 요청 스테이지는 방화벽 프레임워크의 복수의 스테이지 중 제1 스테이지이고, 상기 방화벽 프레임워크는 복수의 설치된 필터를 갖는 방화벽 엔진을 포함함 -,
    상기 컴퓨터 판독 가능 명령은, 컴퓨터에,
    상기 복수의 스테이지로부터의 제2 스테이지로부터 패킷을 상기 요청 스테이지에서 수신하는 단계;
    상기 요청 스테이지에서, 상기 패킷과 연관된 파라미터들의 세트를 식별하는 단계;
    상기 패킷과 연관된 상기 파라미터들의 세트를 포함하는 분류 호출을 발행하는 단계;
    상기 분류 호출에 응답하여, 상기 복수의 설치된 필터들 중 적어도 하나에 의해 지정되는 상기 방화벽 정책에 따른 액션을 수신하는 단계; 및
    상기 액션이 상기 패킷으로 하여금 네트워크 통과(network traversal)를 계속하도록 허용하는 명령(instruction)이면, 상기 요청 스테이지에 의해 실행되는 프로토콜에 따라 상기 패킷을 처리하고 상기 복수의 스테이지 중 제3 스테이지에 상기 패킷을 보내는 단계
    를 실행시키고, 또한
    상기 컴퓨터 판독 가능 명령은, 컴퓨터에,
    상기 제2 스테이지로부터 패킷 콘텍스트 데이터 구조를 수신하는 단계 - 상기 패킷 콘텍스트 데이터 구조는 상기 패킷과 연관된 제2 스테이지 데이터를 포함함 -; 및
    상기 파라미터들의 세트를 부가함으로써 상기 패킷 콘텍스트 데이터 구조를 변경하는 단계
    를 더 실행시키는, 컴퓨터 판독 가능 기록 매체.
  21. 제20항에 있어서,
    상기 액션은 상기 패킷으로 하여금 네트워크 통과를 계속하도록 허용하는 상기 명령이고,
    상기 컴퓨터 판독 가능 명령은, 컴퓨터에,
    상기 패킷을 계층 프로토콜에 따라 처리하는 단계;
    상기 패킷을 상기 복수의 스테이지 중 상기 제3 스테이지로 보내는 단계
    를 더 실행시키는, 컴퓨터 판독 가능 기록 매체.
  22. 삭제
  23. 설치된 필터들의 세트를 포함하는 방화벽 엔진에 방화벽 정책을 구현하기 위한 컴퓨터 판독 가능 명령을 기록한 컴퓨터 판독 가능 기록 매체에 있어서 - 상기 설치된 필터들 각각은 필터 조건들의 세트 및 연관된 액션을 포함함 -,
    상기 컴퓨터 판독 가능 명령은, 컴퓨터에,
    요청 계층으로부터, 상기 요청 계층과 연관된 제1 패킷 정보 및 패킷 콘텍스트 데이터 구조와 연관된 제2 패킷 정보를 포함하는 패킷 파라미터들의 세트를 수신하는 단계;
    매칭 필터들의 세트를 식별하는 단계 - 상기 매칭 필터들의 세트의 각 필터는 상기 패킷 파라미터들에 대응하는 필터 조건들을 가짐 -;
    상기 매칭 필터들 중 적어도 하나로부터 상기 연관된 액션을 식별하는 단계; 및
    상기 연관된 액션이 상기 패킷으로 하여금 네트워크 통과(network traversal)를 계속하도록 허용하는 명령(instruction) 또는 상기 패킷이 네트워크 통과(network traversal)를 계속하는 것을 불허하는 명령(instruction)이면, 상기 연관된 액션을 상기 요청 계층에 리턴(return)하는 단계
    를 실행시키는 컴퓨터 판독 가능 기록 매체.
  24. 제23항에 있어서,
    상기 매칭 필터들의 세트의 각 필터는 우선순위를 갖고, 최고 우선순위의 필터로부터의 상기 연관된 액션은 비종료 액션이며,
    상기 컴퓨터 판독 가능 명령은, 컴퓨터에,
    종료 액션이 도달될 때까지 상기 매칭 필터들의 세트 중 하나 이상의 보다 낮은 우선순위의 필터로부터 상기 연관된 액션을 식별하는 단계
    를 더 실행시키는 컴퓨터 판독 가능 기록 매체.
  25. 제23항에 있어서,
    상기 매칭 필터들의 세트 중의 한 필터는 콜아웃 모듈을 식별하고,
    상기 컴퓨터 판독 가능 명령은, 컴퓨터에,
    상기 패킷 파라미터들 및 상기 매칭 필터들의 세트 중의 상기 한 필터의 식별자를 상기 콜아웃 모듈로 보내는 단계
    를 더 실행시키는 컴퓨터 판독 가능 기록 매체.
  26. 개시 네트워크 디바이스와 응답 네트워크 디바이스 간의 네트워크 통신을 허가하는 것을 실행하기 위한 컴퓨터 판독 가능 명령을 기록한 컴퓨터 판독 가능 기록 매체에 있어서 - 상기 응답 네트워크 디바이스는 비요청 네트워크 통신을 막기 위한 방화벽을 포함함 -,
    상기 컴퓨터 판독 가능 명령은, 컴퓨터에,
    상기 응답 네트워크 다비이스에서, 상기 개시 네트워크 디바이스로부터의 인바운드(inbound) 패킷을 수신하는 단계;
    상기 인바운드 패킷이 인증 요청(authentication request)인지를 판정하는 단계;
    상기 인바운드 패킷이 상기 인증 요청이면,
    상기 개시 네트워크 디바이스와 상기 응답 네트워크 디바이스 간의 키 협상 (key negotiation)을 상기 키 협상 프로토콜(key negotiation protocol)에 따라 실행하는 단계;
    상기 키 협상이 성공하면, 상기 키 협상 프로토콜에 따르는 상기 개시 네트워크 디바이스로부터 보내진 인바운드 패킷들을 허가하는 제 방화벽 필터를 생성하는 단계;
    상기 인바운드 패킷이 상기 인증 요청이 아니면,
    상기 개시 네트워크 디바이스가 이전에 인증되었는지를 결정하는 단계; 및
    상기 개시 네트워크 디바이스가 이전에 인증되었으면, 상기 인바운드 패킷을 허가하는 단계
    를 실행시키는 컴퓨터 판독 가능 기록 매체.
  27. 제26항에 있어서,
    상기 방화벽 필터는 상기 개시 네트워크 디바이스와 상기 응답 네트워크 디바이스 간의 보안 설정들에 따르는 인바운드 패킷들을 허가하는, 컴퓨터 판독 가능 기록 매체.
  28. 제26항에 있어서,
    상기 방화벽 필터는 상기 응답 네트워크 디바이스의 어드레스 정보를 지정하는 인바운드 패킷들을 허가하는, 컴퓨터 판독 가능 기록 매체.
KR1020040041339A 2003-06-06 2004-06-07 네트워크 방화벽을 구현하기 위한 다층 기반 방법 KR101026558B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/456,770 US7260840B2 (en) 2003-06-06 2003-06-06 Multi-layer based method for implementing network firewalls
US10/456,770 2003-06-06

Publications (2)

Publication Number Publication Date
KR20040105602A KR20040105602A (ko) 2004-12-16
KR101026558B1 true KR101026558B1 (ko) 2011-03-31

Family

ID=33159592

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040041339A KR101026558B1 (ko) 2003-06-06 2004-06-07 네트워크 방화벽을 구현하기 위한 다층 기반 방법

Country Status (5)

Country Link
US (1) US7260840B2 (ko)
EP (1) EP1484887A3 (ko)
JP (1) JP4521225B2 (ko)
KR (1) KR101026558B1 (ko)
CN (1) CN1574792B (ko)

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8578480B2 (en) 2002-03-08 2013-11-05 Mcafee, Inc. Systems and methods for identifying potentially malicious messages
US20060015942A1 (en) 2002-03-08 2006-01-19 Ciphertrust, Inc. Systems and methods for classification of messaging entities
US8561167B2 (en) 2002-03-08 2013-10-15 Mcafee, Inc. Web reputation scoring
US7542471B2 (en) 2002-10-30 2009-06-02 Citrix Systems, Inc. Method of determining path maximum transmission unit
US8270423B2 (en) 2003-07-29 2012-09-18 Citrix Systems, Inc. Systems and methods of using packet boundaries for reduction in timeout prevention
US7630305B2 (en) 2003-07-29 2009-12-08 Orbital Data Corporation TCP selective acknowledgements for communicating delivered and missed data packets
US8233392B2 (en) 2003-07-29 2012-07-31 Citrix Systems, Inc. Transaction boundary detection for reduction in timeout penalties
US7616638B2 (en) 2003-07-29 2009-11-10 Orbital Data Corporation Wavefront detection and disambiguation of acknowledgments
JP4271478B2 (ja) * 2003-04-08 2009-06-03 パナソニック株式会社 中継装置及びサーバ
US7409707B2 (en) * 2003-06-06 2008-08-05 Microsoft Corporation Method for managing network filter based policies
US7308711B2 (en) * 2003-06-06 2007-12-11 Microsoft Corporation Method and framework for integrating a plurality of network policies
US7509673B2 (en) * 2003-06-06 2009-03-24 Microsoft Corporation Multi-layered firewall architecture
US8437284B2 (en) 2003-07-29 2013-05-07 Citrix Systems, Inc. Systems and methods for additional retransmissions of dropped packets
US8432800B2 (en) 2003-07-29 2013-04-30 Citrix Systems, Inc. Systems and methods for stochastic-based quality of service
US7656799B2 (en) 2003-07-29 2010-02-02 Citrix Systems, Inc. Flow control system architecture
US8238241B2 (en) 2003-07-29 2012-08-07 Citrix Systems, Inc. Automatic detection and window virtualization for flow control
US7447203B2 (en) 2003-07-29 2008-11-04 At&T Intellectual Property I, L.P. Broadband access for virtual private networks
US7978716B2 (en) * 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US7574603B2 (en) * 2003-11-14 2009-08-11 Microsoft Corporation Method of negotiating security parameters and authenticating users interconnected to a network
WO2005114947A1 (en) * 2004-05-20 2005-12-01 Qinetiq Limited Firewall system
US20050268331A1 (en) * 2004-05-25 2005-12-01 Franck Le Extension to the firewall configuration protocols and features
US7441268B2 (en) * 2004-06-08 2008-10-21 Alwyn Dos Remedios Method and apparatus to manage exceptions in network processors
US7620986B1 (en) * 2004-06-14 2009-11-17 Xangati, Inc. Defenses against software attacks in distributed computing environments
US7760730B2 (en) * 2004-06-15 2010-07-20 Oracle America, Inc. Rule set verification
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US8739274B2 (en) * 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
KR20070037649A (ko) 2004-07-23 2007-04-05 사이트릭스 시스템스, 인크. 게이트웨이에서 종단으로 패킷을 라우팅하기 위한 방법 및시스템
EP1771998B1 (en) * 2004-07-23 2015-04-15 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
TW200608224A (en) * 2004-08-23 2006-03-01 Lite On It Corp Player and method for processing a file with vector-based format
US8161538B2 (en) * 2004-09-13 2012-04-17 Cisco Technology, Inc. Stateful application firewall
GB2418110B (en) * 2004-09-14 2006-09-06 3Com Corp Method and apparatus for controlling traffic between different entities on a network
US7748032B2 (en) 2004-09-30 2010-06-29 Citrix Systems, Inc. Method and apparatus for associating tickets in a ticket hierarchy
US7711835B2 (en) 2004-09-30 2010-05-04 Citrix Systems, Inc. Method and apparatus for reducing disclosure of proprietary data in a networked environment
US8613048B2 (en) 2004-09-30 2013-12-17 Citrix Systems, Inc. Method and apparatus for providing authorized remote access to application sessions
US8635690B2 (en) 2004-11-05 2014-01-21 Mcafee, Inc. Reputation based message processing
US7810089B2 (en) * 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8954595B2 (en) * 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US20060253605A1 (en) * 2004-12-30 2006-11-09 Prabakar Sundarrajan Systems and methods for providing integrated client-side acceleration techniques to access remote applications
US8706877B2 (en) * 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8700695B2 (en) * 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
EP2739014B1 (en) 2005-01-24 2018-08-01 Citrix Systems, Inc. Systems and methods for performing caching of dynamically generated objects in a network
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US8024568B2 (en) 2005-01-28 2011-09-20 Citrix Systems, Inc. Method and system for verification of an endpoint security scan
CN100414929C (zh) * 2005-03-15 2008-08-27 华为技术有限公司 一种移动互联网协议网络中的报文传送方法
US7725595B1 (en) * 2005-05-24 2010-05-25 The United States Of America As Represented By The Secretary Of The Navy Embedded communications system and method
CN1905555B (zh) * 2005-07-30 2010-07-07 华为技术有限公司 基于ngn业务的防火墙控制系统及方法
US7725737B2 (en) * 2005-10-14 2010-05-25 Check Point Software Technologies, Inc. System and methodology providing secure workspace environment
US20100153671A1 (en) * 2005-12-01 2010-06-17 Drive Sentry Inc. System and method to secure a computer system by selective control of write access to a data storage medium
US10503418B2 (en) 2005-12-01 2019-12-10 Drive Sentry Limited System and method to secure a computer system by selective control of write access to a data storage medium
US7664924B2 (en) * 2005-12-01 2010-02-16 Drive Sentry, Inc. System and method to secure a computer system by selective control of write access to a data storage medium
US8301839B2 (en) * 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US7921184B2 (en) * 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
CN100384158C (zh) * 2006-04-04 2008-04-23 华为技术有限公司 一种数字用户线路接入复用器的安全防护方法
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US8122492B2 (en) * 2006-04-21 2012-02-21 Microsoft Corporation Integration of social network information and network firewalls
US8079073B2 (en) * 2006-05-05 2011-12-13 Microsoft Corporation Distributed firewall implementation and control
US8176157B2 (en) * 2006-05-18 2012-05-08 Microsoft Corporation Exceptions grouping
US8533846B2 (en) 2006-11-08 2013-09-10 Citrix Systems, Inc. Method and system for dynamically associating access rights with a resource
US8214497B2 (en) 2007-01-24 2012-07-03 Mcafee, Inc. Multi-dimensional reputation scoring
US7779156B2 (en) * 2007-01-24 2010-08-17 Mcafee, Inc. Reputation based load balancing
US8763114B2 (en) 2007-01-24 2014-06-24 Mcafee, Inc. Detecting image spam
US8103783B2 (en) 2007-03-12 2012-01-24 Citrix Systems, Inc. Systems and methods of providing security and reliability to proxy caches
US7809818B2 (en) 2007-03-12 2010-10-05 Citrix Systems, Inc. Systems and method of using HTTP head command for prefetching
US20080228864A1 (en) * 2007-03-12 2008-09-18 Robert Plamondon Systems and methods for prefetching non-cacheable content for compression history
US8037126B2 (en) 2007-03-12 2011-10-11 Citrix Systems, Inc. Systems and methods of dynamically checking freshness of cached objects based on link status
US8701010B2 (en) 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
US7720936B2 (en) 2007-03-12 2010-05-18 Citrix Systems, Inc. Systems and methods of freshening and prefreshening a DNS cache
US8504775B2 (en) 2007-03-12 2013-08-06 Citrix Systems, Inc Systems and methods of prefreshening cached objects based on user's current web page
US7584294B2 (en) 2007-03-12 2009-09-01 Citrix Systems, Inc. Systems and methods for prefetching objects for caching using QOS
US7783757B2 (en) 2007-03-12 2010-08-24 Citrix Systems, Inc. Systems and methods of revalidating cached objects in parallel with request for object
US9961094B1 (en) 2007-07-25 2018-05-01 Xangati, Inc Symptom detection using behavior probability density, network monitoring of multiple observation value types, and network monitoring using orthogonal profiling dimensions
US8451731B1 (en) 2007-07-25 2013-05-28 Xangati, Inc. Network monitoring using virtual packets
US8639797B1 (en) 2007-08-03 2014-01-28 Xangati, Inc. Network monitoring of behavior probability density
US20090063747A1 (en) * 2007-08-28 2009-03-05 Rohati Systems, Inc. Application network appliances with inter-module communications using a universal serial bus
KR101377014B1 (ko) * 2007-09-04 2014-03-26 삼성전자주식회사 면역 데이터베이스 기반의 악성코드 진단 방법 및 시스템
US8908700B2 (en) 2007-09-07 2014-12-09 Citrix Systems, Inc. Systems and methods for bridging a WAN accelerator with a security gateway
WO2009033324A1 (fr) * 2007-09-13 2009-03-19 Coobol Technologies Co. Ltd Procédé de transmission de données de support en temps réel basé sur un protocole tcp
US8185930B2 (en) 2007-11-06 2012-05-22 Mcafee, Inc. Adjusting filter or classification control settings
JPWO2009066343A1 (ja) * 2007-11-19 2011-03-31 デュアキシズ株式会社 通信制御装置及び通信制御方法
US8413173B2 (en) * 2008-01-07 2013-04-02 Dell Products L.P. Method, apparatus and system for automatic loading of a network stack
GB0800838D0 (en) 2008-01-17 2008-02-27 Eads Defence And Security Syst Secure communication system
US8140461B2 (en) * 2008-03-24 2012-03-20 Hewlett-Packard Development Company, L.P. System and method for identifying conflicting network access rules and creating a resolved consequence
US8589503B2 (en) 2008-04-04 2013-11-19 Mcafee, Inc. Prioritizing network traffic
US7920478B2 (en) * 2008-05-08 2011-04-05 Nortel Networks Limited Network-aware adapter for applications
US20100138893A1 (en) * 2008-12-02 2010-06-03 Inventec Corporation Processing method for accelerating packet filtering
US10992555B2 (en) 2009-05-29 2021-04-27 Virtual Instruments Worldwide, Inc. Recording, replay, and sharing of live network monitoring views
CN102035821A (zh) * 2009-09-29 2011-04-27 凹凸电子(武汉)有限公司 防火墙/虚拟专用网集成系统以及电路
GB0919253D0 (en) 2009-11-03 2009-12-16 Cullimore Ian Atto 1
US20110145572A1 (en) * 2009-12-15 2011-06-16 Christensen Kenneth J Apparatus and method for protecting packet-switched networks from unauthorized traffic
KR101292983B1 (ko) * 2009-12-21 2013-08-02 한국전자통신연구원 다계층 패킷 검사 장치 및 방법
US8307418B2 (en) * 2010-03-16 2012-11-06 Genband Inc. Methods, systems, and computer readable media for providing application layer firewall and integrated deep packet inspection functions for providing early intrusion detection and intrusion prevention at an edge networking device
US8621638B2 (en) 2010-05-14 2013-12-31 Mcafee, Inc. Systems and methods for classification of messaging entities
US20110296519A1 (en) * 2010-05-14 2011-12-01 Mcafee, Inc. Reputation based connection control
FR2960368B1 (fr) * 2010-05-21 2013-03-15 Thales Sa Systeme securise d'interconnexion entre deux reseaux publics
US8875276B2 (en) 2011-09-02 2014-10-28 Iota Computing, Inc. Ultra-low power single-chip firewall security device, system and method
CN102571751B (zh) * 2010-12-24 2014-12-31 佳能It解决方案株式会社 中继处理装置及其控制方法
CN102195972B (zh) * 2011-03-24 2014-05-07 北京思创银联科技股份有限公司 利用wfp拦截网络数据的方法
KR101186876B1 (ko) * 2011-12-16 2012-10-02 주식회사 정보보호기술 유무선 통합시스템에서 실시간 침입차단 방법
KR20160101204A (ko) 2012-01-27 2016-08-24 노키아 솔루션스 앤드 네트웍스 오와이 모바일 패킷 코어 네트워크에서의 세션 종결
CN105531711B (zh) * 2013-09-28 2018-10-02 迈克菲股份有限公司 数据交换层上的上下文感知网络
US9807118B2 (en) * 2014-10-26 2017-10-31 Mcafee, Inc. Security orchestration framework
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US9825960B2 (en) * 2015-05-29 2017-11-21 Oracle International Corporation System and method providing automatic pushdown hierarchical filters
CN106874305B (zh) * 2015-12-14 2020-08-21 北京国双科技有限公司 一种信息传递的方法及装置
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10116698B1 (en) * 2016-04-06 2018-10-30 Amazon Technologies, Inc. Managing network firewall configuration utilizing source lists
US10587575B2 (en) * 2017-05-26 2020-03-10 Microsoft Technology Licensing, Llc Subsystem firewalls
CN107979609B (zh) * 2017-12-14 2020-09-22 广东天网安全信息科技有限公司 后反应式防护方法及自主学习型防火墙系统
US10715491B2 (en) * 2018-02-13 2020-07-14 Palo Alto Networks, Inc. Diameter security with next generation firewall
US10693838B2 (en) * 2018-02-13 2020-06-23 Palo Alto Networks, Inc. Transport layer signaling security with next generation firewall
US10701033B2 (en) * 2018-02-13 2020-06-30 Palo Alto Networks, Inc. Network layer signaling security with next generation firewall
CN111903107B (zh) * 2018-02-13 2022-11-08 帕洛阿尔托网络公司 利用下一代防火墙的用于信令安全性的系统和方法
US10701032B2 (en) * 2018-02-13 2020-06-30 Palo Alto Networks, Inc. Application layer signaling security with next generation firewall
US11108739B2 (en) * 2018-02-20 2021-08-31 Blackberry Limited Firewall incorporating network security information
ES2917448T3 (es) * 2018-03-16 2022-07-08 Acklio Método y aparato para procesar datos de mensaje
US11310242B2 (en) * 2019-01-15 2022-04-19 Raytheon Bbn Technologies Corp. System and method for protecting network-facing services

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835726A (en) 1993-12-15 1998-11-10 Check Point Software Technologies Ltd. System for securing the flow of and selectively modifying packets in a computer network
US5968176A (en) * 1997-05-29 1999-10-19 3Com Corporation Multilayer firewall system
WO2002037730A2 (en) 2000-10-31 2002-05-10 Firebit Ltd. A router-based system for providing multi-level data filtering and security services in a broadband environment
KR20020051599A (ko) * 2000-12-23 2002-06-29 오길록 분산 컴퓨팅 환경에서의 보안 정책 시스템 및 그 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5606668A (en) * 1993-12-15 1997-02-25 Checkpoint Software Technologies Ltd. System for securing inbound and outbound data packet flow in a computer network
US6003084A (en) * 1996-09-13 1999-12-14 Secure Computing Corporation Secure network proxy for connecting entities
US6009475A (en) * 1996-12-23 1999-12-28 International Business Machines Corporation Filter rule validation and administration for firewalls
US6832256B1 (en) * 1996-12-27 2004-12-14 Intel Corporation Firewalls that filter based upon protocol commands
US5987611A (en) * 1996-12-31 1999-11-16 Zone Labs, Inc. System and methodology for managing internet access on a per application basis for client computers connected to the internet
US6088356A (en) * 1997-06-30 2000-07-11 Sun Microsystems, Inc. System and method for a multi-layer network element
US6701432B1 (en) * 1999-04-01 2004-03-02 Netscreen Technologies, Inc. Firewall including local bus
US6347376B1 (en) * 1999-08-12 2002-02-12 International Business Machines Corp. Security rule database searching in a network security environment
US6587463B1 (en) * 1999-12-13 2003-07-01 Ascend Communications, Inc. Packet classification engine
US6496935B1 (en) * 2000-03-02 2002-12-17 Check Point Software Technologies Ltd System, device and method for rapid packet filtering and processing
US7280540B2 (en) * 2001-01-09 2007-10-09 Stonesoft Oy Processing of data packets within a network element cluster
JP2005503047A (ja) * 2001-02-06 2005-01-27 エン ガルデ システムズ、インコーポレイテッド 安全なネットワークを供給するための装置と方法
US20030084331A1 (en) * 2001-10-26 2003-05-01 Microsoft Corporation Method for providing user authentication/authorization and distributed firewall utilizing same
US20030110379A1 (en) * 2001-12-07 2003-06-12 Tatu Ylonen Application gateway system, and method for maintaining security in a packet-switched information network
US7409707B2 (en) * 2003-06-06 2008-08-05 Microsoft Corporation Method for managing network filter based policies
US7509673B2 (en) * 2003-06-06 2009-03-24 Microsoft Corporation Multi-layered firewall architecture
US7308711B2 (en) * 2003-06-06 2007-12-11 Microsoft Corporation Method and framework for integrating a plurality of network policies
US7559082B2 (en) * 2003-06-25 2009-07-07 Microsoft Corporation Method of assisting an application to traverse a firewall

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835726A (en) 1993-12-15 1998-11-10 Check Point Software Technologies Ltd. System for securing the flow of and selectively modifying packets in a computer network
US5968176A (en) * 1997-05-29 1999-10-19 3Com Corporation Multilayer firewall system
WO2002037730A2 (en) 2000-10-31 2002-05-10 Firebit Ltd. A router-based system for providing multi-level data filtering and security services in a broadband environment
KR20020051599A (ko) * 2000-12-23 2002-06-29 오길록 분산 컴퓨팅 환경에서의 보안 정책 시스템 및 그 방법

Also Published As

Publication number Publication date
JP4521225B2 (ja) 2010-08-11
CN1574792B (zh) 2010-06-02
US20050022011A1 (en) 2005-01-27
EP1484887A2 (en) 2004-12-08
JP2004362590A (ja) 2004-12-24
US7260840B2 (en) 2007-08-21
KR20040105602A (ko) 2004-12-16
CN1574792A (zh) 2005-02-02
EP1484887A3 (en) 2007-01-10

Similar Documents

Publication Publication Date Title
KR101026558B1 (ko) 네트워크 방화벽을 구현하기 위한 다층 기반 방법
US7509673B2 (en) Multi-layered firewall architecture
US7761708B2 (en) Method and framework for integrating a plurality of network policies
US8689315B2 (en) Method for managing network filter based policies
US9246926B2 (en) Packet validation using watermarks
US20040098620A1 (en) System, apparatuses, methods, and computer-readable media using identification data in packet communications
US20070011448A1 (en) Using non 5-tuple information with IPSec
US8336093B2 (en) Abnormal IPSec packet control system using IPSec configuration and session data, and method thereof
US8607302B2 (en) Method and system for sharing labeled information between different security realms
CA2506418C (en) Systems and apparatuses using identification data in network communication

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee