To Design A Virtual Ids With Machinelearning 1

2018-06-26

안녕하세요. MadHat팀의 Koon입니다. 저는 3월부터 ~ 5월 말까지 약 2개월 동안 진행한 “가상 IDS 설계” 프로젝트에 대해서 알게된 지식들을 제가 경험한 절차에 맞게 소개하려합니다.

사전 지식

  • IDS, IPS

IDS는 침입 탐지 시스템으로서, 컴퓨터 또는 네트워크에서 발생하는 이벤트들을 모니터링하고, 침입 발생 여부를 탐지하는 자동화된 시스템을 의미합니다.

IDS에 대해 알았으니, 같이 언급되는 IPS에 대해 알아봅시다.

IPS는 Instrusion Prevent System, 길게 말할 필요 없이 탐지 시스템인 IDS에 추가적으로 차단하는 기능이 합쳐진 것이라 생각하시면 됩니다.

IDS 내부 탐지 시스템
IPS 내부 탐지 시스템 + 후 처리 기능 => 내부 방지 시스템
  • Virtual

가상화, 물리적인 컴퓨터의 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호작용하는 방식으로부터 감추는 기술로 정의 할 수 있습니다.

마치 자신(각 사용자들)이 그 자원을 독점하고 있다고 생각이 들게 끔하는 것!

  • 하이퍼바이저

하이퍼 바이저, 프로세서나 메모리와 같은 다양한 컴퓨터 자원에 서로 다른 각종 운영체제 접근 방법을 통제하는 얇은 계층의 소프트웨어 입니다.

다수의 OS를 하나의 컴퓨터 시스템에서 가동할 수 있게 하는 소프트웨어

OS간 서로 방해하지 못하도록 VM에 대한 자원 및 메모리 할당, 처리 등을 보장해줍니다.(고립화 보장)

종류 하드웨어에 직접 설치되어 여러 개의 OS 운용

운영체제가 프로그램을 제어하듯이 하이퍼 바이저가 해당 하드웨어에서 직접 실행

EX) XEN, KVM, VMware의 ESXi, MS의 Hyper-V

장점

호스트 os가 없어 리소스 할당하지 않아도 되며, 오버헤드가 적다.

하드웨어 상에서 바로 동작하는 형태로 고성능

단점

자체적인 관리기능 갖고 있지 않아, 별도의 관리 콘솔 및 컴퓨터 필요

기존의 OS(호스트 운영체제 환경)에서 실행되는 소프트웨어 응용프로그램

물리적 컴퓨터 위에 OS를 설치하고 그 위에 하이퍼바이저를 설치하는 구조

Vmware Workstation, VMware Fusion, Oracle VirtualBox, QEMU, Parallels Desktop

장점

게스트 os의 종류에 제약이 적고, 손쉽게 도입가능

하나이상의 하이퍼바이저 설치 가능

여러 OS 설치 가능

단점

네이티브방식 에 비해 오버헤드 크다.

하이퍼 바이저 이용한 하드웨어 가상화(전가상화/반가상화), OS레벨 가상화 존재

가상화 방법
전가상화
장점

게스트 OS에 아무런 수정 없이 이용 가능 ( 다양한 os 활용 가능)

단점

물리적인 가상화의 지원 기능 필요 (특정 cpu 필요)

ex) vmware ESX, Hyper- V

반가상화

장점

높은 퍼포먼스 유지

단점

반가상화를 실현하기 위해서는 게스트 os의 커널 일부를 수정해야한다.

이용할 수 있는 게스트 os는 오픈소스에 한정

사전 지식에 대해 알게 되었다.

이제 우리가 만들 IDS가 작동할 환경에 대해서 생각하여야 한다.

보통의 IDS나 IPS의 경우, 네트워크 환경 및 내부 환경이 미리 구성되어져, 그 환경에 맞추어 IDS, IPS를 세팅하지만, 우리는 이러한 환경 자체가 없기 때문에, 미리 상황을 가정하여 구성하도록 한다.

환경 구성

위에서 간단히 말했다 시피, 우리가 사용할 IDS를 테스트하고, 사용 할 수 있는 공간이 마련되어야 한다.

  • 전체(가상환경)

전체적인 가상 환경적인 측면에서 보면, Host OS 위에 하이퍼 바이저를 올리고, 그 하이퍼 바이저를 통해 GUEST OS의 동작을 관리할 것입니다.

이렇게 구성하는 이유는

HOST OS에서 관리하는 하이퍼바이저 위에 있는 OS에 문제가 생겼을 경우(DDos 공격을 받거나, 등), 그것에 대해 관리 할 수 있는 IDS를 설계하는 것이 목적이다.

이를 확장 시키면, 클라우드 환경에서 제공하는 서버(우리가 흔히 아는 아마존, 토스트 등)에서 문제가 발생하면, 이것을 어떻게 탐지하고, 관리할 수 있는지 알 수 있을 것입니다.

  • 전체(네트워크)

HOST OS 자체가 커다란 클라우드 라고 생각을 하면되고, 그 안의 VM이 각각의 서버라고 생각하면 됩니다.

다만 관리하기 위해 각 VM으로 통하는 네트워크는 HOST OS를 거치고, 그 HOST OS가 관리하고 있는 Virtual Switch를 지나 VM으로 통하게 해놓는다.

이는 네트워크의 흐름 및 패킷을 보며. 그 안의 정보를 이용하기 위함이다.

  • Host OS

OS는 우분투, 버전은 상관 없으며, 각 오픈 소스(OVs) 및 기능상 실제로 네트워크 환경을 설정 해주어야 하는 곳, IDS 코드 또한 여기서 동작하며,Hypervisor 또한 여기서 동작 그리고 모든 GUEST OS의 정보를 받아 그 정보를 활용하는 곳

  • Hypervisor

호스티드 방식으로 사용할 예정이며, 전가상화 방식 이용

호스티드 방식으로 사용하는 이유는 OS를 설치하고 그위에 하이퍼바이저를 설치하는 형식으로, OS의 제약이 적고, 사용하기 쉽다. 또한 여러 하이퍼 바이저를 사용할 수 있기 때문에, 입맛에 맞게 고를 수 있다.

전가상화 방식을 사용하는 이유는 반가상화 방식은 커널을 수정해야 하는데, 커널에 대한 지식이 없기 때문에… 패스

  • Guest OS

딱히 특정 os를 써야하는 이유는 없지만, 편의상 우분투를 사용하겠다. (그렇지만 굳이 우분투 사용할 필요 없다. 윈도우 사용해도 되고, 다른 OS 사용해도 된다.)

기초 지식 / 환경 구성 / 동작 원리 / 설 계 / 성능 및 결과 이렇게 나눠서 쓸려했는데 하나로는 빡세서 추후 “2”로 만들겠습니다.