반응형

오늘은 네트워크를 공부해볼 것이다.

유명 오픈소스 IDSSuricata(수리카타)에 대해 공부해보자.


1. Snort? Suricata?

본 주제에 들어가기 전에 Snort부터 이야기를 해보려고 한다.

Snort(스노트)는 sourcefile사에서 만든 오픈소스 IDS(Intrusion Detection System)

실시간 트래픽을 분석하거나 패킷 로깅 용도로 오랫동안 사랑 받아왔다.

또, 그동안의 수많은 개발자들에 의한 rule을 제공받을 수 있고 다양한 OS를 지원한다.

그러나 Snort에도 단점이 존재했는데, 그건 바로 단일-스레드 처리방식이었다.

시간이 지날 수록 처리해야 할 트래픽은 늘어가지만

단일-스레드 방식으로 이 모든 데이터를 처리하기엔 한계가 있었다.

 

그래서 해당 단점을 보완하고자, Suricata가 등장한다.

Suricata(수리카타) 역시 오픈소스 IDS(Intrusion Detection System)이다.

Snort를 발전시킨 만큼, Snort 룰이 호환되어 사용 가능하다.

무엇보다 멀티 코어와 멀티-스레드 처리방식으로 데이터를 처리할 수 있어서

현재도 많은 사랑을 받고있다.

뿐만 아니라 하드웨어(GPU) 가속 역시 지원하기 때문에 큰 기업에서도 많이 사용한다.

 

아래는 Snort와 Suricata에 대한 비교 사진이다.

출저 :  http://wiki.aanval.com/wiki/Snort_vs_Suricata



2. Suricata - 설치

리눅스Suricata를 설치해보자.

 

기존엔 복잡한 방법으로 설치하였으나 최근엔 쉽게 설치가 가능하다.

우선 본인은 기존에 설치되어 있는 OS인 Kali linux 5.3.0버전에서 진행하였다(참고로 Kali에서 실습하는건 추천하지 않는다).

 

1. (sudo)apt-get install suricata 명령어로 설치(본인은 이미 설치가 되어있음)

 

2. suricata 명령어로 실행 확인



3. Suricata - rule 생성

80 포트(HTTP)와 443 포트(HTTPS)를 사용하는 두가지 사이트에 대한 필터링 룰을 생성해보겠다.

1. suri.rules 파일을 생성한다.

2. 해당 파일에 문법에 맞게 rule을 작성한다. > 문법은 https://suricata.readthedocs.io/en/suricata-4.1.4/rules/intro.html 참고

alert tcp any any -> any 80 (msg:"80site.com Access"; content:"GET /"; content:"Host: "; content:"80site.com"; sid:10001; rev:1;)
alert tcp any any -> any 443 (msg:"443site.com Access"; flow:to_server,established; tls_sni; content:"443site.com"; sid:10002; rev:1;)



4. Suricata - 실행

rules 파일까지 작성이 끝났다.

이제 Suricata를 실행시켜보자.

 

1. suricata -s suri.rules -i eth0 명령어로 인터페이스와 파일을 인자로 넣어 실행한다.

2. 해당 사이트에 접속한다(본인은 80포트는 교수님 사이트, 443포트는 얼굴책 사이트를 지정하였다)

 

3. 로그파일을 확인한다. > /var/log/suricata/fast.log에 룰 정책에 의한 접속 로그들이 저장된다.

4. 위와 같이 조건대로 log가 저장된 것을 확인 가능하다.


여기까지 suricata를 실습해보았다.

오픈소스로 사용하기 아까울 정도로 잘 만들어논 프로그램 같다.

Suricata를 올바르게 사용한다면 기업 입장에선 비용을 많이 절감할 수 있어보인다.

 

이후 편에서 문법부터 상세한 설명을 포함하여 포스팅해볼 예정이다.

반응형

+ Recent posts