[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20180130802A - 소프트웨어 정의 네트워킹 환경에서의 서버 은닉 방법, 시스템 및 컴퓨터 프로그램 - Google Patents

소프트웨어 정의 네트워킹 환경에서의 서버 은닉 방법, 시스템 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20180130802A
KR20180130802A KR1020170066846A KR20170066846A KR20180130802A KR 20180130802 A KR20180130802 A KR 20180130802A KR 1020170066846 A KR1020170066846 A KR 1020170066846A KR 20170066846 A KR20170066846 A KR 20170066846A KR 20180130802 A KR20180130802 A KR 20180130802A
Authority
KR
South Korea
Prior art keywords
server
virtual address
address
packet
name
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
KR1020170066846A
Other languages
English (en)
Other versions
KR101993875B1 (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 KR1020170066846A priority Critical patent/KR101993875B1/ko
Publication of KR20180130802A publication Critical patent/KR20180130802A/ko
Application granted granted Critical
Publication of KR101993875B1 publication Critical patent/KR101993875B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • H04L63/0421Anonymous communication, i.e. the party's identifiers are hidden from the other party or parties, e.g. using an anonymizer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/72Routing based on the source address
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • H04L61/103Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]

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 Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 소프트웨어 정의 네트워킹에서의 서버 은닉 방법, 시스템 및 컴퓨터 프로그램에 관한 것이다. 본 발명은 소프트웨어 정의 네트워킹 환경에서 동작하는 클라이언트의 서버 은닉 방법에 있어서, 은닉 서버의 서비스 네임을 하나 이상 포함하는 서비스 네임 목록을 네임 서버에 요청하는 단계, 상기 네임 서버로부터 상기 서비스 네임 목록을 수신하는 단계, 사용자로부터 상기 서비스 네임 목록에 포함된 서비스 네임 중 어느 하나에 대한 선택 입력을 수신하는 단계, 상기 네임 서버에 상기 선택 입력에 대응되는 제 1 은닉 서버의 가상 주소를 요청하는 단계, 상기 네임 서버로부터 상기 제 1 은닉 서버의 가상 주소를 수신하는 단계, 상기 제 1 은닉 서버의 가상 주소를 상기 패킷의 목적지로 설정하여 상기 패킷을 전송하는 단계를 포함하는 것을 일 특징으로 한다. 본 발명에 의하면, 외부에 은닉 서버의 주소를 노출시키지 않고 데이터를 송수신 할 수 있으며, 외부에서 은닉 서버의 실제 주소와 가상 주소를 구분하기 어려워 외부 공격으로부터 서버를 보다 효과적으로 보호할 수 있다.

Description

소프트웨어 정의 네트워킹 환경에서의 서버 은닉 방법, 시스템 및 컴퓨터 프로그램{METHOD, SYSTEM AND COMPUTER PROGRAM FOR HOST SECRETION IN SOFTWARE DEFINED NETWORKING ENVIRONMENT}
본 발명은 서버 은닉 방법, 시스템 및 컴퓨터 프로그램에 관한 것으로, 보다 자세하게는 소프트웨어 정의 네트워킹 환경에서의 서버 은닉 방법, 시스템 및 컴퓨터 프로그램에 관한 것이다.
소프트웨어 정의 네트워킹 (Software Defined Networking, 이하 SDN이라 칭함)은 네트워크의 모든 네트워크 장비를 지능화된 중앙관리시스템에 의해 관리하는 기술을 의미한다. SDN 기술에서는 기존 하드웨어 형태의 네트워크 장비에서 자체적으로 수행하는 패킷 처리와 관련된 제어 동작을 소프트웨어 형태로 제공되는 컨트롤러가 대신하여 처리함으로써, 기존의 네트워크 구조보다 다양한 기능을 개발하고 부여할 수 있다. SDN 시스템은 일반적으로 전체 네트워크를 제어하는 컨트롤러 서버와, 상기 컨트롤러 서버에 의해 제어되며 패킷을 처리하는 복수의 오픈플로우 스위치와, 오픈플로우 스위치의 하위 계층에 해당하는 호스트를 포함하여 구성된다. 여기에서 오픈플로우 스위치는 패킷의 송수신 기능만을 담당하게 되고, 패킷의 경로 설정, 관리 및 제어는 모두 컨트롤러 서버에서 이루어진다. 즉, 네트워크 장비를 이루는 Data Plane과 Control Plane을 분리하는 것이 SDN 시스템의 기본 구조라 볼 수 있다.
한편, 공격의 대상이 되는 시스템 자체의 구성을 능동적이고 지속적으로 변화시킴으로써 공격자가 대상 시스템의 취약점 자체를 찾기 어렵게 하기 위한 전략을 MTD(Moving Target Defense)라고 하는데, SDN 환경에서는 컨트롤러가 패킷의 경로를 관리하므로, 컨트롤러를 활용하여 MTD를 구현할 수 있다.
종래에 제안된 SDN 환경에서의 MTD 적용 기술 중 하나는 컨트롤러가 패킷 목적지의 가상 주소를 생성하고, 오픈플로우 스위치에 가상 주소를 목적지로 하는 플로우 룰을 전송함으로써 호스트의 실제 주소를 은닉하는 방법이다. 이러한 방법에 의하면, 네트워크 상에서 클라이언트의 주소를 은닉할 수 있는데, 클라이언트의 주소 만 은닉될 뿐 서버의 주소는 네트워크 상에 그대로 노출된다는 문제가 있다. 이러한 방법은 실제 네트워크 기반 공격의 타겟이 서버가 된다는 점에서 효과성이 떨어진다. 네트워크 보안에서 가장 문제가 되는 디도스(Ddos)나 웜 확산(worm propagation)의 경우, 공격 시 피해가 큰 서버를 공격 대상으로 삼는 것이 일반적이기 때문이다.
한편, 종래의 호스트 은닉 방법 중 DNS 서버를 이용하는 방법은 도메인 네임이 없으면 통신이 불가능하고, 컨트롤러가 IP 변환, 플로우 인스톨, DNS 쿼리/응답을 모두 관리하기 때문에 컨트롤러 부하가 과중될 수 밖에 없다. 또한, 이러한 방법은 가상 IP를 현재 미 사용중인 IP 대역에서 설정하고, 중복되는 가상 IP를 허용하지 않는다는 한계를 가지고 있다.
따라서 이러한 기존의 호스트 은닉 방법의 문제를 해결하고, 한계를 극복할 수 있는 서버 은닉 기술이 요구된다.
본 발명은 전술한 문제점을 해결하기 위한 것으로서, 외부에 은닉 서버의 주소를 노출시키지 않고 데이터를 송수신 할 수 있는 서버 은닉 방법, 시스템 및 컴퓨터 프로그램을 제공하는 것을 일 목적으로 한다.
또한, 본 발명은 은닉 서버와 호스트 클라이언트에 별도의 라이브러리나 모듈을 설치할 필요가 없고, 은닉 서버 또는 클라이언트를 수정하지 않고도 네트워크 상에서 은닉 서버의 정보를 효과적으로 은닉하는 것을 일 목적으로 한다.
또한, 본 발명은 호스트의 정책 위반 여부를 탐지할 수 있고, 네트워크 전역에서 서버의 실제 주소를 은닉할 수 있는 서버 은닉 방법 및 시스템을 제공하는 것을 일 목적으로 한다.
또한, 본 발명은 호스트에 서비스 네임을 제공하고, 호스트 정보를 이용하여 은닉 서버의 가상 주소를 생성하는 네임 서버를 이용하여 보다 안정적이고 효과적으로 서버를 은닉하는 것을 일 목적으로 한다.
이러한 목적을 달성하기 위한 본 발명은 소프트웨어 정의 네트워킹 환경에서 동작하는 클라이언트의 서버 은닉 방법에 있어서, 은닉 서버의 서비스 네임을 하나 이상 포함하는 서비스 네임 목록을 네임 서버에 요청하는 단계, 상기 네임 서버로부터 상기 서비스 네임 목록을 수신하는 단계, 사용자로부터 상기 서비스 네임 목록에 포함된 서비스 네임 중 어느 하나에 대한 선택 입력을 수신하는 단계, 상기 네임 서버에 상기 선택 입력에 대응되는 제 1 은닉 서버의 가상 주소를 요청하는 단계, 상기 네임 서버로부터 상기 제 1 은닉 서버의 가상 주소를 수신하는 단계, 상기 제 1 은닉 서버의 가상 주소를 상기 패킷의 목적지로 설정하여 상기 패킷을 전송하는 단계를 포함하는 것을 일 특징으로 한다.
또한, 본 발명은 소프트웨어 정의 네트워킹 환경에서 동작하는 네임 서버의 서버 은닉 방법에 있어서, 임의의 클라이언트로부터 서비스 네임 목록 요청을 수신하면, 상기 클라이언트에 은닉 서버의 서비스 네임을 하나 이상 포함하는 서비스 네임 목록을 전송하는 단계, 상기 클라이언트로부터 제 1 서비스 네임을 포함하는 가상 주소 요청이 수신되면, 상기 제 1 서비스 네임에 대응되는 제 1 은닉 서버의 가상 주소를 생성하는 단계, 상기 제 1 은닉 서버의 가상 주소를 상기 클라이언트에 전송하는 단계, 상기 클라이언트의 식별 정보, 상기 제 1 서비스 네임 및 상기 제 1 은닉 서버의 가상 주소를 포함하는 호스트 관리 정보를 생성하여 컨트롤러에 전송하는 단계를 포함하는 것을 일 특징으로 한다.
또한 본 발명은 소프트웨어 정의 네트워킹 환경에서 동작하는 컨트롤러의 서버 은닉 방법에 있어서, 임의의 네트워크 장비로부터 가상 주소를 목적지로 하는 패킷-인 메시지를 수신하면, 기 저장된 매핑 정보를 이용하여 상기 가상 주소에 대응되는 은닉 서버의 실제 주소를 확인하는 단계, 상기 실제 주소를 이용하여 상기 패킷-인 메시지에 대응되는 패킷의 경로를 계산하는 단계, 상기 가상 주소를 포함하며, 상기 계산된 경로에 따라 상기 패킷의 처리를 정의하는 플로우 룰을 생성하는 단계, 상기 컨트롤러와 연결된 하나 이상의 네트워크 장비에 상기 플로우 룰을 전송하는 단계를 포함하며, 상기 매핑 정보는 상기 가상 주소를 생성하는 네임 서버로부터 수신되는 호스트 관리 정보에 의해 갱신되며, 은닉 서버의 가상 주소를 요청한 클라이언트의 식별 정보, 상기 은닉 서버의 서비스 네임에 대응하는 상기 은닉 서버의 실제 주소 및 상기 은닉 서버의 가상 주소를 포함하는 것을 일 특징으로 한다.
또한 본 발명은 소프트웨어 정의 네트워킹 환경에서 동작하는 네임 서버에 있어서, 임의의 클라이언트로부터 제 1 서비스 네임을 포함하는 가상 주소 요청이 수신되면, 상기 클라이언트의 식별 정보 및 상기 제 1 서비스 네임을 이용하여 상기 제 1 서비스 네임에 대응하는 제 1 은닉 서버의 가상 주소를 생성하는 가상 주소 생성부, 상기 클라이언트의 식별 정보, 상기 제 1 서비스 네임 및 상기 제 1 은닉 서버의 가상 주소를 포함하는 호스트 관리 정보를 생성하는 호스트 관리부, 은닉 서버의 서비스 네임을 하나 이상 포함하는 서비스 네임 목록 및 호스트 관리 정보를 저장하는 저장부, 상기 서비스 네임 목록 및 상기 가상 주소를 상기 클라이언트에 전송하며, 상기 호스트 관리 정보를 컨트롤러에 전송하는 통신부를 포함하는 것을 일 특징으로 한다.
또한 본 발명은 소프트웨어 정의 네트워킹 환경에서 동작하는 컨트롤러에 있어서, 임의의 네트워크 장비로부터 패킷-인 메시지를 수신하고, 하나 이상의 네트워크 장비에 플로우 룰을 전송하며, 가상 주소를 생성하는 네임 서버로부터 호스트 관리 정보를 수신하는 통신부, 상기 네임 서버로부터 수신되는 호스트 관리 정보를 이용하여 매핑 정보를 생성하고, 상기 매핑 정보를 이용하여 플로우 룰을 생성하는 애플리케이션, 상기 매핑 정보를 저장하는 저장부를 포함하며, 상기 애플리케이션은 상기 네트워크 장비로부터 제 1 가상 주소를 목적지로 하는 패킷-인 메시지를 수신하면, 기 저장된 매핑 정보를 이용하여 상기 제 1 가상 주소에 대응되는 은닉 서버의 실제 주소를 확인하는 주소 매핑부, 상기 실제 주소를 이용하여 상기 패킷-인 메시지에 대응되는 패킷의 경로를 계산하고 경로 계산부, 상기 제 1 가상 주소를 포함하며, 상기 계산된 경로에 따라 상기 패킷의 처리를 정의하는 플로우 룰을 생성하는 플로우 룰 생성부를 포함하며, 상기 매핑 정보는 상기 호스트 관리 정보에 의해 갱신되며, 은닉 서버의 가상 주소를 요청한 클라이언트의 식별 정보, 상기 은닉 서버의 서비스 네임에 대응하는 상기 은닉 서버의 실제 주소, 및 상기 은닉 서버의 가상 주소를 포함하는 것을 일 특징으로 한다.
전술한 바와 같은 본 발명에 의하면, 외부에 은닉 서버의 주소를 노출시키지 않고 데이터를 송수신 할 수 있다.
또한, 본 발명에 의하면, 외부에서 은닉 서버의 실제 주소와 가상 주소를 구분하기 어려워 외부 공격으로부터 서버를 보다 효과적으로 보호할 수 있다.
또한, 본 발명에 의하면, 은닉 서버와 호스트 클라이언트에 별도의 라이브러리나 모듈을 설치할 필요가 없고, 은닉 서버 또는 클라이언트를 수정하지 않고도 네트워크 상에서 은닉 서버의 정보를 효과적으로 은닉할 수 있다.
또한, 본 발명에 의하면, 호스트의 정책 위반 여부를 탐지할 수 있고, 네트워크 전역에서 서버의 실제 주소를 은닉할 수 있다.
또한, 본 발명은 호스트에 서비스 네임을 제공하고, 호스트 정보를 이용하여 은닉 서버의 가상 주소를 생성하는 네임 서버를 이용하므로, 본 발명에 의하면 보다 안정적이고 효율적으로 서버를 은닉할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 소프트웨어 정의 네트워킹 환경을 설명하기 위한 도면,
도 2는 본 발명의 일 실시 예에 따른 컨트롤러를 설명하기 위한 블록도,
도 3은 본 발명의 일 실시 예에 따른 네임 서버를 설명하기 위한 블록도,
도 4는 본 발명의 일 실시 예에 따른 서버 은닉 방법을 설명하기 위한 순서도,
도 5는 본 발명의 일 실시 예에 따른 서버 은닉 방법을 설명하기 위한 도면,
도 6은 본 발명의 일 실시 예에 따른 서버 은닉 방법을 실행하기 위하여 클라이언트, 네임 서버 및 컨트롤러 간 통신을 설명하기 위한 도면,
도 7은 본 발명의 일 실시 예에 따른 서버 은닉 방법을 설명하기 위한 도면,
도 8은 본 발명의 서버 은닉 방법을 실행함에 있어서, 호스트 간 통신의 일 실시 예를 설명하기 위한 도면,
도 9는 본 발명의 서버 은닉 방법을 실행함에 있어서, 호스트 간 통신의 일 실시 예를 설명하기 위한 도면이다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용되며, 명세서 및 특허청구의 범위에 기재된 모든 조합은 임의의 방식으로 조합될 수 있다. 그리고 다른 식으로 규정하지 않는 한, 단수에 대한 언급은 하나 이상을 포함할 수 있고, 단수 표현에 대한 언급은 또한 복수 표현을 포함할 수 있음이 이해되어야 한다.
본 발명의 명세서에서 ‘플로우 룰’의 용어는 해당 업계의 통상의 기술자 입장에서 소프트트웨어 정의 네트워크에서 컨트롤러 서버가 적용하는 네트워크 정책을 의미하는 것으로 이해되어야 한다. 나아가 ‘플로우 룰’의 용어는 오픈플로우 스위치에 대해서는 상기 네트워크 정책에 따른 플로우 엔트리를 의미하는 것으로 해석될 수 있다. 나아가 본 명세서에서 플로우 룰의 전송 또는 변경(updating)은 신 플로우 룰의 추가(add), 구 플로우 룰의 삭제(delete) 또는 수정(modify)을 포함하는 개념으로 이해되어야 한다.
또한, 본 명세서에 기재된 ‘주소’는 호스트, 디바이스 또는 프로세스를 식별하기 위한 것으로, 네트워크 계층에서의 호스트 주소인 IP주소, 호스트 내의 프로세스 주소인 포트 주소와 같은 논리 주소를 포함하며, MAC 주소와 같은 물리 주소를 포함하는 것으로 이해될 수 있다. 또한, 본 명세서의 ‘가상 주소’는 네임 서버가 가상 주소 풀에서 할당하거나 새롭게 생성한 가상의 주소 정보로서, ‘실제 주소’와 구분되는 개념으로 이해되어야 한다.
도 1은 본 발명의 일 실시 예에 따른 소프트웨어 정의 네트워킹 환경을 설명하기 위한 도면이다. 도 1을 참조하면, 소프트웨어 정의 네트워킹 환경(Software Defined Networking Environment)는 컨트롤러(100), 네트워크 장비(200) 및 호스트(300,400)를 포함할 수 있다. 네트워크 장비(200)와 호스트(300,400)는 노드(Node)라고 지칭할 수 있으며, 링크(Link)는 2개의 노드 사이의 연결을 의미할 수 있다.
컨트롤러(100)은 네트워크 장비(200)를 관리하는 기능을 하는 것으로, 복수의 네트워크 장비(200)를 중앙 집중형으로 관리 및 제어한다. 구체적으로 컨트롤러(100)은 토폴로지 관리(Topology management), 패킷 처리와 관련된 경로 관리(Path management), 링크 디스커버리(Link discovery), 패킷 흐름인 플로우 관리(Flow management) 등의 기능을 하는 애플리케이션(소프트웨어, 130)가 탑재된 형태로 구현될 수 있다.
스위치(200)는 컨트롤러(100)의 제어에 따라 패킷을 처리하는 기능을 한다. 도면에 도시된 스위치(200)는 패킷 처리를 위한 이동 통신 기지국, 기지국 제어기, 게이트웨이 장비, 라우터 등과 같은 네트워크 장비로도 교환 가능하다. 다만 설명의 편의를 위해 네트워크 장비가 스위치(200)인 경우를 도시하였으며, 본 발명의 일 실시 예에 따른 스위치(200)는 오픈플로우 스위치(200)인 경우를 중심으로 설명한다.
소프트웨어 정의 네트워크에서 컨트롤러(100)와 오픈플로우 스위치(200)는 상호간 정보를 주고받아야 하며, 이를 위한 프로토콜로 널리 사용되는 것이 오픈플로우(OpenFlow) 프로토콜이다. 즉, 오픈플로우 프로토콜은 컨트롤러(100)과 오픈플로우 스위치(200)간 서로 통신할 수 있는 표준 규격이다.
보다 구체적으로 설명하면, 오픈플로우 스위치(200)는 크게 소프트웨어 계층과 하드웨어 계층으로 구분된다. 상기 소프트웨어 계층은 보안 채널(Secure Channel)을 통해 컨트롤러(100)과 정보를 교환한다. 상기 보안 채널은 오픈플로우 스위치(200)와 원거리에 위치한 컨트롤러(100) 간 통신 채널이며, 컨트롤러(100)과 오픈플로우 스위치(200)간 교환되는 정보는 암호화된다.
상기 하드웨어 계층에는 패킷을 규정 및 처리하고, 패킷에 관련된 통계 정보를 포함하는 플로우 테이블(Flow table)이 존재한다. 상기 플로우 테이블은 패킷 처리를규정하는 플로우 룰(Flow Rule)로 구성되며, 상기 플로우 룰은 컨트롤러(100)가 생성하여 오픈플로우 스위치(200)에 전송하는 플로우 모드 메시지(Flow-Mod Message)에 의해 추가, 수정 또는 삭제될 수 있다. 오픈플로우 스위치(200)는 상기 플로우 테이블을 참조하여 패킷을 처리한다.
상기 플로우 테이블은 크게 세 가지 정보, 즉 플로우를 정의하는 패킷 헤더 정보(Rule), 패킷의 처리를 정의하는 동작 정보(Action) 및 플로우별 통계 정보(Stats)를 포함할 수 있다. 그리고 플로우 테이블을 이루는 각 행을 플로우 엔트리(Flow Entry)라고 칭한다.
호스트(300,400)는 오픈플로우 스위치(200)의 하위 계층에 해당하는 단말 등을 의미하는 것으로, 클라이언트(300) 및 서버(400)를 통칭하는 의미로 사용될 수 있다. 호스트(300)는 소프트웨어 정의 네트워크를 통해 다른 호스트에 보내기 위한 패킷을 생성하고, 상기 패킷을 네트워크 인터페이스의 포트를 통해 오픈플로우 스위치(200)로 전송할 수 있다. 본 명세서에서는 설명의 편의를 위해 임의의 서비스를 사용하는 사용자 또는 사용자의 단말인 클라이언트(300)와, 서비스를 제공하는 컴퓨터인 서버(400)를 구분하여 설명한다. 다만, 본 발명의 일 실시 예에 따른 클라이언트(300)의 구성 및 기능은 서버(400)를 포함하는 모든 종류의 호스트에 적용 가능하며, 본 발명은 네트워크에서 서버의 정보를 은닉하는 방법에 관한 것이므로, 본 명세서에서 서버(400)는 은닉 서버(400)로 명명되기도 한다.
일반적으로 클라이언트(300)가 서버(400)로 패킷을 송신하고자 할 때, 클라이언트(300)는 서버(400)의 식별 주소를 목적지로 설정하고, 클라이언트(300)의 식별 주소를 출발지로 하는 패킷을 생성하고, 패킷을 클라이언트(300)과 연결된 오픈플로우 스위치(200)로 전송한다. 오픈플로우 스위치(200)에 상기 패킷의 처리를 규정한 플로우 테이블이 존재하는 경우에는 오픈플로우 스위치(200)가 해당 규정대로 패킷을 처리한다. 그러나 오픈플로우 스위치(200)에 상기 패킷에 관한 플로우 테이블이 없는 경우, 오픈플로우 스위치(200)는 컨트롤러(100)에 패킷 유입을 알리는 패킷-인 메시지(Packet-in Message)를 전송한다. 컨트롤러(100)는 오퍼레이터의 정책이나 미리 설정된 알고리즘에 따라 상기 패킷의 처리를 규정하는 플로우 테이블을 생성하여 오픈플로우 스위치(200)로 전송하고, 오픈플로우 스위치(200)는 상기 플로우 테이블을 수신하고 이에 기반하여 상기 패킷을 처리한다.
본 발명은 클라이언트(300)가 서버(400)로 패킷을 송신할 때, 패킷의 전송 과정에서 서버(400)의 실제 주소가 노출되는 것을 방지할 수 있다. 서버(400)의 실제 주소는 컨트롤러(100)에만 저장되어 있으며, 컨트롤러(100)는 서버(400)의 실제 주소를 경로 계산에만 이용할 뿐, 각 오픈플로우 스위치(200)에 전송되는 플로우 룰에는 서버(400)의 가상 주소만 포함되어 네트워크의 외부 또는 내부에서 서버(400)의 정보를 알 수 없다. 또한, 각 오픈플로우 스위치(200)를 통해 전달되는 패킷에는 서버(400)의 가상 주소가 목적지로 설정되어 있는 바, 패킷이 탈취되더라도 탈취자는 서버(400)의 실제 주소를 포함한 서버(400) 정보를 확인할 수 없다.
본 발명은 가상 주소를 생성하는 네임 서버(500)를 포함하는데, 네임 서버의 주소는 공개되는 정보 일 수 있으나, 정기 및/또는 비정기적으로 주소가 변경될 수 있다. 따라서 클라이언트(300)는 설치된 애플리케이션을 통해 네임 서버(500)에 접속할 수 있으며, 네임 서버(500)의 주소가 정기 및/또는 비정기적으로 변경되어지도록 설정된 경우, 상기 애플리케이션은 컨트롤러(100) 및 네임 서버(500)와 공유되는 주소 변경 알고리즘을 사용하여 네임 서버(500)에 접속할 수 있다.
이하에서는 보다 구체적으로 본 발명의 일 실시 예에 의한 컨트롤러(100)와 클라이언트(300), 네임 서버(500)의 동작을 살펴보기로 한다.
도 2를 참조하면, 본 발명의 일 실시 예에 의한 컨트롤러(100)는 애플리케이션(130), 통신부(150), 저장부(170)를 포함하며, 애플리케이션(130)은 주소매핑부(133), 경로 계산부(135), 플로우 룰 생성부(137)를 포함할 수 있다.
애플리케이션(130)은 상기 네임 서버로부터 수신되는 호스트 관리 정보를 이용하여 매핑 정보를 생성하고, 상기 매핑 정보를 이용하여 플로우 룰을 생성한다. 또한, 통신부(150)가 플로우 룰에 따른 플로우 테이블 변경 사항을 오픈플로우 스위치(200)에 전송하도록 제어한다. 애플리케이션(130)은 오픈플로우 스위치(200)에 플로우 테이블 변경을 위한 플로우-모드 메시지를 전송할 수 있으며, 일부 오픈플로우 스위치(200)에 전송되는 플로우-모드 메시지에는 셋-필드 액션(Set-field Action)이 포함될 수 있다.
셋-필드 액션은 플로우 엔트리(또는 플로우 테이블을 구성하는 플로우 룰)의 헤더 필드를 변경(rewrite)하는 액션으로, 스위치(200)로 은닉 서버(400)의 가상 주소를 목적지로 하는 패킷이 수신되면, 패킷 헤더 필드의 목적지를 은닉 서버(400)의 실제 주소로 변경함으로써, 최종적으로 패킷이 은닉 서버(400)에 정확하게 전송될 수 있도록 한다.
주소 매핑부(133)는 클라이언트(300)로부터 가상 주소를 목적지로 하는 패킷-인 메시지를 수신하면, 기 저장된 매핑 정보를 이용하여 가상 주소에 대응되는 은닉 서버의 실제 주소를 확인한다.
여기서 매핑 정보는 호스트 관리 정보에 의해 갱신되는 정보로, 은닉 서버의 가상 주소를 요청한 클라이언트(300)의 식별 정보, 은닉 서버(400)의 서비스 네임에 대응하는 은닉 서버(400)의 실제 주소, 및 은닉 서버(400)의 가상 주소를 포함할 수 있다.
호스트 관리 정보는 네임 서버(500)에서 생성되어 수신되는 정보로, 은닉 서버(400)의 가상 주소를 요청한 클라이언트(300)의 식별 정보, 은닉 서버(400)의 서비스 네임, 은닉 서버의 가상 주소를 포함할 수 있다.
경로 계산부(135)는 은닉 서버(400)의 실제 주소를 이용하여 패킷-인 메시지에 대응되는 패킷의 경로를 계산한다. 경로 계산부(135)는 패킷의 목적지가 네임 서버(500)이면, 네임 서버(500)의 실제 주소를 이용하여 패킷의 경로를 계산한다.
플로우 룰 생성부(137)는 가상 주소를 포함하며, 계산된 경로에 따라 패킷의 처리를 정의하는 플로우 룰을 생성한다. 실제 주소를 이용하여 계산된 경로를 따르되, 플로우 룰에 포함되는 목적지에 실제 주소 대신 가상 주소가 포함되도록 플로우 룰을 생성함으로써 네트워크 상에서 은닉 서버(400)의 실제 주소가 노출되지 않도록 한다.
통신부(150)는 오픈플로우 스위치(200)로부터 서버의 가상 주소를 목적지로 하는 패킷-인 메시지를 수신하고, 생성되는 플로우 룰을 컨트롤러(100)가 관리하는 하나 이상의 오픈플로우 스위치(200)에 전송한다. 보다 구체적으로는 플로우 룰에 따른 플로우 테이블 변경 사항을 전송하며, 컨트롤러(100)는 플로우 모드 메시지(Flow-Mod Message)를 이용하여 플로우 테이블 변경 사항을 전송할 수 있다.
오픈플로우 스위치(200)는 컨트롤러(100)에서 수신한 플로우 모드 메시지에 따라 플로우 테이블에 포함된 플로우 룰을 수정, 삭제할 수 있고, 플로우 테이블에 새로운 플로우 룰을 추가 할 수 있다. 그리고 오픈플로우 스위치(200)는 변경된 플로우 테이블, 즉 가상 주소를 포함하는 플로우 룰을 참조하여 패킷을 처리할 수 있다.
또한 통신부(150)는 가상 주소를 생성하는 네임 서버로부터 호스트 관리 정보를 수신할 수 있다.
저장부(170)는 애플리케이션(130)의 상태와 애플리케이션(130)의 운영에 필요한 정보, 컨트롤러(100)가 스위치(200)에 전송한 명령, 스위치(200)의 상태 등을 포함하는 다양한 정보를 저장한다. 특히, 본 발명의 일 실시 예에서 저장부(170)는 매핑 정보를 저장할 수 있다. 저장부(170)는 도면에 도시된 바와 같이 컨트롤러(100)에 포함될 수도 있으나, 분산 저장부로 구현되거나 외부 저장부를 활용할 수도 있다.
도 3은 본 발명의 일 실시 예에 따른 네임 서버(500)를 설명하기 위한 블록도이다. 도 3을 참조하면, 본 발명의 일 실시 예에 따른 네임 서버(500)는 가상 주소 생성부(510), 호스트 관리부(530), 통신부(550), 저장부(570)를 포함할 수 있다.
가상 주소 생성부(510)는 임의의 클라이언트로부터 제 1 서비스 네임을 포함하는 가상 주소 요청이 수신되면, 클라이언트의 식별 정보 및 제 1 서비스 네임을 이용하여 제 1 서비스 네임에 대응하는 제 1 은닉 서버의 가상 주소를 생성한다.
본 명세서에서 '가상 주소의 생성'은 IP Pool과 같은 가상의 주소 풀을 생성하고 가상 주소 풀 내에서 일 가상 주소를 할당(assigning)하는 방법과 기 설정된 알고리즘에 따라 가상 주소를 생성(generating)하는 방법을 모두 포함하는 의미로 사용되었다.
가상 주소 생성부(510)는 호스트 관리 정보에 클라이언트가 네임 서버에 접속한 시각을 나타내는 접속 정보가 포함된 경우, 접속 정보를 이용하여 클라이언트의 기 접속 시각과 현재 접속 시각의 차이가 기 설정된 가상 주소 변경 주기 이내인지 판단할 수 있다.
가상 주소 생성부(510)는 클라이언트(300)의 기 접속 시각과 현재 접속 시각의 차이가 가상 주소 변경 주기보다 작으면 기 생성된 주소를 제 1 은닉 서버의 가상 주소로 유지하고, 차이가 가상 주소 변경 주기보다 크면 새로운 주소를 제 1 은닉 서버의 가상 주소로 생성할 수 있다.
호스트 관리부(530)는 클라이언트의 식별 정보, 제 1 서비스 네임 및 제 1 은닉 서버의 가상 주소를 포함하는 호스트 관리 정보를 생성한다. 호스트 관리 정보는 클라이언트가 네임 서버에 접속한 시각을 나타내는 접속 정보를 더 포함할 수 있으며, 호스트 관리부(530)는 접속 정보를 이용하여 기 설정된 시간 동안 클라이언트의 접속이 없는 것으로 판단되면 호스트 관리 정보를 삭제할 수 있다.
통신부(550)는 서비스 네임 목록 및 가상 주소를 클라이언트에 전송하며, 호스트 관리 정보를 컨트롤러에 전송할 수 있다.
예를 들어, 네임 서버(500)는 저장부(570)에 서비스 네임 목록을 요청한 클라이언트(300)의 출발지 IP, 요청 URL과 같은 서비스 네임, 해당 서비스 네임이 가리키는 은닉 서버(400)의 가상 IP, 접속 시간 정보를 호스트 관리 정보에 포함시켜 저장부(570)에 저장할 수 있는데, 통신부(550)는 새로운 클라이언트(300)가 저장부(570)에 저장될 때 마다 해당 정보를 컨트롤러(100)로 전송할 수 있다.
이는 컨트롤러(100)가 은닉 서버(400)의 가상 IP와 실제 IP 주소를 매핑할 수 있도록 하기 위한 것으로, 컨트롤러(100)는 은닉 서버(400)에서 수신한 호스트 관리 정보를 이용하여 매핑 정보를 생성할 수 있다.
저장부(570)는 은닉 서버의 서비스 네임을 하나 이상 포함하는 서비스 네임 목록과 호스트 관리 정보를 저장할 수 있다.
이하에서는 도 4 내지 도 9를 참조하며, 본 발명의 서버 은닉 방법의 실시 예를 설명하기로 한다.
도 4는 본 발명의 일 실시 예에 따른 서버 은닉 방법을 설명하기 위한 순서도이다. 도 4를 참조하면, 서버에 패킷을 전송하고자 하는 클라이언트는 은닉 서버의 서비스 네임을 하나 이상 포함하는 서비스 네임 목록을 네임 서버에 요청할 수 있다(S100). 서비스 네임은 서버를 구분할 수 있는 가상의 식별 정보로, URL 형식으로 표현될 수도 있고, 숫자 또는 텍스트 형식을 가질 수도 있다. 예를 들어, 도 1에서 은닉 서버(400)의 서비스 네임은 www.test.com과 같은 가상 URL일 수 있으며, 클라이언트가 네임 서버에 서비스 네임 목록을 요청하면, 네임 서버는 미리 설정된 은닉 서버 1의 서비스 네임 ‘www.test.com’, 은닉 서버 2의 서비스 네임 ‘www.test2.com’, 은닉 서버 3의 서비스 네임 ‘server3’, 은닉 서버 A의 서비스 네임 URL A를 포함하는 서비스 네임 목록을 클라이언트에 전송할 수 있다.
네임 서버가 서비스 네임 목록을 전송하면(S200), 클라이언트는 사용자로부터 서비스 네임 목록에 포함된 서비스 네임 중 어느 하나에 대한 선택 입력을 수신할 수 있다(S300). 위 예시에서 은닉 서버 A에 접속하고자 하는 사용자가 클라이언트에 설치된 애플리케이션을 이용하여 네 개의 서비스 네임 중 은닉 서버 A에 대응하는 URL A를 선택한 경우를 가정하자. 클라이언트(300)는 서비스 네임인 URL A를 포함하는 가상 주소 요청을 네임 서버에 전송할 수 있다(S400).
클라이언트는 단계 100 내지 단계 300을 수행하지 않고, 단계 400에서 기 저장되었거나 알려진 서비스 네임을 이용하여 가상 주소를 요청할 수 있다.
또 다른 실시 예로, 은닉 서버가 하나만 존재하는 경우에는 별도의 가상 주소 요청 없이 네임 서버(500)에 접속하면 자동으로 가상 주소를 수신할 수도 있으므로, 이러한 경우에는 단계 100 내지 단계 400의 수행 없이 은닉 서버의 가상 주소를 수신하게 될 것이다(S600).
전술한 클라이언트(300)의 서비스 네임 목록 요청(S100) 및 가상 주소 요청(S400)은 클라이언트에 설치된 애플리케이션을 통해 이루어질 수 있으며, 이러한 애플리케이션은 인증된 호스트에 한하여 설치 및 동작 가능한 것일 수 있다.
또한, 클라이언트(300)는 단계 100 또는 단계 400에서 네임 서버(500)의 가상 주소를 이용하여 네임 서버에 접속할 수 있는데, 네임 서버(500)의 가상 주소는 네임 서버(500)의 실제 주소에 랜덤값을 부가하여 생성되고, 랜덤값은 컨트롤러와 공유되는 알고리즘에 의해 결정되는 값일 수 있다. 예를 들어, 네임 서버(500)의 주소가 NS_RIP일 때, 클라이언트(300)가 네임 서버에 접속하기 위해 사용하는 네임 서버(500)의 가상 주소 NS_VIP = NS_RIP+랜덤값일 수 있으며, 이 랜덤값은 접속 시각, 출발지 주소(클라이언트 주소) 등을 이용하여 설정되는 값일 수 있다.
네임 서버(500)는 단계 400에서 클라이언트로부터 가상 주소 요청을 수신하면 가상 주소 요청에 포함된 서비스 네임에 대응하는 은닉 서버(이하, 제 1 은닉 서버라 한다.)의 가상 주소를 생성할 수 있으며(S500), 이를 가상 주소를 요청한 클라이언트에 전송할 수 있다(S600).
네임 서버(500)가 가상 주소를 생성하는 단계 500을 보다 구체적으로 살펴보자. 네임 서버(500)는 CIDR을 이용하여 미리 설정된 IP 대역 내의 임의의 값을 할당할 수 있다. 특히, 네임 서버(500)는 네임 서버(500)의 주소와 같은 대역의 주소를 상기 제 1 은닉 서버의 가상 주소로 생성할 수 있는데, 이는 외부에서 은닉 서버의 실제 주소와 가상 주소를 구별할 수 없도록 하기 위함이다.
네임 서버(500)는 서비스 네임이 동일하다면, 표 1에 도시된 바와 같이 서로 다른 호스트(클라이언트)에 중복되는 가상 주소를 할당할 수 있다.
클라이언트 IP 서비스 네임 은닉 서버의 가상 IP 접속 시각
10.0.0.1 www.test1.com 172.23.255.100 T1
10.0.0.5 www.test1.com 172.23.255.100 T2
10.0.0.17 www.test1.com 172.23.255.100 T3
만약, 동일 호스트(클라이언트)로부터 서로 다른 서비스 네임을 포함하는 가상 주소 요청을 수신하였다면, 네임 서버(500)는 표 2에 도시된 바와 같이 각 은닉 서버에 중복되지 않는 가상 IP를 할당할 수 있다.
클라이언트 IP 서비스 네임 은닉 서버의 가상 IP 접속 시각
10.0.0.1 www.test1.com 172.23.255.100 T1
10.0.0.1 www.test2.com 172.23.255.110 T2
10.0.0.1 www.test3.com 172.23.255.120 T3
단계 500에서 네임 서버(500)는 접속 정보를 이용하여 클라이언트(300)의 기 접속 시각과 현재 접속 시각의 차이가 기 설정된 가상 주소 변경 주기 이내인지 판단할 수 있다. 그리고 판단 결과 차이가 가상 주소 변경 주기보다 작으면 기 생성된 주소를 제 1 은닉 서버의 가상 주소로 유지하고, 차이가 가상 주소 변경 주기보다 크면 새로운 주소를 제 1 은닉 서버의 가상 주소로 생성할 수 있다.
네임 서버(500)는 제 1 은닉 서버의 가상 주소를 생성하고 이를 클라이언트에 전송할 뿐 아니라, 가상 주소를 요청한 클라이언트(300)의 식별 정보, 가상 주소 요청에 포함된 서비스 네임(이하, 제 1 서비스 네임이라 한다.), 제 1 은닉 서버의 가상 주소를 포함하는 호스트 관리 정보를 생성할 수 있으며(S800), 호스트 관리 정보를 네임 서버에 저장하거나(S850) 컨트롤러에 전송할 수 있다(S900).
호스트 관리 정보에는 클라이언트(300)가 네임 서버에 접속한 시각을 나타내는 접속 정보가 더 포함될 수 있는데, 이는 네임 서버(500)가 접속 정보를 이용하여 기 설정된 시간 동안 클라이언트(300)의 접속이 없는 것으로 판단되면 호스트 관리 정보를 삭제하는 데 이용될 수 있다. 또한 접속 정보는 단계500에서 네임 서버(500)가 가상 주소를 갱신할지 여부를 판단하는데 이용될 수 있다.
한편, 클라이언트(300)는 단계 600에서 네임 서버로부터 제 1 은닉 서버의 가상 주소를 수신하면 제 1 은닉 서버의 가상 주소를 패킷의 목적지로 설정하여 패킷을 전송할 수 있다(S700).
클라이언트(300)로부터 제 1 은닉 서버의 가상 주소를 목적지로 하는 패킷을 수신한 오픈플로우 스위치(200)는 다음과 같은 동작을 수행할 수 있다. 전술한 바와 같이 오픈플로우 스위치(200)에는 패킷을 규정 및 처리하고, 패킷에 관련된 통계 정보를 포함하는 하나 이상의 플로우 테이블(Flow table)이 존재하고, 플로우 테이블은 패킷 처리를 규정하는 플로우 룰(Flow rule)로 구성된다. 오픈플로우 스위치(200)에는 제 1 은닉 서버의 가상 주소에 대한 플로우 룰이 존재하지 않을 것이므로, 오픈플로우 스위치(200)는 컨트롤러(100)에 패킷-인 메시지(packet-in message)를 송신함으로써 제 1 은닉 서버의 가상 주소를 목적지로 하는 패킷의 경로를 컨트롤러(100)에 문의한다(S1000). 패킷-인 메시지는 패킷의 헤더 정보로 구성되어 있으므로, 패킷-인 메시지에는 제 1 은닉 서버의 가상 주소가 목적지로, 클라이언트(300)의 식별 주소가 출발지로 설정되어 있다.
컨트롤러(100)는 임의의 네트워크 장비로부터 가상 주소를 목적지로 하는 패킷-인 메시지를 수신하면, 기 저장된 매핑 정보를 이용하여 가상 주소에 대응되는 은닉 서버의 실제 주소를 확인하고(S1100), 실제 주소를 이용하여 패킷-인 메시지에 대응되는 패킷의 경로를 계산한다(S1200). 여기서 매핑 정보는 가상 주소를 생성하는 네임 서버로부터 수신되는 호스트 관리 정보에 의해 갱신되는 정보로, 은닉 서버의 가상 주소를 요청한 클라이언트의 식별 정보, 은닉 서버의 서비스 네임에 대응하는 은닉 서버의 실제 주소 및 은닉 서버의 가상 주소를 포함할 수 있다.
단계 1100에서 컨트롤러(100)는 가상 주소의 유효성을 확인하고, 가상 주소가 유효한 경우에 한하여 매핑 정보를 이용하여 가상 주소에 대응되는 은닉 서버의 실제 주소를 확인할 수 있다. 만약 가상 주소가 유효하지 않으면 이후 단계를 수행하지 않음으로써, 호스트(클라이언트)의 정책 위반 여부를 탐지할 수 있다.
컨트롤러(100)는 가상 주소를 포함하며 계산된 경로에 따라 패킷의 처리를 정의하는 플로우 룰을 생성하며(S1300), 컨트롤러와 연결된 하나 이상의 네트워크 장비에 플로우 룰을 전송할 수 있다(S1400). 네트워크 장비가 오픈플로우 스위치(200)인 경우, 단계 1400에서 오픈플로우 스위치(200)로 전송되는 플로우 룰은 플로우 룰에 따른 플로우 테이블 변경 사항으로 이해될 수 있으며, 오픈플로우 프로토콜이 지원하는 플로우-모드 메시지(flow-mod message)를 통해 전송될 수 있다.
컨트롤러(100)는 가상 주소를 목적지로 하는 패킷-인 메시지를 수신한 이후에 가상 주소에 기 설정된 랜덤값을 연산하는 단계를 더 포함할 수 있으며, 연산 결과에 따른 목적지 주소가 네임 서버(500)의 실제 주소에 대응되면, 단계 1200에서 컨트롤러(100)는 네임 서버의 실제 주소를 이용하여 패킷의 경로를 계산하고, 각 오픈플로우 스위치(200)가 상기 패킷을 네임 서버(500)로 전송 처리하도록 하는 플로우 룰을 생성할 수 있다. 즉, 가상 주소가 네임 서버의 가상 주소인 경우, 해당 패킷이 네임 서버로 전송되도록 처리하는 것이다. 네임 서버의 주소는 외부에 노출되어 있으나, 정기 및/또는 비정기적으로 변경될 수 있으므로, 컨트롤러(100)는 네임 서버의 주소 변경 알고리즘을 네임 서버 및/또는 클라이언트의 애플리케이션과 공유할 수 있으며, 공유된 알고리즘 또는 랜덤값을 이용하여 네임 서버의 주소의 변경 여부를 식별할 수 있다.
컨트롤러(100)는 단계 1300 내지 단계 1400에서 네트워크 장비(200)가 은닉 서버(400)와 연결된 네트워크 장비(200)이면, 플로우 테이블 변경 사항에 은닉 서버(400)의 가상 주소를 목적지로 하는 패킷의 목적지를 은닉 서버(400)의 실제 주소로 변경하는 액션 및 은닉 서버(400)의 식별 주소를 출발지로 하는 패킷의 출발지를 은닉 서버(400)의 가상 주소로 변경하는 액션(Set-field Action)을 포함시킬 수 있다.
도 5 내지 도 7을 도면을 참조하여 전술한 내용을 보다 구체적으로 살펴보자. 도 5를 참조하면, IP 주소가 10.0.0.2인 호스트 클라이언트 Host A(300)는 IP 주소가 90.10.10.20인 네임 서버(500)로 서비스 네임 목록을 요청할 수 있다(S100). 네임 서버(500) 저장된 서비스 네임 목록(URL List)을 Host A(300)로 전송할 수 있다. 도 5의 실시 예에서 네임 서버는 URL A:90.10.10.5, URL B: 90.10.10.6, URL C: 90.10.10.7 세 개의 URL을 서비스 네임으로 저장하고 있다.
도 6은 사용자가 URL A에 해당하는 은닉 서버로의 접속을 선택한 경우의 일 실시 예이다. Host A(300)는 서비스 네임인 URL A에 대응되는 은닉 서버의 가상 주소를 네임 서버에 요청할 수 있다(S400). 네임 서버(500)는 URL A에 대응되는 가상 주소를 생성하며(S500), 도 6의 실시 예에서 네임 서버(500)는 URL A라는 서비스 네임을 갖는 은닉 서버의 가상 주소에 90.10.10.5를 할당하였으며, 이를 Host A(300)에 전송하여(S600), 클라이언트(300)가 가상 주소를 목적지로 하는 패킷을 전송할 수 있도록 한다. 네임 서버는 클라이언트 식별 정보(Host IP), 서비스 네임(URL A), 서비스 네임에 대응하는 가상 주소(90.10.10.5:9999)를 포함하는 호스트 관리 정보(530A)를 생성하여 저장할 수 있으며, 이를 컨트롤러(100)에 전송하여 컨트롤러가 플로우 룰을 생성하는데 호스트 관리 정보를 사용할 수 있도록 한다.
이후 단계는 도 7을 참조한다. 도 7을 참조하면, Host A(300)는 네임 서버로부터 수신한(S600) 은닉 서버의 가상 주소(90.10.10.5:9999)를 목적지로 설정하여 패킷을 전송한다(S700). 패킷을 수신한 오픈플로우 스위치(200A)는 새롭게 생성된 가상 주소에 대한 플로우 룰을 가지고 있지 않으므로, 이에 대한 패킷-인 메시지를 컨트롤러(100)로 전송하며(S1000), 컨트롤러의 애플리케이션(130)은 기 저장된 매핑 정보를 이용하여 가상 주소에 대응하는 은닉 서버의 실제 주소를 확인한다. 도 7의 실시 예에서, 가상 주소(90.10.10.5)에 대응하는 실제 주소는 90.10.10.10 이며, 컨트롤러(100)는 실제 주소를 이용하여 경로를 계산한 뒤, 가상 주소를 포함시킨 플로우 룰 변경 사항 즉, 플로우-모드 메시지를 각 스위치(200)에 전송한다(S1400).
플로우-모드 메시지를 수신한 각 스위치(200)는 가상 주소 90.10.10.5를 목적지로 하는 패킷을 수신하면, 플로우 테이블에서 해당 패킷에 대한 처리 규정인 플로우 룰을 참조하여 패킷을 처리한다. 다만, 은닉 서버인 Host B(400)와 연결된 오픈플로우 스위치(200B)로 전송된 플로우-모드 메시지는 Host B(400)의 가상 주소 90.10.10.5를 목적지로 하는 패킷의 목적지를 은닉 서버(400)의 실제 주소 90.10.10.10으로 변경하는 액션(Set-field Action)을 포함하므로, 90.10.10.5를 목적지로 하는 패킷을 수신하면, 목적지 주소를 90.10.10.10으로 변경하여, 패킷을 Host B에 전달할 수 있다.
따라서 본 발명에 의하면, 컨트롤러(100) 외에는 은닉 서버의 실제 주소를 알 수 없을 뿐 아니라, 은닉 서버의 실제 주소 정보가 노출되지 않으므로, 효과적으로 은닉 서버의 정보를 은닉할 수 있으며, 동적으로 은닉 서버의 주소 정보가 변경되므로 불확실성과 공격복잡도가 높아져 공격자로부터 시스템을 안정적으로 보호할 수 있다.
전술한 도 5 내지 도 7의 설명은 클라이언트와 네임 서버, 컨트롤러 간 통신에 대한 것이며, 이하에서는 도 8 내지 도 9를 참조하여 본 발명의 호스트 간 통신 방법의 일 실시 예를 설명한다.
도 8은 은닉 서버의 가상 주소(90.10.10.5)를 수신한 Host A가 가상 주소를 목적지로 하여 ARP 요청 패킷을 전송하는 경우의 일 실시 예이다. 오픈플로우 스위치(200A)는 가상 주소를 목적지로 하는 ARP 요청 패킷을 수신하면(S700A), 이에 대한 패킷-인 메시지를 컨트롤러(100)에 전송한다(S1000A).
컨트롤러(100)는 패킷-인 메시지가 ARP(Address Resolution Protocol) 요청 패킷에 관한 패킷-인 메시지이면, ARP 요청 패킷에 포함된 가상 주소를 실제 주소(90.10.10.10)로 변환하고, 실제 주소가 포함된 재생성 ARP 요청 패킷을 컨트롤러와 연결된 하나 이상의 네트워크 장비에 브로드캐스트 할 수 있다(S2000).
그 결과, 도 9에 도시된 바와 같이 은닉 서버 Host B(400)는 재생성 ARP 요청 패킷에 대응하는 ARP 응답 패킷을 자신과 연결된 오픈플로우 스위치(200B)로 전송하며, ARP 응답 패킷을 수신한 오픈플로우 스위치(200B)는 이에 대한 패킷-인 메시지를 컨트롤러에 전송한다(S2400). 이는 컨트롤러가 은닉 서버 Host B(400)으로부터 재생성 ARP 요청 패킷에 대응하는 ARP 응답 패킷을 수신한 것으로 이해될 수 있다.
다음으로 컨트롤러(100)는 ARP 응답 패킷에 포함된 실제 주소를 가상 주소로 변환하여, 가상 주소를 포함하는 재생성 ARP 응답 패킷을 생성하고, 재생성 ARP 응답 패킷을 클라이언트 Host A(300)에 유니캐스트로 전송할 수 있다(S2500).
한편, 전술한 서버 은닉 방법은 각 실시 예 중 어느 하나를 실행시키기 위하여 컴퓨터 판독 가능 매체에 저장된 서버 은닉 애플리케이션을 통해 호스트(300) 또는 컨트롤러(100)에서 구현될 수 있다.
본 명세서에서 생략된 일부 실시 예는 그 실시 주체가 동일한 경우 동일하게 적용 가능하다. 또한, 전술한 본 발명은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니다.

100: 컨트롤러
200: 스위치
300: 클라이언트
400: 은닉 서버
500: 네임 서버

Claims (19)

  1. 소프트웨어 정의 네트워킹 환경에서 클라이언트의 서버 은닉 방법에 있어서,
    네임 서버에 제 1 서비스 네임을 갖는 제 1 은닉 서버의 가상 주소를 요청하는 단계;
    상기 네임 서버로부터 상기 제 1 은닉 서버의 가상 주소를 수신하는 단계;
    상기 제 1 은닉 서버의 가상 주소를 패킷의 목적지로 설정하여 상기 패킷을 전송하는 단계를 포함하는 서버 은닉 방법.
  2. 제1항에 있어서,
    은닉 서버의 서비스 네임을 하나 이상 포함하는 서비스 네임 목록을 네임 서버에 요청하는 단계;
    상기 네임 서버로부터 상기 서비스 네임 목록을 수신하는 단계;
    사용자로부터 상기 서비스 네임 목록에 포함된 서비스 네임 중 어느 하나에 대한 선택 입력을 수신하는 단계를 더 포함하고,
    상기 제 1 서비스 네임은 상기 선택 입력에 대응되는 서비스 네임인 서버 은닉 방법.
  3. 제2항에 있어서,
    상기 서비스 네임 목록을 네임 서버에 요청하는 단계는,
    상기 네임 서버의 가상 주소를 이용하여 상기 네임 서버에 접속하는 단계를 포함하며,
    상기 네임 서버의 가상 주소는 상기 네임 서버의 실제 주소에 랜덤값을 부가하여 생성되고, 상기 랜덤값은 컨트롤러와 공유되는 알고리즘에 의해 결정되는 값인 서버 은닉 방법.
  4. 소프트웨어 정의 네트워킹 환경에서 동작하는 네임 서버의 서버 은닉 방법에 있어서,
    임의의 클라이언트로부터 제 1 서비스 네임을 포함하는 가상 주소 요청이 수신되면, 상기 제 1 서비스 네임에 대응되는 제 1 은닉 서버의 가상 주소를 생성하는 단계;
    상기 제 1 은닉 서버의 가상 주소를 상기 클라이언트에 전송하는 단계;
    상기 클라이언트의 식별 정보, 상기 제 1 서비스 네임 및 상기 제 1 은닉 서버의 가상 주소를 포함하는 호스트 관리 정보를 생성하여 컨트롤러에 전송하는 단계를 포함하는 서버 은닉 방법.
  5. 제4항에 있어서,
    상기 클라이언트로부터 서비스 네임 목록 요청을 수신하면, 상기 클라이언트에 은닉 서버의 서비스 네임을 하나 이상 포함하는 서비스 네임 목록을 전송하는 단계를 더 포함하는 서버 은닉 방법.
  6. 제4항에 있어서,
    상기 호스트 관리 정보는 상기 클라이언트가 상기 네임 서버에 접속한 시각을 나타내는 접속 정보를 더 포함하고,
    상기 네임 서버는 상기 접속 정보를 이용하여, 기 설정된 시간 동안 상기 클라이언트의 접속이 없는 것으로 판단되면 상기 호스트 관리 정보를 삭제하는 단계를 더 포함하는 서버 은닉 방법.
  7. 제4항에 있어서,
    상기 호스트 관리 정보는 상기 클라이언트가 상기 네임 서버에 접속한 시각을 나타내는 접속 정보를 더 포함하고,
    상기 가상 주소 생성 단계는,
    상기 접속 정보를 이용하여 상기 클라이언트의 기 접속 시각과 현재 접속 시각의 차이가 기 설정된 가상 주소 변경 주기 이내인지 판단하는 단계;
    상기 판단 결과 상기 차이가 상기 가상 주소 변경 주기보다 작으면 기 생성된 주소를 상기 제 1 은닉 서버의 가상 주소로 유지하고, 상기 차이가 상기 가상 주소 변경 주기보다 크면 새로운 주소를 상기 제 1 은닉 서버의 가상 주소로 생성하는 단계를 포함하는 서버 은닉 방법.
  8. 제4항에 있어서,
    상기 가상 주소 생성 단계는,
    상기 네임 서버의 주소와 같은 대역의 주소를 상기 제 1 은닉 서버의 가상 주소로 생성하는 단계를 포함하는 서버 은닉 방법.
  9. 소프트웨어 정의 네트워킹 환경에서 동작하는 컨트롤러의 서버 은닉 방법에 있어서,
    임의의 네트워크 장비로부터 가상 주소를 목적지로 하는 패킷-인 메시지를 수신하면,
    기 저장된 매핑 정보를 이용하여 상기 가상 주소에 대응되는 은닉 서버의 실제 주소를 확인하는 단계;
    상기 실제 주소를 이용하여 상기 패킷-인 메시지에 대응되는 패킷의 경로를 계산하는 단계;
    상기 가상 주소를 포함하며, 상기 계산된 경로에 따라 상기 패킷의 처리를 정의하는 플로우 룰을 생성하는 단계;
    상기 컨트롤러와 연결된 하나 이상의 네트워크 장비에 상기 플로우 룰을 전송하는 단계를 포함하며,
    상기 매핑 정보는 상기 가상 주소를 생성하는 네임 서버로부터 수신되는 호스트 관리 정보에 의해 갱신되며, 은닉 서버의 가상 주소를 요청한 클라이언트의 식별 정보, 상기 은닉 서버의 서비스 네임에 대응하는 상기 은닉 서버의 실제 주소 및 상기 은닉 서버의 가상 주소를 포함하는 서버 은닉 방법.
  10. 제9항에 있어서,
    상기 은닉 서버의 실제 주소를 확인하는 단계는,
    상기 가상 주소의 유효성을 확인하는 단계;
    상기 가상 주소가 유효하면, 상기 매핑 정보를 이용하여 상기 가상 주소에 대응되는 은닉 서버의 실제 주소를 확인하는 단계를 포함하는 서버 은닉 방법.
  11. 제9항에 있어서,
    상기 패킷-인 메시지를 수신하면,
    상기 가상 주소에 기 설정된 랜덤값을 연산하는 단계를 더 포함하고,
    상기 연산 결과에 따른 목적지 주소가 상기 네임 서버의 실제 주소에 대응되면 상기 패킷의 경로를 계산하는 단계는,
    상기 네임 서버의 실제 주소를 이용하여 상기 패킷의 경로를 계산하는 단계를 포함하는 서버 은닉 방법.
  12. 제9항에 있어서,
    상기 은닉 서버와 연결된 네트워크 장비에 전송되는 플로우 룰은
    상기 은닉 서버의 가상 주소를 목적지로 하는 패킷의 목적지를 상기 은닉 서버의 실제 주소로 변경하는 액션을 포함하는 서버 은닉 방법.
  13. 제9항에 있어서,
    상기 패킷-인 메시지가 ARP(Address Resolution Protocol) 요청 패킷에 관한 패킷-인 메시지이면,
    상기 ARP 요청 패킷에 포함된 상기 가상 주소를 상기 실제 주소로 변환하는 단계;
    상기 실제 주소가 포함된 재생성 ARP 요청 패킷을 상기 컨트롤러와 연결된 하나 이상의 네트워크 장비에 브로드캐스트 하는 단계;
    상기 은닉 서버로부터 상기 재생성 ARP 요청 패킷에 대응하는 ARP 응답 패킷을 수신하면, 상기 ARP 응답 패킷에 포함된 상기 실제 주소를 상기 가상 주소로 변환하는 단계;
    상기 가상 주소를 포함하는 재생성 ARP 응답 패킷을 상기 클라이언트에 유니캐스트로 전송하는 단계를 더 포함하는 서버 은닉 방법.
  14. 소프트웨어 정의 네트워킹 환경에서 동작하는 네임 서버에 있어서,
    임의의 클라이언트로부터 제 1 서비스 네임을 포함하는 가상 주소 요청이 수신되면, 상기 클라이언트의 식별 정보 및 상기 제 1 서비스 네임을 이용하여 상기 제 1 서비스 네임에 대응하는 제 1 은닉 서버의 가상 주소를 생성하는 가상 주소 생성부;
    상기 클라이언트의 식별 정보, 상기 제 1 서비스 네임 및 상기 제 1 은닉 서버의 가상 주소를 포함하는 호스트 관리 정보를 생성하는 호스트 관리부;
    은닉 서버의 서비스 네임을 하나 이상 포함하는 서비스 네임 목록 및 호스트 관리 정보를 저장하는 저장부;
    상기 서비스 네임 목록 및 상기 가상 주소를 상기 클라이언트에 전송하며, 상기 호스트 관리 정보를 컨트롤러에 전송하는 통신부를 포함하는 네임 서버.
  15. 제14항에 있어서,
    상기 호스트 관리 정보는 상기 클라이언트가 상기 네임 서버에 접속한 시각을 나타내는 접속 정보를 더 포함하고,
    상기 호스트 관리부는 상기 접속 정보를 이용하여 기 설정된 시간 동안 상기 클라이언트의 접속이 없는 것으로 판단되면 상기 호스트 관리 정보를 삭제하는 네임 서버.
  16. 제14항에 있어서,
    상기 호스트 관리 정보는 상기 클라이언트가 상기 네임 서버에 접속한 시간을 나타내는 접속 정보를 더 포함하고,
    상기 가상 주소 생성부는
    상기 접속 정보를 이용하여 상기 클라이언트의 기 접속 시각과 현재 접속 시각의 차이가 기 설정된 가상 주소 변경 주기 이내인지 판단하여 상기 차이가 상기 가상 주소 변경 주기보다 작으면 기 생성된 주소를 상기 제 1 은닉 서버의 가상 주소로 유지하고, 상기 차이가 상기 가상 주소 변경 주기보다 크면 새로운 주소를 상기 제 1 은닉 서버의 가상 주소로 생성하는 네임 서버.
  17. 제14항에 있어서,
    상기 호스트 관리 정보는 상기 클라이언트가 상기 네임 서버에 접속한 시간을 나타내는 접속 정보를 더 포함하고,
    상기 가상 주소 생성부는
    상기 접속 정보를 이용하여 상기 클라이언트의 기 접속 시각과 현재 접속 시각의 차이가 기 설정된 가상 주소 변경 주기 이내인지 판단하여 상기 차이가 상기 가상 주소 변경 주기보다 작으면 기 생성된 주소를 상기 제 1 은닉 서버의 가상 주소로 유지하고, 상기 차이가 상기 가상 주소 변경 주기보다 크면 새로운 주소를 상기 제 1 은닉 서버의 가상 주소로 생성하는 네임 서버.
  18. 소프트웨어 정의 네트워킹 환경에서 동작하는 컨트롤러에 있어서,
    임의의 네트워크 장비로부터 패킷-인 메시지를 수신하고, 하나 이상의 네트워크 장비에 플로우 룰을 전송하며, 가상 주소를 생성하는 네임 서버로부터 호스트 관리 정보를 수신하는 통신부;
    상기 네임 서버로부터 수신되는 호스트 관리 정보를 이용하여 매핑 정보를 생성하고, 상기 매핑 정보를 이용하여 플로우 룰을 생성하는 애플리케이션;
    상기 매핑 정보를 저장하는 저장부를 포함하며,
    상기 애플리케이션은,
    상기 네트워크 장비로부터 제 1 가상 주소를 목적지로 하는 패킷-인 메시지를 수신하면, 기 저장된 매핑 정보를 이용하여 상기 제 1 가상 주소에 대응되는 은닉 서버의 실제 주소를 확인하는 주소 매핑부;
    상기 실제 주소를 이용하여 상기 패킷-인 메시지에 대응되는 패킷의 경로를 계산하고 경로 계산부;
    상기 제 1 가상 주소를 포함하며, 상기 계산된 경로에 따라 상기 패킷의 처리를 정의하는 플로우 룰을 생성하는 플로우 룰 생성부를 포함하며,
    상기 매핑 정보는 상기 호스트 관리 정보에 의해 갱신되며, 은닉 서버의 가상 주소를 요청한 클라이언트의 식별 정보, 상기 은닉 서버의 서비스 네임에 대응하는 상기 은닉 서버의 실제 주소, 및 상기 은닉 서버의 가상 주소를 포함하는 컨트롤러.
  19. 제1항 내지 제13항의 방법 중 어느 하나의 방법을 실행시키기 위하여 컴퓨터 판독 가능 매체에 저장된 서버 은닉 애플리케이션.
KR1020170066846A 2017-05-30 2017-05-30 소프트웨어 정의 네트워킹 환경에서의 서버 은닉 방법, 시스템 및 컴퓨터 프로그램 Active KR101993875B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170066846A KR101993875B1 (ko) 2017-05-30 2017-05-30 소프트웨어 정의 네트워킹 환경에서의 서버 은닉 방법, 시스템 및 컴퓨터 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170066846A KR101993875B1 (ko) 2017-05-30 2017-05-30 소프트웨어 정의 네트워킹 환경에서의 서버 은닉 방법, 시스템 및 컴퓨터 프로그램

Publications (2)

Publication Number Publication Date
KR20180130802A true KR20180130802A (ko) 2018-12-10
KR101993875B1 KR101993875B1 (ko) 2019-06-27

Family

ID=64670422

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170066846A Active KR101993875B1 (ko) 2017-05-30 2017-05-30 소프트웨어 정의 네트워킹 환경에서의 서버 은닉 방법, 시스템 및 컴퓨터 프로그램

Country Status (1)

Country Link
KR (1) KR101993875B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210131501A (ko) * 2020-04-23 2021-11-03 스콥정보통신 주식회사 호스트 관리 방법 및 이를 수행하는 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150046675A (ko) * 2013-10-22 2015-04-30 에스케이텔레콤 주식회사 Ip 네트워크를 통해 웹사이트에 접속하는 단말기 및 단말기의 웹사이트 접속 시간 단축 방법
US20150350154A1 (en) * 2014-06-03 2015-12-03 John Myla Using Distributed Network Elements to Send Authoritative DNS Responses
KR101710385B1 (ko) * 2015-10-12 2017-02-27 아토리서치(주) Arp 패킷을 관리하는 방법, 장치 및 컴퓨터 프로그램

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150046675A (ko) * 2013-10-22 2015-04-30 에스케이텔레콤 주식회사 Ip 네트워크를 통해 웹사이트에 접속하는 단말기 및 단말기의 웹사이트 접속 시간 단축 방법
US20150350154A1 (en) * 2014-06-03 2015-12-03 John Myla Using Distributed Network Elements to Send Authoritative DNS Responses
KR101710385B1 (ko) * 2015-10-12 2017-02-27 아토리서치(주) Arp 패킷을 관리하는 방법, 장치 및 컴퓨터 프로그램

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210131501A (ko) * 2020-04-23 2021-11-03 스콥정보통신 주식회사 호스트 관리 방법 및 이를 수행하는 시스템

Also Published As

Publication number Publication date
KR101993875B1 (ko) 2019-06-27

Similar Documents

Publication Publication Date Title
US7590733B2 (en) Dynamic address assignment for access control on DHCP networks
KR101861201B1 (ko) 소프트웨어 정의 네트워킹에서의 서버 은닉 방법, 시스템 및 컴퓨터 프로그램
US9363207B2 (en) Private virtual local area network isolation
KR100437169B1 (ko) 네트워크 트래픽 흐름 제어 시스템
US6684243B1 (en) Method for assigning a dual IP address to a workstation attached on an IP data transmission network
US11108738B2 (en) Communication apparatus and communication system
CN109525601B (zh) 内网中终端间的横向流量隔离方法和装置
CN109347784B (zh) 终端准入控制方法、控制器、管控设备及系统
US9794154B2 (en) Selective IP address allocation for probes that do not have assigned IP addresses
WO2018050007A1 (zh) 用户终端访问本地网络的方法和装置和计算机存储介质
CN102132532A (zh) 用于避免不需要的数据分组的方法和装置
US5845087A (en) Internetwork zone name filtering with selective placebo zone name substitution in a response to a request for zone name information
KR101922795B1 (ko) 사물인터넷 서비스 제공 장치 및 그 방법
KR102136082B1 (ko) 서버 장치, 클라이언트 장치 및 네트워크 주소 변이 기반 통신 방법
CN106027491B (zh) 基于隔离ip地址的独立链路式通信处理方法和系统
KR101786620B1 (ko) 소프트웨어 정의 네트워크에서 서브넷을 지원하는 방법, 장치 및 컴퓨터 프로그램
KR101993875B1 (ko) 소프트웨어 정의 네트워킹 환경에서의 서버 은닉 방법, 시스템 및 컴퓨터 프로그램
CN113853776B (zh) 用于网络架构的方法、系统和计算机可读介质
KR101703491B1 (ko) 클라우드 시스템의 보안 서비스 제공방법 및 그 클라우드 시스템
KR102246290B1 (ko) 소프트웨어 정의 네트워크 기반 망 분리 방법, 장치 및 컴퓨터 프로그램
CN114465745B (zh) 一种基于虚拟网络的网络拓扑混淆虚拟装置及虚拟方法
KR102019210B1 (ko) 소프트웨어 정의 네트워크에서 호스트를 관리하는 방법, 장치 및 컴퓨터 프로그램
JP4094485B2 (ja) ユーザ端末の接続制御方法および接続制御サーバ
KR20050029800A (ko) 네트워크 접속 제어 방법
CN115514501B (zh) 一种封堵网络攻击的方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20170530

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20190121

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20190621

PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20190621

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20190621

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20220331

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20240201

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20250331

Start annual number: 7

End annual number: 7