메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

IDS Reloaded - 침입 탐지 시스템의 모든 것 I

한빛미디어

|

2003-08-19

|

by HANBIT

18,356

저자: 강유(SecurityMap, CTO)

올 초에 있었던 MSN 웜의 기억이 잊혀질 때쯤 되서 다시 블라스터 웜이 나타나서 많은 사람을 놀라게 하고 있습니다. 항상 사람들에게 긴장을 늦추지 않게 한다는 점이 보안의 매력중 하나가 아닐까 하는 조금 엉뚱한 생각을 해 봅니다.

유명한 보안 전문가이자 "비밀과 거짓말(Secret and Lies)" 이라는 책의 저자인 브루스 슈나이어 박사는 "보안은 프로세스다" 라는 말을 했습니다. 이 말은 보안을 해결하기 위한 완벽한 솔루션은 존재하지 않으며, 끊임없이 관리/모니터링을 해야만 완벽한 보안에 가까워질 수 있다는 것을 의미합니다. 예를 들어, 회사의 네트워크를 보호하기 위해 방화벽을 설치했다고 합시다. 하지만 많은 사람들의 예상과 달리 방화벽은 그리 완전하지 않습니다. 방화벽이 있는 많은 회사에서 보안 사고가 끊임없이 일어나고 있는 것을 보면 이 사실을 확인할 수 있습니다.

보안은 크게 4 단계의 절차(프로세스)로 나눌 수 있습니다. 그것은 바로 예방-탐지-대응-포렌식의 과정입니다.
  • 예방: 공격을 미리 막는 조치를 의미합니다. 예방을 위한 대표적인 제품이 방화벽(firewall) 입니다.
  • 탐지: 예방을 했다 하더라도 그 예방 조치를 뚫고 들어오는 공격자가 있게 마련입니다. 탐지는 이러한 공격자를 모니터링하는 일을 의미합니다. 탐지를 위한 대표적인 제품이 침입 탐지 시스템(IDS) 입니다.
  • 대응: 예방과 탐지를 했음에도 불구하고 공격을 당할 경우가 있습니다. 이 때 공격자를 찾아내고 공격자에게 e-mail을 보내거나 공격자로부터 오는 패킷을 막는 행위를 "대응" 이라고 합니다.
  • 포렌식: 포렌식은 공격 당한 컴퓨터의 증거를 보존하고 수집하는 절차입니다. 포렌식의 목적은 재판의 증거물을 만드는 것이기 때문에 일반 범죄의 증거수집 규칙을 지켜서 컴퓨터 증거를 수집해야 합니다.

오픈소스 IDS 구축 및 최적화 전략 세미나
[e한빛.넷 오프라인] 2003년 8월 30일(토) 14:00~18:00 비트교육센터
오픈소스 IDS 구축 및 최적화 전략: Snort 2.0을 중심으로



이 기사의 주제인 침입 탐지 시스템이 바로 위 4개 중에서 "탐지" 에 속합니다. 침입 탐지 시스템(Intrusion Detection System, IDS)은 도난 경보와 유사한 컴퓨터 기술입니다. 즉, 대문을 열쇠로 잠근 집에서도 감시 카메라로 도둑을 모니터링하는 것처럼 방화벽으로 보호한 네트워크의 감시 카메라 역할을 하는 것이 침입 탐지 시스템입니다.

기술적으로 설명하면 IDS는 라우터, 방화벽, 서버, 기타 네트워크 장치의 로그 파일 내용을 읽고 해석할 수 있는 특수 도구입니다. IDS는 기존에 알려진 공격 서명 데이터베이스를 저장하고 있다가 로그 파일에서 관찰한 행위나 트래픽을 이 서명과 비교하여 유사점이 있는지 확인합니다. 서명과 일치하는 행위를 찾았으면 IDS는 경고나 경보를 발생 시킬 수 있고, 인터넷 연결을 끊는 것부터 역추적을 하는 것까지 다양한 프로그램을 실행시킬 수 있으며, 공격자를 찾아내기 위한 기타 작업을 수행하고 능동적으로 공격 증거를 수집할 수 있습니다.

IDS는 바이러스 백신과 유사한 면이 많습니다. 바이러스 백신이 로컬 시스템의 파일에서 악성 코드를 찾아내듯이 IDS도 네트워크 트래픽에 기존에 알려진 악성 코드가 들어 있는지 찾아냅니다(이런 방식으로 동작하는 IDS를 서명-기반 IDS라고 합니다. 이와 다른 방식의 IDS에는 일반적인 상황이 아닌 모든 상황을 공격으로 간주하는 비정상-기반 IDS가 있습니다). 방화벽과 마찬가지로, IDS는 소프트웨어 기반으로 동작하거나 소프트웨어와 하드웨어가 결합된 형태(단독 IDS 장치에 소프트웨어가 미리 설치되거나 설정된 형태)로 동작합니다.

IDS는 모니터링하는 시스템과 방식에 따라 크게 세 가지로 분류할 수 있습니다. 먼저 네트워크 백본을 모니터링하여 공격을 찾는 IDS를 네트워크-기반 IDS라고 하고, 로컬 호스트의 운영 체제와 파일 시스템에서 공격을 찾는 IDS를 호스트-기반 IDS라고 합니다. 그리고 여러 원격지 센서가 중앙 관리 스테이션에 정보를 보내는 형태의 IDS를 분산 IDS(Distributed IDS, DIDS)라고 합니다.

문자 그대로 현재 수백개(국내는 10~20개) 의 IDS가 나와 있습니다. 이들 IDS 중에서 전 세계적으로 가장 많은 사용자를 갖고 있는 것이 Snort 입니다. Snort는 대표적인 오픈-소스 IDS로서 1998년 11월에 Marty Roesch가 처음 만들었습니다.

그러면 Snort에 대한 좀더 자세한 내용은 다음 기사에서 설명하겠습니다. 저자: 강유(SecurityMap, CTO)

IDS Reloaded - 침입 탐지 시스템의 모든 것 두 번째 이야기에 들어가기 전에 요즘 논란이 되고 있는 IDS와 IPS간의 관계를 간단히 살펴보고 들어가겠습니다.
IDS 인가 IPS 인가?

요즘 IDS가 아닌 IPS(Intrusion Prevention System, 침입 방지 시스템)가 사람들의 주목을 받고 있습니다. 많은 사람들이 IDS와 IPS의 차이가 무엇인지, IPS가 나오면 IDS는 쓸모없는 것이 아닌지에 대한 질문을 합니다. 그 질문에 대한 답을 해 드리겠습니다.

먼저 IPS는 IDS에 능동적인 대응 기능을 넣은 프로그램입니다. 즉 IDS가 침입을 발견하는 일을 한다면 IPS는 그 침입 결과를 바탕으로 뭔가 침입을 막기 위한 행동을 더 한다는 얘기입니다. 즉, IPS가 IDS보다 좀더 강력한 기능을 제공한다는 주장이지요. 그렇지만 사실 IPS는 아직 표준이 명확히 정의되지 않았습니다. 그래서 각 회사에서 나오는 IPS의 기능 및 구현이 매우 다르며, 서로 전혀 다른 얘기를 하는 경우도 많습니다. 외국의 어떤 보안 전문가는 IPS가 단지 말장난에 불과한 것이라고 주장하기도 합니다.

사실, IDS도 일부 대응 기능을 가지고 있습니다. 예를 들어, Snort는 공격 세션의 TCP 연결을 끊는 기능을 제공합니다. Snort의 이런 기능과 실시간 로그 분석 기법을 결합하면 IPS의 기능을 구현하는 것도 어려운 일이 아닙니다. 그렇기 때문에 IPS가 나온다고 해서 기존의 IDS가 없어지는 것은 전혀 사실이 아닙니다. 만약, IPS가 기존 IDS의 패턴-매칭 비교 방식이나 비정상-기반 비교 방식을 뛰어넘은 획기적인 방식으로 표준화 된다면 IDS를 대체할 수 있겠지만 아직은 IDS에 기반한 기초적인 수준이기 때문에 앞으로 상당 기간 동안 IDS와 IPS는 공존할 것입니다.
그러면 다시 본 얘기로 들어가겠습니다. 지난 글에서 예고한 대로 이번 글에서는 여러분들에게 Snort를 소개하고자 합니다. Snort 는 아마도 오픈 소스 소프트웨어라는 면에서 가장 많이 알려졌을 것입니다. 하지만 Snort의 진정한 강점은 결코 상업용에 뒤지지 않는 뛰어난 기능을 갖춘 IDS라는데 있습니다. Snort는 원래 패킷 스니퍼로 쓸 목적으로 만든 프로그램입니다. 1998년 11월, Marty Roesch는 자신이 사용하던 TCPDump 프로그램의 몇 가지 단점을 보완한 APE라는 리눅스 전용 패킷 스니퍼를 만들었습니다. 그리고 1998년 12월, Packet Storm 사이트에 Snort라는 이름으로 이 패킷 스니퍼를 사람들에게 공개했습니다. 이때 Snort 소스 코드는 1600줄이었습니다.

Snort에 처음으로 서명-기반 분석 기능이 추가된 것은 1999년 1월이었습니다. 이때부터 비로소 Snort는 침입 탐지 시스템의 길을 걷기 시작했으며 그 당시 Snort는 경량 IDS로 쓰일 수 있었습니다. 그 뒤 1999년 12월에 나온 Snort 1.5부터 오늘날의 Snort 구조의 근간이 되는 플러그-인 구조를 사용하기 시작했고, 마침내 2003년 4월 Snort 2.0이 나왔습니다. 현재 최신 버전인 2.0은 약 75,000 줄의 코드로 작성됐으며, Marty가 만든 회사인 Sourcefire에서 만들었습니다. Sourcefire는 Snort의 상업용 버전을 만드는 회사이지만 앞으로도 계속 오픈 소스(GNU) 버전의 Snort를 발표할 계획입니다.

Snort는 스니퍼, 전처리기, 탐지 엔진, 출력 모듈의 4 가지 구성 요소로 이뤄져 있습니다.
  • 스니퍼 스니퍼(sniffer) 또는 패킷 스니퍼는 네트워크에서 데이터를 수집하는 소프트웨어나 하드웨어를 의미합니다. Snort는 원래 스니퍼 용도로 만든 프로그램이기 때문에 기본적으로 네트워크를 돌아다니는 패킷을 잡아낼 수 있습니다.
  • 전처리기(preprocessor) 스니퍼에서 캡처한 네트워크 패킷은 전처리기로 이동합니다. Snort의 전처리기는 패킷을 탐지 엔진에서 비교하기 전에 사전 처리 작업을 해 주는 역할을 합니다. 예를 들어, stream 전처리기는 여러 TCP 패킷을 하나로 모음으로써 여러 패킷에 걸친 공격을 잡아내는 역할을 합니다. Snort의 다른 부분과 마찬가지로 전처리기도 플러그-인 방식으로 되어 있습니다. 플러그-인 방식의 장점은 그때그때 필요한 플러그-인을 추가하거나 삭제하기가 쉽기 때문에 훨씬 유연한 소프트웨어를 운영할 수 있다는데 있습니다.
  • 탐지 엔진 탐지 엔진은 Snort의 핵심 모듈로서 패킷과 규칙을 비교하여, 패킷에 해당하는 규칙이 있을 경우 경고를 발생합니다. Snort의 규칙은 Snort에서 가장 중요한 부분으로 Snort에는 나름대로 규칙 문법이 있습니다. 규칙 문법은 프로토콜의 종류, 컨텐트, 길이, 헤더, 기타 여러 요소(버퍼 오버플로우를 정의하기 위한 쓰레기 문자 등)를 포함하고 있습니다. 규칙을 잘 설정하면 Snort를 자신의 환경에 맞게 커스터마이징하는 것이 가능한 것입니다.
  • 출력 모듈 Snort가 발생시킨 경고는 출력 모듈로 전송됩니다. 출력 모듈도 플러그-인 구조로 되어 있으며, 현재 Snort는 로그 파일, 네트워크 연결, UNIX 소켓 또는 윈도우 팝업(SMB), 또는 SNMP 트랩, MySQL과 Postgres와 같은 SQL 데이터베이스로 경고를 보낼 수 있습니다. 그리고 Snort의 경고를 분석하기 위한 여러 툴이 나와 있습니다. 그 중 대표적인 툴로 SnortSnarf와 Swatch, ACID 등을 들 수 있습니다.
그러면 Snort에서 실제로 사용하는 규칙의 예를 들어서 Snort의 규칙과 침입 탐지 기능을 살펴봅시다. 다음은 Code Red 웜을 잡기 위한 규칙 중 하나입니다.
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS 
  (msg:"WEB-IIS ISAPI .ida attempt"; flow:to_server,established; 
  uricontent:".ida?"; nocase; reference:arachnids,552; 
  classtype:web-application-attack; reference:bugtraq,1065; 
  reference:cve,CAN-2000-0071; sid:1243; rev:8;)
위 규칙은 외부 네트워크에서 내부 네트워크의 HTTP 포트로 오는 패킷 중에서 ".ida?" 라는 컨텐트를 포함한 모든 패킷에 대해 경고를 발생시킵니다. 규칙은 많은 옵션이 있지만, 위 규칙에서 중요한 것은 uricontent:".ida?"라는 규칙 옵션입니다. 이것은 패킷에 들어 있는 URI에서 찾을 패턴을 지정합니다. Snort를 잘 사용하기 위해서는 Snort 자체의 동작 방식과 규칙도 잘 이해해야 하지만 Snort를 어디에 어떻게 설치해야 하는지, Snort에서 얻은 결과를 어떻게 분석할지도 잘 알아야 합니다. IDS를 설치하는 방법은 여러 가지가 있지만 가장 전형적인 환경은 다음과 같습니다.

위 그림은 스크리닝 라우터와 방화벽, DMZ를 갖춘 전형적인 기업 네트워크의 구조입니다. 위 그림에서 IDS는 각 네트워크 세그먼트에 위치해서 공격을 모니터링하고 있습니다.

이상으로 Snort 와 IDS에 대해 알아보았습니다. 더 자세한 내용은 세미나 때 설명할 것을 약속 드리며 다음 글에서는 강의의 세부적인 내용을 말씀 드리겠습니다.

관련기사 보기
IDS Reloaded - 침입 탐지 시스템의 모든 것 I
IDS Reloaded - 침입 탐지 시스템의 모든 것 II
IDS Reloaded - 침입 탐지 시스템의 모든 것 III
TAG :
댓글 입력
자료실