Wazuh를 사용해보자 - 설치 편에서 이어집니다.

이 가이드는 2026년 4월 14일자 설치된 Wazuh v4.14.4_rc2로 진행되었습니다.
이 가이드는 PfSense 2.6.0-RELEASE로 진행되었습니다.

3. 그래서 이걸로 뭐하는데

siem설치05
보통 홈서버를 운영하는 경우 외부에 포트를 열거나 하지 않는 이상 일반적으론 필요 없습니다.
하지만 포트를 외부로 연 경우나 보안쪽에 관심이 있어 SIEM을 다뤄보고싶은 경우에는 좋은 솔루션입니다.

siem설치07
연동 환경으로 준비한 것들입니다.
방화벽, 웹방화벽, 웹서버
보안장비에 외부 에이전트를 설치하는게 개인적으로 그닥 좋은 건 아니라는 생각이 들지만 예시를 이하의 표대로 연동을 해볼 것 입니다.

FWWAFWEB Server
PfsenseBunkerweb WAFLighttpd
시스로그에이전트에이전트

4. 방화벽 연동

간단하게 거쳐야 하는 과정은 syslog 전송 설정 활성화 > Wazuh Syslog 설정 > 디코더 설정 > 룰 설정 순서입니다.
디코더 설정까지만 해도 로그 검색으로 검색이 될 줄 알았는데 안되더라고요..

  1. syslog 전송 설정 활성화

먼저 방화벽 Syslog부터 설정을 해봅시다.
siem설치08

로그인 완료시 아래의 대시보드 화면으로 넘어갈껍니다.
siem설치09

대시보드에서 Status > System Logs
siem설치10

이하의 화면에서 Setting 으로 들어가면
siem설치11
▼ 설정 가능한 화면이 나옵니다.
siem설치12
화면에서 로그 메시지 포맷을 syslog로 변경 하고
siem설치13
아래로 내리다보면 원격 로깅 옵션이 있습니다.
원격로깅을 활성화 한 뒤 로그 서버 주소 입력, 보낼 로그를 선택 후 저장해주면 방화벽에서 설정할 부분은 끝났습니다.
(만약 차단된다면 wazuh와 방화벽 사이에 허용 정책 설정해주세요)
siem설치14

  1. Wazuh Syslog 설정

/var/ossec/etc/ossec.conf 에서
siem설치15

변경 전변경 후
<logall>no</logall><logall>yes</logall>

siem설치16 이 곳에 아래의 줄을 환경에 맞게 수정하여 써주세요

/var/ossec/etc/ossec.conf 에서

  <remote>
      <connection>syslog</connection>
      <port>514</port>
      <protocol>udp</protocol>
      <allowed-ips>시스로그 보내는 장비들 대역 또는 IP</allowed-ips>
      <local_ip>시스로그 받는 IP(Wazuh Manager 있는 쪽)</local_ip>
  </remote>

이것으로 시스로그 설정은 끝났습니다.
다만 여기까지 설정하면 Wazuh의 로그 검색도 대시보드에도 뜨는게 아무것도 없습니다.

이는 Wazuh에 Pfsense 디코더와 룰이 없기에 발생하는 문제로
(실제로는 내장된 Pfsense 디코더가 존재는 합니다만 작동하지 않습니다.)

tail -f /var/ossec/logs/archives/archives.log | grep 로그 보내는 장비 IP

사용하여 로그가 들어오는걸 확인 한 뒤

YYYY MMM DD hh:mm:ss Wazuh->장비IP 1 YYYY-MM-DDThh:mm:ss.ssssss+TZhh:mm pfSense.hostname filterlog 10765 - - 80,,,100000101,NIC,match,Action,in,4,0x0,,64,0,0,none,17,Protocol,191,SrcIP,DstIP,SrcPort,DstPort,171

대충 이런 식의 로그가 나옵니다.

이제 이 syslog를 기준으로 디코더를 작성해야합니다.

  1. Wazuh Decoder 설정

Web UI에선 사이드바 메뉴의 Server management > Decoders > Add new decoders file에서,
CLI에선 /var/ossec/etc/decoders/ 에서 추가가 가능합니다.

사실 로그를 몇개 가져오는것보다 pfsense 공식 문서에 로그 포맷이 있어서 그걸 참고해서 만드는게 더 좋습니다만 테스트 환경이므로
방화벽에서 받은 시스로그 기준으로 xml 파일 작성하겠습니다.

<decoder name="pfsense-decoder">
  <prematch>filterlog</prematch>
</decoder>

<decoder name="pfsense-decoder-fields">
  <parent>pfsense-decoder</parent>
  <regex>(\d+),\d*,\w*,(\d+),(\w+),\w+,(\w+),(\w+),(\d+),</regex>
  <order>pf_rule,pf_tracker,pf_iface,pf_action,pf_direction,pf_ipv</order>
</decoder>

<decoder name="pfsense-decoder-fields">
  <parent>pfsense-decoder</parent>
  <regex offset="after_regex">\w*,\w*,\d+,\d+,\d+,\w+,\d+,(\w+),(\d+),(\d+.\d+.\d+.\d+),(\d+.\d+.\d+.\d+),</regex>
  <order>pf_proto,pf_length,pf_srcip,pf_dstip</order>
</decoder>

<decoder name="pfsense-decoder-fields">
  <parent>pfsense-decoder</parent>
  <regex offset="after_regex">(\d+),(\d+)</regex>
  <order>pf_srcport,pf_dstport</order>
</decoder>

디코더를 작성 한 뒤 테스트도 한번 돌려주세요 siem설치17

테스트 후 사이드바 메뉴의 디스커버에서 로그가 정상적으로 뜨는지도 확인해주세요 siem설치18

여기까지 마치셨다면 이제 wazuh에서 pfsense 룰을 작성 할 수 있게되었습니다.
Wazuh는 보통 로그나 RawData를 받아 SIEM역할을 수행하도록 하여 쓰는 솔루션이니 이제 룰을 작성하고 SIEM 역할과 로그를 검색이 가능하도록 해봅시다

siem설치20 제 테스트 환경은 위의 룰을 사용중이므로 SSH Block 기준으로 룰을 작성해봅시다.

  1. Wazuh Rule 설정

Web UI에선 사이드바 메뉴의 Server management > Rules > Add new rules file에서,
CLI에선 /var/ossec/etc/rules/ 에서 추가가 가능합니다.
확장자는 xml 파일입니다.

<group name="pfsense,firewall,">

  <rule id="100000" level="0">
    <decoded_as>pfsense-decoder</decoded_as>
    <description>pfSense filterlog event</description>
  </rule>

  <rule id="100001" level="0">
    <if_sid>100000</if_sid>
    <field name="pf_action">^pass$</field>
    <description>pfSense pass: $(pf_proto) $(pf_srcip) -> $(pf_dstip)</description>
    <group>firewall_pass,</group>
  </rule>

  <rule id="100002" level="3">
    <if_sid>100000</if_sid>
    <field name="pf_action">^block$</field>
    <description>pfSense block: $(pf_proto) $(pf_srcip) -> $(pf_dstip)</description>
    <group>firewall_block,</group>
  </rule>

  <rule id="100003" level="5">
    <if_sid>100002</if_sid>
    <field name="pf_direction">^in$</field>
    <description>pfSense inbound block: $(pf_proto) $(pf_srcip) -> $(pf_dstip):$(pf_dstport)</description>
    <group>firewall_block,inbound,</group>
  </rule>

  <rule id="100004" level="7">
    <if_sid>100003</if_sid>
    <field name="pf_dstport">^22$</field>
    <description>pfSense: SSH access blocked from $(pf_srcip)</description>
    <group>firewall_block,ssh,</group>
  </rule>

</group>

간단하게 Pass, Block, inbound Block, SSH Block에 대해 작성했습니다.
Wazuh가 특정 탐지 룰을 만족하면 그 조건에서 if_sid를 사용해 또다른 룰로 확장이 가능합니다.
초기 탐지 룰이 광범위할수록 추가 룰을 작성할 때 룰을 파생시키기 좋습니다.

룰은 이하의 구조를 따르는 편입니다.

<group name="그룹명">
  <rule id="100000번부터" level="default는 3부터 이벤트 탐지">
    <decoded_as>만든 디코더</decoded_as>
    <description>디코더 설명</description>
  </rule>
  <rule id="룰 id" level="default는 3부터 이벤트 탐지">
    <if_sid>어떤 룰에 걸렸을때</if_sid>
    <field name=필드 >탐지시킬 문구</field>
    <description>설명</description>
    <group>그룹</group>
  </rule>
</group>

위의 룰을 작성 한 뒤 테스트를 돌려보면 정상적으로 동작 하는것을 볼 수 있습니다.
siem설치19

따로 인바운드 차단 룰 없이 SSH 차단에 대한 룰 탐지만 원하면

<group name="pfsense,firewall,">

  <rule id="100000" level="0">
    <decoded_as>pfsense-decoder</decoded_as>
    <description>pfSense filterlog event</description>
  </rule>

  <rule id="100001" level="2">
    <if_sid>100000</if_sid>
    <field name="pf_action">^block$</field>
    <description>pfSense block: $(pf_proto) $(pf_srcip) -> $(pf_dstip)</description>
    <group>firewall_block,</group>
  </rule>

    <rule id="100002" level="3">
    <if_sid>100001</if_sid>
    <field name="pf_dstport">^22$</field>
    <description>pfSense: SSH access blocked from $(pf_srcip)</description>
    <group>firewall_block,ssh,</group>
  </rule>

</group>

이렇게 룰을 작성해도 됩니다.

기존 작성한 룰과 레벨을 다르게 설정한 이유는 /var/ossec/etc/ossec.conf의 로그 alerts 설정이 레벨 3부터로 되어있기 때문에 전에 작성한 룰을 사용하면 로그가 계속 찍힙니다.

  <alerts>
    <log_alert_level>3</log_alert_level>
    <email_alert_level>12</email_alert_level>
  </alerts>

세부적인 커스텀을 위해 ossec.conf에서 alerts 레벨을 변경하는 방법도 있지만 테스트 환경에선 룰 자체를 작성할때 레벨을 낮춰서 만드는 쪽이 더 간단하고 만약 다른 Wazuh연동 가능한 장비와 연동시 기존 내장된 룰에 의한 alerts가 발생하지 않을 수 있기에 ossec.conf에서 log_alert_level를 변경하진 않았습니다.

룰을 작성한 뒤 테스트를 해주면 siem설치21

테스트가 정상 작동하는것을 확인할 수 있고, telnet 또는 ssh로 테스트를 한 뒤 대시보드에서 Threat Hunting > Event에서 확인해보면
siem설치22

이벤트가 정상적으로 발생되는것을 확인할 수 있습니다.

이로써 Wazuh와 FW(Pfsense) 연동은 끝났습니다. 다음엔 WAF 솔루션과 연동하는 방법을 알아보겠습니다.