본문 바로가기

네트워크

[suricata] 수리카타를 이용한 IDS 테스트

728x90

안녕하세요 반갑습니다 오랜만입니다. 

 

한 2주 넘게 오랜만에 글을 올립니다.

 

그 동안 네트워크 보안쪽에 대해 볼 일이 생겨 그쪽을 잠시 알아봤는데요

 

알아본 부분은 크게 지금 올리는 글인 IDS/IPS 와 패킷을 뜯어보는 wireshark 그리고 udp 프로토콜에 tls를 적용한 dtls에 대해 알아봤습니다.

 

 

 

우선 suricata가 무엇이냐?

 

오픈소스 IDS 시스템입니다.

 

자 그럼 IDS는 무엇이냐?? IDS란 침입 탐지 시스템 (Intrusion Detection System) 입니다.

 

그럼 침입 탐지 시스템이 뭔데??

 

네트워크에서 데이터 대한 시스템이 크게 3가지가 있습니다.

1. 침입 차단시스템

2. 침입 탐지 시스템 IDS

3. 침입 방지 시스템 IPS

 

침입 차단 시스템은 방화벽으로 방화벽의 경우에 트래픽을 검사하는 영역이 네트워크 레이어와 트랜스포트 레이어로 3,4 레이어만 검사를합니다. 방화벽은 IP/Port기반으로 차단을 하기 때문에 완전한 보안체계가 아닙니다.

 

하지만 IDS/IPS경우에는 7레이어인 어플리케이션 레이어까지 패킷의 내용을 검사를 하기 때문에 좀 더 보안에 강합니다.

 

하지만 IDS의 경우에는 말그대로 탐지 시스템이기 때문에 탐지만 하고 log만 남길뿐 수상한 패킷을 차단하지는 않습니다.

 

IPS는 IDS에 탐지된 침입을 예방하는 것으로 수상한 트래픽을 차단해버리기도 합니다.

 

------------------------

해당 부분에 대한 지식이 아직 부족한 것 같아 추후 공부하게 되서 알게되는 부분을 수정하겠습니다.

 

이상한점이 있으면 알려주시면 감사하겠습니다.

------------------------

 

 

 

어쨌든 이런 침입탐지시스템을 제공해주는 오픈소스가 수리카타이다.

 

https://suricata-ids.org/

 

Suricata

Open Source IDS / IPS / NSM engine

suricata-ids.org

수리카타 공식이미지

 

 

 

 

 

예제 구조

위 그림처럼 대략적으로 구성할 것이고

 

우선 수리카타 설치부터 해보겠다.

 

수리카타 공식 docs 에 친절하게 나와있으니 참고해주시면 감사하겠습니다. 혹시 몰라 블로그에 첨부하지만 공식 docs를 읽는 버릇을 들이는게 좋을거같습니다. 

 

sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
sudo apt-get install suricata
sudo suricata-update  # 기본 규칙세트를 가져옴
sudo systemctl restart suricata  # 규칙세트를 가져오고 재시작
tail /var/log/suricata/suricata.log  # log를 확인하여 suricata가 실행되고있는지 확인

 

 

수리카타의 대략적인 실행방식은 다음과 같습니다.

 

rule을 통해 정해놓은 규칙에 맞게 log가 쌓인다. 라고 보시면 됩니다.

 

/etc/suricata/suricata.yaml 우선 해당 파일에서 수정해야할 부분이 있습니다. 바로 HOME_NET 부분과 네트워크 인터페이스 부분인데

 

HOME_NET부분에 자신의 IP대역대에 맞는 IP를 집어넣어주시면됩니다. 저같은 경우 

192.168.0.1/24을 넣었고 (HOST 컴퓨터의 실제 IP는 192.168.0.127번입니다. 네트워크 대역대를 집어넣어야하기에 192.168.0.1/24을 집어넣어줍니다.)

 

네트워크 인터페이스 네임 enp5s0 을 집어넣었습니다. 

suricata.yaml 파일에 af-packet부분에 인터페이스 네임을 밑처럼 수정해줍니다.

af-packet: 
  - interface: enp5s0

 

자 이러고 나서 예제 룰파일을 한번 만들어봅시다. 기본 rule의 디폴트 위치는 /var/lib/suricata/rules 이곳입니다.

해당 디렉토리에 test.rules 라는 파일로 다음과 같이 적어줍니다. 해당 rule은 핑을 날렸을때 반응하는 룰입니다. ICMP 보이시죠?? 룰에 대한 양식은 마찬가지로 docs파일에 자세히 적혀있습니다. 

 

추후 제가 룰에 대한 기본적인 양식에 대해 설명하겠습니다.

alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:1000002; rev:1;)

 

이렇게 적고 yaml파일에 이 룰 파일을 추가해줘야합니다. 다시 suricata.yaml 파일을 열고 밑처럼 추가해줍니다.

 

 

자 이제 거의 다 됐습니다. 

 

suricata -c /etc/suricata/suricata.yaml –i <인터페이스이름>

명령어를 치고 잠시 기다린 후 터미널 창을 하나 새로 열어서

tail -f /var/log/suricata/fast.log

로그를 확인하고 현재 ip로 ping 신호를 보내면 

[**] [1:1000003:1] SSH connection attempt [**] [Classification: (null)] [Priority: 3] {TCP} <IP>:<port> -> 192.168.0.127:22

이처럼 경고메시지가 뜨는 걸 확인할 수 있습니다. 이 로그는 제가 따로 만든 예제로 ssh접속했을 때 뜨는 경고 메시지입니다. 

 

다른 여러가지 수리카타 테스트를 위해서 hping 과 같은 것도 사용하는데 심심하신분들은 사용해보시면 좋습니다. 재밌어요 로그가 다다다다닥 몇 만개 찍히거든요

 

오늘 글은 여기서 마치고 다음엔 IPS 테스트에 대해 올려보도록 하겠습니다. 

 

 

 

https://suricata.readthedocs.io/en/suricata-5.0.3/

 

Suricata User Guide — Suricata 5.0.3 documentation

© Copyright 2016-2019, OISF Revision d5cd40dd.

suricata.readthedocs.io

공식 docs url첨부합니다.

반응형