IDS 인가 IPS 인가?그러면 다시 본 얘기로 들어가겠습니다. 지난 글에서 예고한 대로 이번 글에서는 여러분들에게 Snort를 소개하고자 합니다. Snort 는 아마도 오픈 소스 소프트웨어라는 면에서 가장 많이 알려졌을 것입니다. 하지만 Snort의 진정한 강점은 결코 상업용에 뒤지지 않는 뛰어난 기능을 갖춘 IDS라는데 있습니다. Snort는 원래 패킷 스니퍼로 쓸 목적으로 만든 프로그램입니다. 1998년 11월, Marty Roesch는 자신이 사용하던 TCPDump 프로그램의 몇 가지 단점을 보완한 APE라는 리눅스 전용 패킷 스니퍼를 만들었습니다. 그리고 1998년 12월, Packet Storm 사이트에 Snort라는 이름으로 이 패킷 스니퍼를 사람들에게 공개했습니다. 이때 Snort 소스 코드는 1600줄이었습니다.
요즘 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는 공존할 것입니다.
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는 각 네트워크 세그먼트에 위치해서 공격을 모니터링하고 있습니다.
이전 글 : IDS Reloaded - 침입 탐지 시스템의 모든 것 I
다음 글 : 자바 스윙: 메뉴와 툴바 - 제 7편
최신 콘텐츠