취약점분석 (Blue Team)/Network

[Network] Wazuh 룰 설정 및 모니터링

poiri3r 2026. 3. 23. 21:32

오늘은 어제 설치했던 Wazuh에 이어서 실습을 해보겠습니다.

 

*해당 블로그는 실습 이후 정리하면서 작성한 게시물입니다.

 

먼저 실습 내용에 대해 설명하기 전에 현재 제 서버의 Wazuh 구조에 대해 설명드리겠습니다.

먼저 그림이 복잡해지기 전에 제 PC먼저 설명드리겠습니다,.

제 host pc에는 총 3개의 창이 돌아가고 있습니다.

하나는 Vmware입니다. 하나의 vm에서는 리눅스 서버가 설치되어 Wazuh manager가 돌아가고 있습니다.

vm에서 돌아가는 Wazuh manager

하나는 해당 linux server에 쉽게 command를 내리기 위한 ssh 쉘입니다.

vm으로 복사 붙여넣기 하는건 여러 설정도 건들여야되고 이런저런 관계로 ssh로 하나를 연결해뒀습니다.

ssh 연결한 창

해당 쉘로 command를 넣으면 우분투 서버에서 실행됩니다.

마지막은 리버스 터널링입니다.

이게 좀 중요한 역할이고 설정하는데 애를 좀 먹었는데, VMWare의 IP가 사설 IP이므로 AWS가 접속이 불가능 합니다.

따라서 AWS서버에 키를 가지고 접속하여, 그 안의 로그를 1514와 1515 port로 가져오는 터널링이 필요합니다.

제 AWS 서버에는 wazuh의 agent가 설치되어있기에 로그를 가져오려면 꼭 필요한 방식입니다.

단순히 해당 명령어를 치면 끝나는게 아니라 방화벽 인바운드 규칙도 설정해서 AWS에서도 서버를 열어줘야 합니다.

해당 과정은 조금 복잡하기에 일단 넘어가겠습니다.

 

AWS까지 포함한 다이어그램입니다.

현재 AWS t2 micro에 설치된 Wazuh Agent에서 log들을 수집합니다. 그 후에 그 수집된 로그를 Wazuh의 설정 파일에 대한 주소로 로그를 쓰고, 이때 SSH에서 리버스 터널에서 로그를 낚아와 Vmware에 설치된 Wazuh manager로 로그를 씁니다.

 

이렇게 되면 일단 인프라 구축은 어느정도 완료됩니다. 

다음 단계는 로그 수집입니다.

로그수집

일단 수집에 필요한 로그는 여러가지가 있습니다.

그리고 그 로그들은 aws 서버의 /var/log에 위치합니다.

 

아래 밑줄 친 것들 모두 Wazuh에서 긁어가는 로그들입니다.

Wazuh Agent가 읽어오는 로그들은 /var/ossec/etc/ossec.conf의 <localfile> 설정을 보고 가져옵니다.

그래서 위와 같이 로그들을 읽어오도록 가져왔습니다.

 

 

이 ossec config의 위쪽을 보면 로그들을 읽었을 때 127.0.0.1의 1514 포트로 보내도록 설정 되어있습니다.

아까 리버스 터널을 뚫어놨기에 해당 터널을 타고 vm의 wazuh manager로 알아가게 됩니다.

 

다음 단계는 로그 분석입니다.

로그 분석

위의 단계에서 날아온 로그들은 Wazuh manager 서버로 날아갑니다.

해당 로그들이 날아오면 다음 단계들을 거칩니다.

  1. Pre - decoding : 로그의 앞부분을 보고 기본 정보 디코딩(시각, agent name, 등)
  2. Decoding : 로그의 본문을 정규표현식으로 쪼개서 데이터를 뽑아냅니다.
  3. Rule Matching : 정의된 규칙과 비교

var/ossec/etc/decoders의 local_decoder.xml입니다.

crowdsec에서 날아온 로그들을 선별분석하기 위해서 prematch룰을 추가한 것인데 크게 신경안쓰셔도 됩니다.

그 아래의 decoder에서는 crowdsec_log에서 걸러진 로그들을 확인해서 세부 정보를 뽑아냅니다.

위의 디코더는 custom decoder고 기본 디코더는 /var/ossec/ruleset/decoders에 따로 있습니다.

 

다음은 룰 매칭 단계입니다.

 

이것도 제 커스텀 룰인데, 실습할 때 crowdsec에서 날아온 로그를 우선적으로 대쉬보드에 띄우기 위해 커스텀 rule id : 100010으로 설정한 뒤 레벨을 10번으로 올렸습니다.

이렇게 해두면 원하는 로그에 대한 대시보드를 원하는 대로 조절 가능합니다.

<if_sid>는 따로 추가한 규칙인데, 이걸 설정안하고 테스트를 해보면 wazuh의 기본규칙에 먼저 필터링 되어서 제 커스텀 룰까지 오지 않더라고요, 그래서 1002번 규칙에 걸린 로그들 중 조건에 맞는 로그들을 custom rules로 가져오는 역할입니다.

<description>은 대시보드에 표시될 제목입니다.

 

이제 테스트를 해보겠습니다.

echo 'time="2026-03-23T21:00:00Z" level="info" msg="IP 1.2.3.4 performed attack, result: ban" ' | sudo tee -a /var/log/crowdsec.log

 

다ㅓ음과 같이 crowdsec.log에 가짜 로그를 남겨보겠습니다.

이런 로그는 리버스터널링을 통해 제 wazuh manager로 이동하게 되고 대시보드에서 찍힐 것입니다.

 

Wazuh 홈페이지에 접속한 뒤 로그인을 해줍니다.

그 뒤 threat hunting에 들어가준 뒤

event를 확인해보면

 

제가 설정한 커스텀 룰이 제대로 동작하는걸 확인할 수 있었습니다.

 

오늘 포스팅은 여기서 마무리해보도록 하겠습니다. 읽어주셔서 감사합니다!!