IT 그리고 정보보안/Knowledge base

침입 차단 시스템(IPS) 그리고 Snort

plummmm 2021. 4. 19. 07:50
반응형

IDS/IPS에 대해 알아보자. 이름 그대로 외부의 침입을 탐지하거나 차단하는 시스템이다.

KISA에서는 IDS/IPS를 이렇게 정의한다.

 

사용자 및 외부침입자가 컴퓨터 시스템, 네트워크 자원을 권한 없이 불법으로 사용하기 위한 시도 

또는 내부사용자가 권한을 오용하여 권한 이외의 자원을 사용하기 위한 시도를 탐지하여 그 피해를 

최소화하는 시스템.

 

라고 한다.. 보통은 방화벽과 함께 사용한다.

방화벽과의 가장 큰 차이점은, 방화벽은 일정한 규칙에 의해 아예 접근을 차단하는 것이고

IDS는 직접 차단하는 기능이 없고 탐지하여 경고를 해주는 기능을 한다.

IPS 같은 경우는 차단을 하지만 L7까지 볼 수 있다.

 

IPS는 능동적인 기능을 많이 탑재한 IDS라고 볼 수 있다.

구성을 어떻게 하냐, 기능을 쓰냐 안쓰냐 차이지, IDS와 IPS는 거의 차이가 없다고 보며 된다.

 

 

 

IDS/IPS의 기능을 살펴보자면,

1. 시스템 자원의 보호 및 정보 유출 방지

2. 공격대응 및 복구, 증거 수집 및 역추적 가능

3. 기록 및 통계적인 상황 분석 보고

4. 보안 정책에 대한 검증 제공

 

위 기능들이 크게 4가지 단계로 이루어진다.

정보수집 -> 정보가공 및 축약 -> 침입분석 및 탐지 -> 보고 및 조치

 

IDS/IPS는 목적, 대응 방법 등에 따라 여러가지 종류로 나뉜다.

 

* 데이터 소스 기준 시스템 분류

1. 호스트 기반 IDS/IPS

각 호스트 내에서 OS 감사자료와 시스템 로그 분석, 프로세스 모니터링을 통해 침입탐지하는 시스템.

시스템 로그보다 자세하지만 가독성이 떨어진다.

요즘은 HIDS같은 경우 사용되지 않는다. 제품으로 나오지도 않고.

- 장점 : 암호화 세션, 스위치 환경에서도 식별 가능 / 로컬BOF 탐지 가능 / 하드웨어가 필요없어 비용싸다.

- 단점 : CUP 점유 / 네트워크 스캔은 탐지못함 / OS 자체가 취약하면 무결성 보장 안됨.

 

2. 네트워크 기반 IDS/IPS

Promiscuous mode 로 동작하는 NIC를 통해 패킷 캡쳐 후, 분석을 통해 침입탐지하는 시스템.

네트워크 세그먼트의 모든 패킷을 감시하고 독립된 서버에 설치한다.

이게 보통 많이 쓰는 IDS. 스위치에 포트 미러링으로 달아놓는다.

- 장점 : 호스트의 성능에 영향X / OS 독립적 / 실시간 대응이 가능 / 기존 네트워크 환경 변화시킬 필요없음

- 단점 : 트래픽에 영향 받음 / 암호화 세션 분석 불가능 / 공격의 성공, 실패여부 식별 못함.

 

3. 하이브리드 IDS/IPS

호스트와 네트워크 IDS를 결합시킨 형태다.

 

 

* 침입탐지 방법에 따른 분류

1. 오용 탐지

알려진 침입행위를 탐지하는 것. 즉, 정해진 공격 모델과 일치하면 침입으로 간주하는 방법.

시그니쳐 베이스라고 보면된다. 

Expert system / State transition analysis / Key stroke Monitoring / Model Based Approach 등이 있다.

- 장점 : 오탐률 낮음 / 침입에 사용된 도구, 기술 분석 가능 / 신속함.

- 단점 : 다양한 우회가능성 / 새로운 유형 탐지 못함 / 안티바이러스와 유사 / 오탐을 줄이기 위해 세밀한 정의

 

2. 비정상행위 탐지

비정상적인 행위나 CPU를 사용하는 것을 탐지하는 방법. 정해진 모델을 벗어나는 경우 침입으로 간주.

Statistical approach / Predictive pattern modeling AI / neural network 등이 있다.

- 장점 : 새로운 침입유형 탐지 가능 / 특정침입이 아닌 '정상이 아님' 으로 탐지

- 단점 : 정상적인 행위를 예측 힘들어 / 방대한 사용자 네트워크에 대한 학습 필요 / 오탐율 높음

 

 

대표적으로 사용되는 룰 기반의 IPS인 Snort에 대하여 간단하게 알아보자.

오픈소스니까 http://www.snort.org 여기 가면 쉽게 구할 수 있다.

 

스노트에 대해 자세히 공부하려면 또 책한권 가까이 나오니까. 

자주 사용되는 명령어 및 활용에 대해서만 간단하게 알아봅시다.

 

룰 기반이라고 하였는데, 내가 정한 룰대로 snort가 탐지 활동을 하는 것이다.

iptables 와 비슷하다고 생각해도 무방하다.

 

이 룰(rule)은 'rule header' 와 'rule option' 으로 구성돼있다. 하나씩 알아보자.

 

1. 룰 헤더 (Rule header)

헤더 부분은 '어떻게?', '뭘?', '어디서 어디로?' 이 항목들이 들어가 있다.

즉, 처리방법(Action), 프로토콜(Protocol), 송신지/수신지 주소 로 이루어졌다 이말이야.

 

e.g.) alert tcp 1.1.1.1/24 any -> 2.2.2.2/24 any

 

대충 저렇게 쓰인다고 생각하면 된다. (ip 뒤에는 포트)

맨 앞 alert 부분이 처리방법인데, 몇가지 종류가 있으니 표로 정리해보자..

 

 

앞 부분에 위와 같은 처리방법(action)이 올 수 있다.

그 뒤에는 그냥 프로토콜, 주소, 패킷 방향 등이니 따로 설명이 필요 없을 듯 하다.

 

 

2. 룰 옵션 (Rule Option)

룰 옵션은 룰 헤더 뒤에 ( ) 안에 정의된 내용이다. ;(세미콜론)으로 옵션 내용을 구분한다.

 

e.g.) alert tcp 1.1.1.1/24 any -> 2.2.2.2/24 any (msg : "HTTP GET FLOODING"; content: "GET / HTTP/1."; nocase;)

 

뒤에 빨간색 색칠돼있는 부분이 옵션부분이다. 뭐 알 수 없는 msg, content 이런 말들이 나오는데

아래 표에 사용되는 옵션에 대해 알아보자.

 

 

기본 옵션은 위와 같은 것들이 있고, Event Thresholding (이벤트 제한) 을 위한 옵션이 있다.

사실 이벤트 제한 옵션이 snort의 핵심이라고 할 수 있음.

특정 시간동안 발생되는 이벤트의 수를 제한하는 것이다.

 

format은 이러하다.

threshold type <limit | threshold | both>, track <by_src | by_dst> count <s>, seconds <m>

 

* type

- limit : 매 m초 동안 s번째 이벤트까지 action 수행

- threshold : 매 m초 동안 s번째 이벤트마다 action 수행

- both : 매 m초 동안 s번째 이벤트 시 한번 action 수행

 

* track

- by_src : 송신 ip 기준으로 추적

- by_dst : 수신 ip 기준으로 추적

 

* count / seconds : 횟수/시간

 

이제 다 알아봤으니까 예를 하나 들어서 마무리 짓자.

alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "HTTP GET FLOODING"; content: "GET / HTTP/1."; nocase;

depth : 13; sid:1000003; threshold:type threshold, track by_dst, count 10, seconds 1;)

 

이벤트 이름은 "HTTP GET FLOODING" 이다.

"외부에서 내부로 들어오는 패킷들 중 *GET/HTTP/1." 문자열을 포함하는 페이로드를 대소문자 구분없이 13만큼 검색하여 이 패킷이 1초에 10번일어난다면 ALERT 액션을 수행하는 것이다. 

반응형