ZER0 D0G의 잡동사니 블로그

2. Suricata를 설치 해보자 본문

NSM(Network Security Monitoring)

2. Suricata를 설치 해보자

ZER0 D0G 2025. 1. 19. 18:31

백문이 불여일견, 일단 뭐라도 해봐야 손에도 익고 어떻게 동작하는지 알 수 있지 않겠는가?

 

Suricata를 설치하기 위해 Rocky linux 9.5를 사용했다.

기업에서도 많이 사용하고 일단 Centos의 정신적 계승 작품(Centos가 8부터 레드헷 소스코드 기반을 버리겠다 선언했기에)이기도 하고, RHEL 기반으로 만든 OS라 안정적이고 우수한 품질을 자랑하기에 선정했다.

 

그리고 기본적으로 Suricata는 Rocky linux의 패키지 프로그램 dnf에 포함되어 있으므로 설치하기도 용이하다.

 

먼저 설치를 위해 아래 명령어들을 입력해준다.

 

sudo dnf groupinstall "Development Tools" -y
sudo dnf install epel-release -y
sudo dnf install gcc libpcap-devel pcre-devel libyaml-devel \
zlib-devel jansson-devel libmaxminddb-devel rust cargo -y

 

나중에 Suricata로 이것저것 가지고 놀 예정이라 github에서 소스코드를 가져와봤다.

 

git clone https://github.com/OISF/suricata.git
cd suricata
./autogen.sh
./configure
make
sudo make install-full

 

그럼 이제 기본 설정 파일의 구조를 파악해보자

 

기본 설정 파일은 suricata.yaml이라는 파일로 저장되어있는데 어디있는지는 각자

find / -name suricata.yaml 2>/dev/null 명령어로 찾자 뭐 하나 고정되어있는게 없기 땜시롱 어렵다.

 

필자 기준으로 /etc/suricata/suricata.yaml 에 있었기 때문에 이 기준으로 설명하겠다.

 

기본 설정 파일 자체가 원체 긴편이기에, 주요 섹션만 다뤄야겠다.

무려 2167 line이나 되는 어마무시한 길이를 자랑한다.

먼저 af-packet, 네트워크 인터페이스를 설정하는 부분이다.

af-packet 섹션 너무 길어서 중요한 부분만 캡쳐

interface : Suricata가 트래픽을 모니터링할 네트워크 인터페이스

threads : 분석에 사용할 CPU 스레드 수

 

그 다음 살펴볼건 logging이다.

 

logging 섹션

로그를 파일, 콘솔, 또는 원격 서버로 전송하는 설정이다.

 

outputs : JSON 로그 출력 설정

eve.json 파일에 regular(json)형태로 저장하는걸 볼 수 있다.

물론 설정을 바꾼다면, syslog로 변경해서 시스템 로그로 전송하거나 unix_dgram, unix-stream으로 UNIX domain 소켓으로 로그를 전송 할 수도 있다.

아니면 redis 데이터 베이스로 전송 하거나.

 

vars 섹션, 알뜰살뜰한 모습이 보기 좋다 ㅎㅎ

 

vars : 네트워크 변수 설정

HOME_NET은 내부 네트워크 설정, EXTERNAL_NET은 외부 설정 파트다.

 

HOME_NET : 내부 네트워크의 범위 설정, 서브넷 여러개 포함 가능

위 주석에 정의된 범위는,

192.168.0.0/16 : 일반적인 사설 IP 범위

10.0.0.0/8 : 대규모 내부 네트워크

172.16.0.0/12 : 사설 네트워크 일부 범위

이 부분은 사실 네트워크를 공부해본 사람이라면 대부분 알거라 생각한다.

 

EXTERNAL_NET : HOME_NET을 제외한 모든 네트워크를 의미함.

!$HOME_NET 부정 연산자로 내부 네트워크를 제외한다.

 

설정 ex) EXTERNAL_NET : " any" -> 모든 트래픽을 외부 네트워크로 간주 (웬만하면 안하는거 권장)

 

그 밑에는 각각 SERVER 범위를 정의 할 수 있게끔 되어있음

 

그래서 죄다 "$HOME_NET"으로 되어있는것

AIM은 메신저 서버니까 트래픽이 외부에서도 와야해서 EXTERNAL_NET으로 설정되어 있는것 같다.

 

밑에 port-groups는 특정 서비스에서 사용되는 포트를 그룹화하여 탐지 규칙에서 참조 할 수 있게끔하는 설정이다.

특별히 뭔가 추가해야 할 서비스가 있으면 저기에 추가해주면 될 듯 하다.

'NSM(Network Security Monitoring)' 카테고리의 다른 글

1. Suricata가 뭘까 대체  (0) 2025.01.19
Suricata 시리즈 시작  (0) 2025.01.17
Comments