KR101932656B1 - 소프트웨어 정의 네트워크를 방어하는 방법, 장치 및 컴퓨터 프로그램 - Google Patents

소프트웨어 정의 네트워크를 방어하는 방법, 장치 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR101932656B1
KR101932656B1 KR1020160172278A KR20160172278A KR101932656B1 KR 101932656 B1 KR101932656 B1 KR 101932656B1 KR 1020160172278 A KR1020160172278 A KR 1020160172278A KR 20160172278 A KR20160172278 A KR 20160172278A KR 101932656 B1 KR101932656 B1 KR 101932656B1
Authority
KR
South Korea
Prior art keywords
flow
switch
rule
log
entry
Prior art date
Application number
KR1020160172278A
Other languages
English (en)
Other versions
KR20180070054A (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 아토리서치(주)
Priority to KR1020160172278A priority Critical patent/KR101932656B1/ko
Publication of KR20180070054A publication Critical patent/KR20180070054A/ko
Application granted granted Critical
Publication of KR101932656B1 publication Critical patent/KR101932656B1/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/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/28Restricting access to network management systems or functions, e.g. using authorisation function to access network configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/55Prevention, detection or correction of errors
    • H04L49/555Error detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • 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
    • H04L9/3236Cryptographic 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 using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/121Timestamp

Landscapes

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

Abstract

본 발명은 소프트웨어 정의 네트워크의 컨트롤러가, 네트워크를 방어하는 방법에 대한 것으로, 플로우 엔트리 각각에 대한 해시를 쿠키 필드에 기록한 플로우 룰을 스위치에 전송하는 A 단계; 스위치의 플로우 테이블에 대한 정보를 수집하고, 상기 플로우 테이블이 무단으로 변경되었는지 여부를 상기 해시를 이용하여 판단하는 B 단계; 및 상기 플로우 테이블이 무단으로 변경된 경우, 무단 변경 사항을 복구하기 위한 플로우 룰을 해당 스위치에 전송하는 C 단계를 포함하는 것을 특징으로 한다.

Description

소프트웨어 정의 네트워크를 방어하는 방법, 장치 및 컴퓨터 프로그램 {METHOD, APPARATUS AND COMPUTER PROGRAM FOR DEFENDING SOFTWARE DEFINED NETWORK}
본 발명은 소프트웨어 정의 네트워킹을 방어하는 방법에 대한 것이다. 보다 구체적으로 본 발명은 네트워크에 적용할 플로우 룰에 대한 로그를 기록하고, 스위치의 플로우 테이블 상태 정보를 수집하여, 수집된 플로우 테이블 정보와 상기 로그를 비교하여 스위치 무단 변경 여부를 판단하는 방법에 대한 것이다.
소프트웨어 정의 네트워킹 (Software Defined Networking, 이하 SDN이라 칭함)은 네트워크의 모든 네트워크 장비를 지능화된 중앙관리시스템에 의해 관리하는 기술을 의미한다. SDN 기술에서는 기존 하드웨어 형태의 네트워크 장비에서 자체적으로 수행하는 패킷 처리와 관련된 제어 동작을 소프트웨어 형태로 제공되는 컨트롤러가 대신하여 처리함으로써, 기존의 네트워크 구조보다 다양한 기능을 개발하고 부여할 수 있다는 장점을 갖는다.
SDN 시스템은 일반적으로 전체 네트워크를 제어하는 컨트롤러 서버와, 상기 컨트롤러 서버에 의해 제어되며 패킷을 처리하는 복수의 오픈플로우 스위치와, 오픈플로우 스위치의 하위 계층에 해당하는 호스트를 포함하여 구성된다. 여기에서 오픈플로우 스위치는 패킷의 송수신 기능만을 담당하게 되고, 패킷의 경로 설정, 관리 및 제어는 모두 컨트롤러 서버에서 이루어진다. 즉, 네트워크 장비를 이루는 Data Plane과 Control Plane을 분리하는 것이 SDN 시스템의 기본 구조라 볼 수 있다.
도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면이다. 도 1을 참조하면, 소프트웨어 정의 네트워크(Software Defined Network)는 컨트롤러 서버 (100), 네트워크 장비(200) 및 호스트(300)를 포함할 수 있다. 네트워크 장비(200)와 호스트(300)는 노드(Node)라고 지칭할 수 있으며, 링크(Link)는 2개의 노드 사이의 연결을 의미할 수 있다.
컨트롤러 서버(100)는 네트워크 장비(200)를 관리하는 기능을 하는 것으로, 복수의 네트워크 장비(200)를 중앙 집중형으로 관리 및 제어한다. 구체적으로 컨트롤러 서버(100)는 토폴로지 관리(Topology management), 패킷 처리와 관련된 경로 관리(Path management), 링크 디스커버리(Link discovery), 패킷 흐름인 플로우 관리(Flow management) 등의 기능을 하는 응용 프로그램이 탑재된 형태로 구현될 수 있다.
네트워크 장비(200)는 컨트롤러 서버(100)의 제어에 따라 패킷을 처리하는 기능을 한다. 네트워크 장비(200)의 예로는 이동 통신 기지국, 기지국 제어기, 게이트웨이 장비, 유선 네트워크의 스위치, 라우터 등이 있다.
소프트웨어 정의 네트워크에서 컨트롤러 서버(100)와 오픈플로우 스위치(200)는 상호간 정보를 주고 받아야 하며, 이를 위한 프로토콜로 널리 사용되는 것이 오픈플로우 (OpenFlow) 프로토콜이다. 즉, 오픈플로우 프로토콜은 컨트롤러 서버(100)와 오픈플로우 스위치(200)간 서로 통신할 수 있는 표준 규격이다.
오픈플로우 프로토콜을 따르면, 스위치(200)는 컨트롤 채널(Control Channel)을 통해 컨트롤러 서버(100)와 정보를 교환하고, 파이프라인(Pipeline) 프로세싱을 위한 하나 이상의 플로우 테이블(Flow table), 그룹 테이블, 미터 테이블 및/또는 패킷 전달을 위한 네트워크 인터페이스로 하나 이상의 포트를 가질 수 있다.
Open Networking Foundation, “OpenFlow Specification 1.3.0”
본 발명은 소프트웨어 정의 네트워킹에서 오픈플로우 스위치를 변경하는 공격을 탐지하고 이를 방어하는 방법을 제공하는 것을 목적으로 한다.
본 발명의 실시예를 따르는 소프트웨어 정의 네트워크의 컨트롤러가, 네트워크를 방어하는 방법은, 플로우 엔트리 각각에 대한 해시를 쿠키 필드에 기록한 플로우 룰을 스위치에 전송하는 A 단계; 스위치의 플로우 테이블에 대한 정보를 수집하고, 상기 플로우 테이블이 무단으로 변경되었는지 여부를 상기 해시를 이용하여 판단하는 B 단계; 및 상기 플로우 테이블이 무단으로 변경된 경우, 무단 변경 사항을 복구하기 위한 플로우 룰을 해당 스위치에 전송하는 C 단계를 포함하는 것을 특징으로 한다.
나아가 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 네트워크를 방어하는 장치는, 플로우 룰의 쿠키 필드에 플로우 엔트리 각각에 대한 해시를 기록하는 A 모듈; 스위치의 플로우 테이블에 대한 정보를 수집하는 B 모듈; 상기 플로우 테이블이 무단으로 변경되었는지 여부를 상기 해시를 이용하여 판단하는 C 모듈; 상기 플로우 테이블이 무단으로 변경된 경우, 무단 변경 사항을 복구하기 위한 플로우 룰을 생성하는 D모듈을 포함하는 것을 것을 특징으로 하는 네트워크 방어 장치.
한편 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크의 컨트롤러에서, 네트워크를 방어하는 기능을 수행하기 위해, 컴퓨터 판독가능한 저장 매체에 기록된 컴퓨터 프로그램은, 플로우 엔트리 각각에 대한 해시를 쿠키 필드에 기록한 플로우 룰을 스위치에 전송하는 기능; 스위치의 플로우 테이블에 대한 정보를 수집하고, 상기 플로우 테이블이 무단으로 변경되었는지 여부를 상기 해시를 이용하여 판단하는 기능; 및 상기 플로우 테이블이 무단으로 변경된 경우, 무단 변경 사항을 복구하기 위한 플로우 룰을 해당 스위치에 전송하는 기능을 수행하는 것을 특징으로 한다.
본 발명에 따르면, 컨트롤러에 미리 기록된 플로우 룰 로그와 해당 시점에 스위치에 적용된 플로우 룰 정보를 비교하여 스위치에 대한 공격을 탐지할 수 있다. 나아가 본 발명에 따르면 스위치가 무단 변경된 경우 신속하게 복구할 수 있어 네트워크를 효과적으로 방어할 수 있는 효과가 있다.
도 1은 소프트웨어 정의 네트워킹을 설명하기 위한 도면
도 2는 스위치를 변경하는 공격에 대한 취약점을 설명하기 위한 도면
도 3은 본 발명의 실시예를 따라, 공격으로 인해 변경된 플로우 룰을 체크하고 대응하는 과정을 설명하기 위한 순서도
본 발명은 이하에 기재되는 실시예들의 설명 내용에 한정되는 것은 아니며, 본 발명의 기술적 요지를 벗어나지 않는 범위 내에서 다양한 변형이 가해질 수 있음은 자명하다. 그리고 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 널리 알려져 있고 본 발명의 기술적 요지와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다.
한편, 첨부된 도면에서 동일한 구성요소는 동일한 부호로 표현된다. 그리고 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시될 수도 있다. 이는 본 발명의 요지와 관련이 없는 불필요한 설명을 생략함으로써 본 발명의 요지를 명확히 설명하기 위함이다. 이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다.
본 발명의 명세서에서 “플로우 룰”의 용어는 해당 업계의 통상의 기술자 입장에서 소프트웨어 정의 네트워크에서 컨트롤러 서버가 적용하는 네트워크 정책을 의미하는 것으로 이해되어야 한다.
나아가 본 발명의 명세서에서 플로우 테이블, 그룹 테이블 및/또는 미터 테이블의 변경(updating)은 테이블을 구성하는 엔트리의 추가(add), 삭제(delete) 및/또는 수정(modify)을 포함하는 개념으로 이해될 수 있다.
나아가 본 명세서에서 오픈플로우 스위치(200)는 오픈플로우 프로토콜만을 지원하는 스위치, 오픈플로우 프로토콜을 지원하는 가상 스위치, 오픈플로우 프로토콜을 지원하는 일반적인 L2 스위치를 포함하는 개념으로 이해될 수 있다.
도 2는 스위치를 변경하는 공격을 설명하기 위한 도면이다.
도 2에 도시된 네트워크는 스위치 (226, 228) 및 호스트 (230, 232, 234) 로 구성되어 있으며, 소프트웨어 정의 네트워킹이 적용된 경우, 상기 네트워크를 제어하는 컨트롤러 210가 더 포함될 수 있다.
이와 같은 상황에서 악의적인 공격자 (240)이 스위치 (228)를 변경하는 상황을 고려할 수 있다.
예를 들어 공격자 240은 컨트롤 플레인 (210)을 공격하여 인증되지 않은 악성 어플리케이션을 컨트롤러에 설치하고, 악성 어플리케이션이 임의로 플로우 룰을 발행하여 스위치를 변경하는 방식으로 네트워크를 공격할 수 있다.
또 다른 예로 공격자 240은 컨트롤 체인 (240, 245)을 공격하여, 컨트롤러에서 스위치로 전송되는 플로우 룰을 수정하여 스위치를 변경하는 공격을 취할 수 있다. 또한 공격자 240은 데이터 플레인 (226, 228)을 공격하여, 조작된 플로우 룰을 스위치에 적용하는 방식으로 스위치를 공격할 수 있다
본 발명은 상기와 같은 문제를 해결하기 위한 것이다. 즉, 본 발명은 스위치를 변경하는 이와 같은 공격을 탐지하고 이를 방어하는 방법을 제공하는 것을 목적으로 한다.
본 발명의 실시예를 따르면, 컨트롤러에서 작성한 플로우 룰은 네트워크에 적용되면서 동시에 로그로 기록될 수 있다. 나아가 컨트롤러는 특정 시점에 네트워크에 적용된 플로우 룰을 수집하고, 이를 로그와 비교하여 무단으로 변경된 플로우 룰을 파악할 수 있다.
무단으로 변경된 플로우 룰이 파악되면, 컨트롤러는 이를 복구하기 위한 플로우 룰을 네트워크에 적용하여 스위치 변경 공격을 방어할 수 있다.
특히 본 발명의 실시예를 따르면 상기 절차는 플로우 엔트리 각각에 대한 해시를 이용하여 빠르게 진행될 수 있다. 이를 위해 컨트롤러는 플로우 룰을 작성하면서 플로우 엔트리 각각에 대한 해시를 플로우 룰의 쿠키 필드에 기록할 수 있다.
이때 해시를 스위치의 인증을 받은 컨트롤러만 계산할 수 있도록, 플로우 엔트리 내용과 스위치의 인증서로 계산한 해시 값으로 사용할 수도 있다. 해시는 네트워크에 적용된 플로우 룰이 컨트롤러가 생성한 것이 맞는지, 무단으로 적용된 것은 아닌지 여부를 빠르게 판단하기 위한 것이다.
컨트롤러는 스위치에 대한 공격을 파악하기 위해, 네트워크에 적용된 플로우 룰을 수집하고 이를 로그와 비교할 수 있다. 예를 들어 컨트롤러는 오픈플로우 표준에서 제공하는 멀티 파트 요청 메시지로 스위치에 플로우 테이블 정보를 요청할 수 있으며, 스위치는 멀티 파트 응답 메시지로 플로우 테이블 정보를 컨트롤러에 전송할 수 있다.
본 발명의 실시예를 따르면 컨트롤러의 플로우 룰 수집은 미리 설정된 주기에 따라 진행할 수 있지만, 수집 주기가 예측되는 것을 방지하기 위해 무작위로 진행될 수도 있다.
이후 본 발명의 실시예를 따르는 컨트롤러는 수집한 플로우 룰의 플로우 엔트리에 대한 해시를 조회하기 위해 쿠키를 확인하고, 플로우 룰에 대한 로그를 호출하여 로그에 기록된 해시를 상기 쿠키와 비교하는 방식으로, 해당 플로우 엔트리가 무단으로 추가되었는지 여부를 확인할 수 있다.
본 발명의 다른 실시예를 따르면, 컨트롤러는 로그를 참고하지 않고 플로우 엔트리의 해시값을 이용하여 특정 플로우 엔트리의 무단 추가 여부를 판단할 수 있다.
보다 구체적으로, 컨트롤러는 플로우 테이블을 수집한 뒤, 플로우 룰마다 해시 값을 계산하고, 계산한 해시 값과 수집한 플로우 테이블의 쿠키 필드와 비교하여, 일치하지 않으면 해당 스위치가 공격받은 것으로 판단할 수 있다. 나아가 컨트롤러는 계산한 해시 값과 수집한 플로우 테이블의 쿠키 필드에 기록된 값이 일치하는 경우에도, 플로우 테이블 로그를 호출하여 재검증할 수도 있다.
예를 들어 도 2에서, 컨트롤러가 스위치 228로부터 아래의 표 1과 같은 플로우 테이블을 수집한 경우를 고려할 수 있다.
컨트롤러는 플로우 테이블을 수집하면, 플로우 룰마다 해시값을 계산해서 쿠키 필드에 기록된 해시값과 비교할 것이다. 예를 들어 표 1의 제 2행의 플로우 엔트리에 대한 해시값 결과가 0X0998이 아닌 경우, 컨트롤러는 스위치 228이 공격받은 것으로 판단할 것이다.
나아가 컨트롤러는 계산한 해시 값과 수집한 플로우 테이블의 쿠키 필드에 기록된 값이 일치하는 경우에도, 표 2와 같은 플로우 테이블 로그를 호출하여 재검증할 수도 있다. 이때 표 1의 제 2행의 쿠키는 표 2의 플로우 테이블 로그와 일치하지 않기 때문에 컨트롤러는 스위치 228이 공격받은 것을 재확인할 것이다.
Flow table (스위치 228)
Match fileds Instructions duration Cookie
1 Dst IP = 10.0.0.2 Output port3 10 0X08A6
2 Dst IP = 10.0.3.1 Output port3 0 0X0998
Flow table Log (스위치 228)
Match fileds Instructions Timestamp Cookie
1 Dst IP = 10.0.0.2 Output port3 23:20 0X08A6
이와 같이 본 발명의 실시예를 따르면 스위치의 플로우 룰 무단 추가 여부는 수집된 플로우 룰의 쿠키와 로그의 해시를 비교하여 신속하게 판단될 수 있다. 이후 컨트롤러는 무단으로 추가된 표 1의 제 2행을 삭제하기 위한 플로우 룰을 스위치 228에 전송하여 스위치를 복구할 수 있다.
상기 플로우 룰은 오픈플로우 스위치의 공격에 대한 임시 조치를 위한 것으로, 본 발명의 실시예를 따르면 컨트롤러는 FLOW_MOD 메시지를 이용하여 해당 스위치에 무단 추가된 플로우 엔트리를 삭제(delete)하는 명령을 전송할 수 있다.
한편, 그룹 테이블의 경우 쿠키 필드가 존재하지 않기 때문에 컨트롤러는 테이블 엔트리에 해시 값을 기록할 수 없다. 따라서 컨트롤러는 네트워크에 적용하기 전에 그룹 테이블의 로그를 기록하고, 특정 시점에 네트워크에서 수집한 그룹 테이블 정보와 상기 로그 정보를 비교하는 방식으로 그룹 테이블의 무단 변경 여부를 판단할 수 있다.
본 발명의 다른 실시예를 따르면, 컨트롤러는 따로 로그를 참고하지 않더라도, 네트워크에 적용된 그룹 테이블을 수집할 때마다 그룹 테이블 엔트리 별로 해시 값을 계산하여 무단 추가 여부를 판단할 수 있다.
나아가 미터 테이블의 무단 추가 여부도 상기 그룹 테이블과 동일한 방식으로 판단될 수 있다.
한편, 본 발명의 다른 실시예를 따르면 스위치의 플로우 룰이 무단으로 수정되었는지 여부는 로그의 타임 스탬프 및 네트워크에서 수집한 플로우 테이블의 듀레이션 필드를 비교하여 판단할 수 있다.
스위치에서 플로우 룰이 변경되면, 스위치는 해당 플로우 엔트리의 듀레이션 필드를 0으로 초기화하게 된다. 듀레이션 필드는 스위치가 변경하는 정보이기 때문에 공격자가 임의로 수정할 수 없다. 따라서 컨트롤러는 로그의 타임 스탬프와 수집된 플로우 테이블의 듀레이션 필드를 비교하는 방식으로 플로우 룰의 무단 수정 여부를 판단할 수 있다.
예를 들어 도 2에서 컨트롤러가 스위치 228로부터 아래의 표 3과 같은 플로우 룰을 수집한 경우 컨트롤러는 표 4의 플로우 테이블 로그를 호출하여 양자를 비교할 것이다.
이때 표 3의 플로우 테이블의 제 1행에 기록된 듀레이션 필드와 표 4의 타임 스탬프 정보를 비교하면, 해당 플로우 엔트리가 초기화된 것을 파악할 수 있으며, 컨트롤러는 스위치 228이 공격받은 것으로 판단할 수 있다.
Flow table (스위치 228)
Match fileds Instructions duration Cookie
1 Dst IP = 10.0.3.1 Output port3 0 0X08A6
Flow table Log (스위치 228)
Match fileds Instructions Timestamp Cookie
1 Dst IP = 10.0.3.1 Drop 23:20 0X08A6
이와 같이 본 발명의 실시예를 따르면 컨트롤러는 스위치의 플로우 룰이 무단으로 수정되었는지 여부를 수집된 플로우 룰의 듀레이션 필드와 로그의 타임 스탬프 정보를 비교하여 판단될 수 있다. 이후 컨트롤러는 무단으로 수정된 표 3의 제 1행을 수정하기 위한 플로우 룰을 스위치 228에 전송하여 스위치를 복구할 수 있다.
상기 플로우 룰은 오픈플로우 스위치의 공격에 대한 임시 조치를 위한 것으로, 본 발명의 실시예를 따르면 컨트롤러는 FLOW_MOD 메시지를 이용하여 해당 스위치에 무단으로 수정된 플로우 엔트리를 수정(modify)하는 명령을 전송할 수 있다.
한편, 그룹 테이블의 경우 컨트롤러는 네트워크에 적용하기 전에 그룹 테이블의 로그를 기록하고, 특정 시점에 네트워크에서 수집한 그룹 테이블 정보와 상기 로그 정보를 비교하는 방식으로 그룹 테이블의 무단 수정 여부를 판단할 수 있다. 나아가 미터 테이블의 무단 수정 여부도 상기 그룹 테이블과 동일한 방식으로 판단될 수 있다.
나아가 본 발명의 다른 실시예를 따르면, 스위치의 플로우 룰이 무단으로 삭제되었는지 여부를 오픈플로우 표준에서 지원하는 플로우 삭제 보고 요청 플래그 (send_flow_rem flag)와 플로우 삭제 알림 메시지 (OFPT_FLOW_REMOVED MESSAGE)를 이용하여 판단할 수 있다.
컨트롤러는 스위치에 플로우 룰을 적용하면서, 해당 플로우 룰에 send_flow_rem 플래그를 설정할 수 있다. 오픈플로우 표준에 따르면 send_flow_rem 플래그는 해당 엔트리가 삭제되면, 플로우 삭제 알림 메시지를 전송하도록 스위치를 설정하는 역할을 수행한다.
상기 플로우 삭제 알림 메시지는 엔트리가 삭제된 원인에 대한 정보가 포함되어 있다. 나아가 공격자가 상기 플로우 삭제 알림 메시지의 삭제 원인을 타임 아웃으로 조작해도 컨트롤러는 로그의 타임 스탬프를 조회하여 무단 삭제 여부를 판단할 수 있다.
예를 들어 도 2에서 컨트롤러가 스위치 228로부터 아래의 표 5과 같은 플로우 룰을 수집한 경우 컨트롤러는 표 6의 플로우 테이블 로그를 호출하여 양자를 비교할 것이다.
이때 컨트롤러는 스위치 228로부터 수신된 플로우 삭제 알림 메시지를 참고하여 해당 플로우 엔트리가 무단으로 삭제된 것을 파악할 수 있으며, 스위치 228이 공격받은 것으로 판단할 수 있다.
Flow table (스위치 228)
Match fileds Instructions duration Cookie
1 Dst IP = 10.0.0.2 Output port3 10 0X08A6
Flow table Log (스위치 228)
Match fileds Instructions Timestamp Cookie
1 Dst IP = 10.0.0.2 Output port3 23:20 0X08A6
2 Dst IP = 10.0.3.1 drop 23:20 0X0998
이와 같이 본 발명의 실시예를 따르면 컨트롤러는 스위치의 플로우 룰이 무단으로 삭제되었는지 여부를 플로우 삭제 보고 요청 플래그 설정에 따른 플로우 삭제 알림 메시지를 이용하여 판단할 수 있다. 이후 컨트롤러는 무단으로 삭제된 표 5의 제 2행을 추가하기 위한 플로우 룰을 스위치 228에 전송하여 스위치를 복구할 수 있다.
상기 플로우 룰은 오픈플로우 스위치의 공격에 대한 임시 조치를 위한 것으로, 본 발명의 실시예를 따르면 컨트롤러는 FLOW_MOD 메시지를 이용하여 해당 스위치에 무단으로 삭제된 플로우 엔트리를 추가(add)하는 명령을 전송할 수 있다.
한편, 그룹 테이블의 경우 컨트롤러는 네트워크에 적용하기 전에 그룹 테이블의 로그를 기록하고, 특정 시점에 네트워크에서 수집한 그룹 테이블 정보와 상기 로그 정보를 비교하는 방식으로 그룹 테이블의 무단 삭제 여부를 판단할 수 있다.
나아가 본 발명의 다른 실시예를 따르면, 플로우 삭제 알림 메시지를 이용하여 그룹 테이블의 무단 삭제를 체크할 수 있다.
보다 구체적으로, 그룹 테이블에서 무단으로 그룹 테이블 엔트리가 삭제되면 인스트럭션 필드가 해당 그룹으로 지정되어 있는 플로우 플로우 엔트리도 삭제될 것이다. 따라서 스위치는 플로우 엔트리 삭제에 대한 원인을 기록하여 플로우 삭제 알림 메시지를 컨트롤러에 전송할 것이다. 이때 컨트롤러는 삭제 알림 메시지를 통해 그룹 테이블 엔트리 및 이와 연관된 플로우 테이블 엔트리의 무단 삭제를 판단할 수 있다.
이외에 플로우 엔트리와 연관없는 그룹 테이블 엔트리의 무단 삭제 여부는, 미리 기록된 그룹 테이블 로그와 비교하여 판단할 수 있다.
한편, 미터 테이블의 무단 삭제 여부도 상기 그룹 테이블과 동일한 방식으로 판단될 수 있다.
도 3은 본 발명의 실시예를 따라, 공격으로 인해 변경된 플로우 룰을 체크하고 대응하는 과정을 설명하기 위한 순서도이다.
단계 310에서 컨트롤러는 스위치에 플로우 룰을 전송할 수 있다. 이때 컨트롤러는 플로우 엔트리에 대한 해시를 쿠키 필드에 기록하고, 플로우 삭제 보고 요청 플래그를 설정하여 상기 플로우 룰을 전송할 수 있다. 스위치는 이를 자신의 플로우 테이블에 반영하고 적용할 것이다. (단계 320)
상기 해시는 플로우 엔트리 각각에 대해 생성되며, 본 발명의 추가적인 실시예를 따르면 스위치의 인증서를 보유한 컨트롤러만 생성할 수도 있다.
상기 해시는 해당 플로우 룰이 무단으로 추가되었는지 여부를 쉽게 파악하기 위해 이용되며, 상기 플로우 삭제 보고 요청 플래그는 해당 플로우 룰이 무단으로 삭제되었는지 여부를 쉽게 파악하기 위해 설정될 수 있다.
나아가 컨트롤러는 상기 플로우 룰에 대한 로그를 저장소에 따로 기록할 수 있다. 상기 로그는 플로우 룰의 쿠키 값과 동일한 해시가 기록되며, 로그 기록에 대한 타임 스탬프를 포함할 수 있다. (단계 315)
이때 악의적인 공격자가 스위치를 공격하여 플로우 테이블을 변경한 경우를 고려할 수 있다. (단계 325)
만약 공격자가 플로우 테이블의 임의의 플로우 엔트리를 삭제한 경우, 해당 플로우 엔트리에 설정된 플로우 삭제 보고 요청 플래그에 따라 스위치는 플로우 삭제 알림 메시지를 컨트롤러에 전송할 것이다. (단계 330)
상기 플로우 삭제 알림 메시지는 플로우 삭제 원인에 대한 정보가 포함되어 있으며, 이를 이용하여 컨트롤러는 해당 플로우 엔트리가 무단으로 삭제되었는지 여부를 로그를 조회하여 파악할 수 있다.
한편, 단계 335에서 컨트롤러는 임의의 주기로 네트워크에 적용된 플로우 룰을 수집할 수 있다. 나아가 수집 주기가 예측되는 것을 방지하기 위해 네트워크의 플로우 룰은 랜덤 주기로 수집될 수도 있다.
본 발명의 실시예를 따르면 컨트롤러는 오픈플로우 표준에서 제공하는 멀티 파트 요청 메시지로 스위치에 플로우 테이블 정보를 요청할 수 있으며, (단계 335) 스위치는 멀티 파크 응답 메시지로 플로우 테이블 정보를 컨트롤러에 전송할 수 있다. (단계 340)
단계 345에서 컨트롤러는 해당 시점에 스위치에 적용된 플로우 테이블 정보를 수집하고, 이를 로그와 비교하여 무단으로 변경된 플로우 룰을 파악할 수 있다.
보다 구체적으로, 컨트롤러는 수집한 플로우 룰의 플로우 엔트리에 대한 해시를 조회하기 위해 쿠키를 확인하고, 플로우 룰에 대한 로그를 호출하여 로그에 기록된 해시를 상기 쿠키와 비교하는 방식으로, 해당 플로우 엔트리가 무단으로 추가되었는지 여부를 확인할 수 있다. (단계 350)
만약 무단으로 추가된 플로우 룰이 발견되면, 컨트롤러는 스위치의 플로우 테이블을 로그와 동일하게 복구하기 위해, 무단 추가된 플로우 엔트리를 삭제하는 플로우 룰을 스위치에 전송하는 방식으로 네트워크를 방어할 수 있다. (단계 365)
한편, 플로우 룰 무단 수정의 경우, 컨트롤러는 로그의 타임 스탬프 및 네트워크에서 수집한 플로우 테이블의 듀레이션 필드를 비교하여 이를 판단할 수 있다. (단계 355)
스위치에서 플로우 룰이 변경되면, 스위치는 해당 플로우 엔트리의 듀레이션 필드를 0으로 초기화하게 된다. 듀레이션 필드는 스위치가 변경하는 정보이기 때문에 공격자가 임의로 수정할 수 없다. 따라서 컨트롤러는 로그의 타임 스탬프와 수집된 플로우 테이블의 듀레이션 필드를 비교하는 방식으로 플로우 룰의 무단 수정 여부를 판단할 수 있다.
만약 무단으로 수정된 플로우 룰이 발견되면, 컨트롤러는 스위치의 플로우 테이블을 로그와 동일하게 복구하기 위해, 무단 수정된 플로우 엔트리를 수정하는 플로우 룰을 스위치에 전송하는 방식으로 네트워크를 방어할 수 있다. (단계 365)
나아가 플로우 룰 무단 삭제의 경우, 컨트롤러는 전 단계 330에서 스위치로부터 수신한 플로우 삭제 알림 메시지를 이용하여 판단할 수 있다. 상기 플로우 삭제 알림 메시지는 엔트리가 삭제된 원인에 대한 정보가 포함되어 있다. 나아가 공격자가 삭제 원인을 타임아웃으로 조작해도 컨트롤러는 로그의 타임 스탬프를 통해 무단 삭제 여부를 판단할 수 있다. (단계 360)
만약 무단으로 삭제된 플로우 룰이 발견되면, 컨트롤러는 스위치의 플로우 테이블을 로그와 동일하게 복구하기 위해, 무단 삭제된 플로우 엔트리를 추가하는 플로우 룰을 스위치에 전송하는 방식으로 네트워크를 방어할 수 있다. (단계 365)
한편 그룹 테이블과 미터 테이블의 경우, 기본적으로 로그 정보와 특정 시점에 네트워크에서 수집한 그룹 테이블, 미터 테이블 정보를 비교하는 방식으로 무단 변경 여부를 판단할 수 있다.
본 명세서와 도면에 게시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 게시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식 가진 자에 자명한 것이다.

Claims (7)

  1. 소프트웨어 정의 네트워크의 컨트롤러가, 네트워크를 방어하는 방법에 있어서,
    플로우 엔트리 각각에 대해, 상기 플로우 엔트리의 내용을 기반으로 계산한 해시를 쿠키 필드에 기록한 플로우 룰을 스위치에 전송하는 A 단계;
    스위치의 플로우 테이블에 대한 정보를 수집하고, 상기 플로우 테이블이 무단으로 변경되었는지 여부를 상기 플로우 테이블에 포함된 플로우 엔트리의 쿠키 필드에 기록된 해시를 이용하여 판단하는 B 단계; 및
    상기 플로우 테이블이 무단으로 변경된 경우, 무단 변경 사항을 복구하기 위한 플로우 룰을 해당 스위치에 전송하는 C 단계를 포함하는 것을 특징으로 하는 네트워크 방어 방법.
  2. 제 1항에 있어서, 상기 A 단계는,
    상기 플로우 룰에 플로우 삭제 보고 요청 (send_flow_rem) 플래그를 설정하여 전송하는 단계; 및
    상기 플로우 룰에 대한 로그를 타임 스탬프 정보와 함께 저장하는 단계를 포함하는 것을 특징으로 하는 네트워크 방어 방법.
  3. 제 2항에 있어서, 상기 B단계는,
    상기 플로우 테이블에 무단으로 플로우 엔트리가 추가되었는지 여부를 상기 로그의 상기 해시를 이용하여 판단하는 단계;
    상기 플로우 테이블에 무단으로 플로우 엔트리가 수정되었는지 여부를 상기 로그의 타임 스탬프 및 상기 플로우 테이블의 듀레이션 필드를 이용하여 판단하는 단계; 및
    상기 플로우 테이블에 무단으로 플로우 엔트리가 삭제되었는지 여부를 상기 스위치로부터 수신한 플로우 삭제 보고 메시지 (OFPT_FLOW_REMOVED MESSAGE) 및 상기 로그의 타임 스탬프를 이용하여 판단하는 단계를 포함하는 것을 특징으로 하는 네트워크 방어 방법.
  4. 제 3항에 있어서, 상기 C 단계는,
    상기 플로우 테이블이 무단으로 추가된 경우, 추가된 플로우 엔트리를 삭제하는 플로우 룰을 전송하는 단계;
    상기 플로우 테이블이 무단으로 수정된 경우, 수정된 플로우 엔트리를 상기 로그에 기록된 원본 플로우 엔트리와 동일하게 수정하는 플로우 룰을 전송하는 단계; 및
    상기 플로우 테이블이 무단으로 삭제된 경우, 삭제된 플로우 엔트리를 추가하는 플로우 룰을 전송하는 단계를 포함하는 것을 특징으로 하는 네트워크 방어 방법.
  5. 제 1항에 있어서,
    그룹 테이블 및/또는 미터 테이블을 네트워크에 적용하기 전에, 상기 그룹 테이블 및/또는 미터 테이블에 대한 로그를 저장하는 단계;
    상기 스위치는 그룹 테이블 및/또는 미터 테이블에 대한 정보를 수집하고, 상기 그룹 테이블 및/또는 미터 테이블이 무단으로 변경되었는지 여부를 상기 로그와 비교하여 판단하는 단계를 포함하는 것을 특징으로 하는 네트워크 방어 방법.
  6. 소프트웨어 정의 네트워크에서 네트워크를 방어하는 장치에 있어서,
    플로우 룰의 쿠키 필드에 플로우 엔트리 각각에 대해, 상기 플로우 엔트리의 내용을 기반으로 계산한 해시를 기록하는 A 모듈;
    스위치의 플로우 테이블에 대한 정보를 수집하는 B 모듈;
    상기 플로우 테이블이 무단으로 변경되었는지 여부를 상기 플로우 테이블에 포함된 플로우 엔트리의 쿠키 필드에 기록된 해시를 이용하여 판단하는 C 모듈; 및
    상기 플로우 테이블이 무단으로 변경된 경우, 무단 변경 사항을 복구하기 위한 플로우 룰을 생성하는 D모듈을 포함하는 것을 특징으로 하는 네트워크 방어 장치.
  7. 소프트웨어 정의 네트워크의 컨트롤러에서, 네트워크를 방어하는 기능을 수행하기 위해, 컴퓨터 판독가능한 저장 매체에 기록된 컴퓨터 프로그램에 있어서,
    플로우 엔트리 각각에 대해, 상기 플로우 엔트리의 내용을 기반으로 계산한 해시를 쿠키 필드에 기록한 플로우 룰을 스위치에 전송하는 기능;
    스위치의 플로우 테이블에 대한 정보를 수집하고, 상기 플로우 테이블이 무단으로 변경되었는지 여부를 상기 플로우 테이블에 포함된 플로우 엔트리의 쿠키 필드에 기록된 해시를 이용하여 판단하는 기능; 및
    상기 플로우 테이블이 무단으로 변경된 경우, 무단 변경 사항을 복구하기 위한 플로우 룰을 해당 스위치에 전송하는 기능을 수행하는 것을 특징으로 하는 컴퓨터 프로그램.
KR1020160172278A 2016-12-16 2016-12-16 소프트웨어 정의 네트워크를 방어하는 방법, 장치 및 컴퓨터 프로그램 KR101932656B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160172278A KR101932656B1 (ko) 2016-12-16 2016-12-16 소프트웨어 정의 네트워크를 방어하는 방법, 장치 및 컴퓨터 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160172278A KR101932656B1 (ko) 2016-12-16 2016-12-16 소프트웨어 정의 네트워크를 방어하는 방법, 장치 및 컴퓨터 프로그램

Publications (2)

Publication Number Publication Date
KR20180070054A KR20180070054A (ko) 2018-06-26
KR101932656B1 true KR101932656B1 (ko) 2018-12-26

Family

ID=62788411

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160172278A KR101932656B1 (ko) 2016-12-16 2016-12-16 소프트웨어 정의 네트워크를 방어하는 방법, 장치 및 컴퓨터 프로그램

Country Status (1)

Country Link
KR (1) KR101932656B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022092788A1 (en) 2020-10-29 2022-05-05 Samsung Electronics Co., Ltd. Methods and system for securing a sdn controller from denial of service attack

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101256462B1 (ko) * 2012-08-06 2013-04-19 주식회사 안랩 모바일 애플리케이션의 위변조 탐지 장치, 시스템 및 방법
KR101537205B1 (ko) * 2014-10-20 2015-07-16 숭실대학교산학협력단 해쉬값을 이용하여 응용 프로그램의 위변조 여부를 탐지하는 사용자 단말기 및 그것을 이용한 위변조 탐지 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101256462B1 (ko) * 2012-08-06 2013-04-19 주식회사 안랩 모바일 애플리케이션의 위변조 탐지 장치, 시스템 및 방법
KR101537205B1 (ko) * 2014-10-20 2015-07-16 숭실대학교산학협력단 해쉬값을 이용하여 응용 프로그램의 위변조 여부를 탐지하는 사용자 단말기 및 그것을 이용한 위변조 탐지 방법

Also Published As

Publication number Publication date
KR20180070054A (ko) 2018-06-26

Similar Documents

Publication Publication Date Title
CN110113328B (zh) 一种基于区块链的软件定义机会网络DDoS防御方法
US9407602B2 (en) Methods and apparatus for redirecting attacks on a network
US9491189B2 (en) Revival and redirection of blocked connections for intention inspection in computer networks
CN108040057B (zh) 适于保障网络安全、网络通信质量的sdn系统的工作方法
Kalkan et al. SDNScore: A statistical defense mechanism against DDoS attacks in SDN environment
Karmakar et al. Mitigating attacks in software defined networks
CN105635084B (zh) 终端认证装置及方法
US20200374127A1 (en) Blockchain-powered cloud management system
CN104426837B (zh) Ftp的应用层报文过滤方法及装置
TWI506472B (zh) 網路設備及其防止位址解析協定報文攻擊的方法
CN107438074A (zh) 一种DDoS攻击的防护方法及装置
TWI668987B (zh) 基於目標式移動防護的主機防護系統及其方法
CN105071989A (zh) 视频内容分发质量监控系统及其监控方法
Wang et al. SDSNM: A software-defined security networking mechanism to defend against DDoS attacks
Bose et al. Blockchain as a service for software defined networks: A denial of service attack perspective
KR101710385B1 (ko) Arp 패킷을 관리하는 방법, 장치 및 컴퓨터 프로그램
US8161555B2 (en) Progressive wiretap
Khalaf et al. A simulation study of syn flood attack in cloud computing environment
Lei et al. SecWIR: Securing smart home IoT communications via wi-fi routers with embedded intelligence
CN104506559B (zh) 一种基于Android系统的DDoS防御系统和方法
KR101932656B1 (ko) 소프트웨어 정의 네트워크를 방어하는 방법, 장치 및 컴퓨터 프로그램
CN112350939B (zh) 旁路阻断方法、系统、装置、计算机设备及存储介质
Ma An effective method for defense against IP spoofing attack
Kong et al. Combination attacks and defenses on sdn topology discovery
WO2016197993A1 (zh) 一种路由器、移动终端及告警信息发送和接收的方法

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