BaeBox

Suricata 란? 본문

개발 관련

Suricata 란?

배모씨. 2019. 11. 26. 12:15
반응형

웬 미어캣인가 싶겠지만 이게 suricata 다. 공식 이미지는 아니지만

Suricata : 오픈 소스 IDS (Intrusion Detection System)

실시간 IDS, IPS(Inline intrusion prevention), NSM(Network Security Monitoring) 및 오프라인 pcap 캡처가 가능하다.

YAML 과 같은 표준 입출력 형식과 기존 SIEM, Splunk, ELK 등과 같이 쓰기 좋다.

 

비영리 재단 OISF 에서 유지 관리한다. 

 


설치할 때가 굉장히 성가시다.

패키지 매니저를 이용해 설치하면 간단하지만, 패킷 캡처를 리눅스 기본 libpcap을 이용하지 않고 PF_RING 을 이용하고자 한다면 소스를 받아서 빌드하고 설치해야 하는데, 대개는 한번에 잘 되지는 않을 거라고 생각한다.

https://www.ntop.org/guides/pf_ring/thirdparty/suricata.html

 

2. Using Suricata with PF_RING — PF_RING dev documentation

2.3. PF_RING ZC Mode In order to take advantage of the PF_RING ZC drivers on Intel adapters, you also need to load the ZC driver, according to your nework card model. Example for ixgbe cards: cd PF_RING/drivers/ZC/intel/ixgbe/ixgbe-*-zc/src/ make && sudo .

www.ntop.org

위와 같이 친절하게 다큐먼트가 있지만, 난 suricata를 실행할 때마다 libpfring.so.1 이 없다는 오류를 미친듯이 뿜었더랜다. 나중엔 심볼릭 링크였다는 걸 알고 깊은 빡침을 느꼈다는 슬픈 전설이...

설치가 잘 되었다면 suricata 명령을 실행하면 아래와 같은 설명을 볼 수 있다. 옵션주고 실행하란다.

 

sudo suricata --pfring-int=ens33 --pfring-cluster-id=99 --pfring-cluster-type=cluster_flow -c /etc/suricata/suricata.yaml

나의 경우에는 위의 명령어로 실행한다. 

옵션을 보면 네트워크 인터페이스(NIC)를 ens33 을 이용하는데(--pfring-int=ens33), ifconfig 혹은 ip addr 을 이용하여 본인이 이용하는 NIC 를 지정해주면 된다. 

 

나의 경우에는 아래 코드를 실행하며 오류가 났는데, package installer ( apt, yum) 등을 이용하면 위와 같은 문제는 없다.

suricata-update 명령어가 없어서 그렇다.

python-pip installer 패키지를 이용해서 suricata-update 패키지를 설치하고 해당 패키지를 실행하면 suricata ruleset 을 받을 수 있다.

* suricata-update 는 suricata ruleset 을 다운받는 역할을 하므로, 반드시 필요하지는 않다. 그러니 suricata-update 명령어 없다고 멘붕오고 그러지 말자.

/etc/suricata

/etc/suricata/rules 내지는 /var/lib/suricata/rules 에 설치되는데, suricata 실행시 rule 을 /etc/suricata 이하에 rules 디렉토리가 없다면 옮겨주면 된다. 

sudo suricata --pfring-int=[NIC_NAME] --pfring-cluster-id=99 --pfring-cluster-type=cluster_flow -c /etc/suricata/suricata.yaml

자, 다시 위의 명령어로 suricata 를 실행하게 되면, 실행이 잘 될 것이다.

 


suricata 의 설정파일은 /etc/suricata/suricata.yaml 파일인데, 여기서 많은 것들을 설정할 수 있다. 

https://suricata.readthedocs.io/en/suricata-4.1.3/configuration/suricata-yaml.html

 

8.1. Suricata.yaml — Suricata 4.1.0-dev documentation

8.1.9.1. Inspection configuration The detection-engine builds internal groups of signatures. Suricata loads signatures, with which the network traffic will be compared. The fact is, that many rules certainly will not be necessary. (For instance: if there a

suricata.readthedocs.io

일단 내가 만져본 기능은 logrotate로 아래와 같이 사용한다.

rotate-interval

파일을 날리고 rotate 하는 것이 아닌, 단순히 새로운 녀석들을 다른 이름으로 적재하는 것에 불과하다. 파일을 날리고자 한다면, /etc/logrotate.d/ 를 이용하여야 한다.

자세한 사항은 아래를 참고하자.

https://suricata.readthedocs.io/en/suricata-4.1.3/output/log-rotation.html

 

13.6. Log Rotation — Suricata 4.1.0-dev documentation

All outputs in the outputs section of the configuration file can be subject to log rotation. For most outputs an external tool like logrotate is required to rotate the log files in combination with sending a SIGHUP to Suricata to notify it that the log fil

suricata.readthedocs.io

 

 


https://suricata.readthedocs.io/en/suricata-5.0.0/install.html#binary-packages

 

3. Installation — Suricata unknown documentation

For Suricata’s compilation you’ll need the following libraries and their development headers installed: libjansson, libnss, libgeoip, liblua5.1, libhiredis, libevent

suricata.readthedocs.io

 

반응형

'개발 관련' 카테고리의 다른 글

proxy body 제한 설정  (0) 2019.11.29
PF_RING 이란?  (0) 2019.11.26
APIPA(168.254.x.x)  (0) 2019.11.14
Gson 과 Jackson  (0) 2019.11.07
Operational Technology(OT)  (0) 2019.11.06
Comments