오늘은 네트워크를 공부해볼 것이다.
유명 오픈소스 IDS인 Suricata(수리카타)에 대해 공부해보자.
1. Snort? Suricata?
본 주제에 들어가기 전에 Snort부터 이야기를 해보려고 한다.
Snort(스노트)는 sourcefile사에서 만든 오픈소스 IDS(Intrusion Detection System)로
실시간 트래픽을 분석하거나 패킷 로깅 용도로 오랫동안 사랑 받아왔다.
또, 그동안의 수많은 개발자들에 의한 rule을 제공받을 수 있고 다양한 OS를 지원한다.
그러나 Snort에도 단점이 존재했는데, 그건 바로 단일-스레드 처리방식이었다.
시간이 지날 수록 처리해야 할 트래픽은 늘어가지만
단일-스레드 방식으로 이 모든 데이터를 처리하기엔 한계가 있었다.
그래서 해당 단점을 보완하고자, Suricata가 등장한다.
Suricata(수리카타) 역시 오픈소스 IDS(Intrusion Detection System)이다.
Snort를 발전시킨 만큼, Snort 룰이 호환되어 사용 가능하다.
무엇보다 멀티 코어와 멀티-스레드 처리방식으로 데이터를 처리할 수 있어서
현재도 많은 사랑을 받고있다.
뿐만 아니라 하드웨어(GPU) 가속 역시 지원하기 때문에 큰 기업에서도 많이 사용한다.
아래는 Snort와 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를 올바르게 사용한다면 기업 입장에선 비용을 많이 절감할 수 있어보인다.
이후 편에서 문법부터 상세한 설명을 포함하여 포스팅해볼 예정이다.
'My > Study' 카테고리의 다른 글
Clean Code - 1 (1) | 2021.07.12 |
---|---|
[Forensic] NTFS 파일 시스템에서 파일 복구해보기 (2) | 2020.10.16 |
[Network] WPA2 Cracking with Hashcat (0) | 2020.10.14 |
[Analysis] PE(Portable Executable) 파일 포맷 공부 (2) | 2020.06.13 |
[MYSQL] JOIN 조인(INNER, OUTER, CARTESIAN, SELF)공부 (0) | 2020.04.11 |