Part 6 ile Wazuh temelini kurmuştum. Bu bölümde detection ve deception katmanı ekledim: pfSense üzerinde Snort, HONEYPOT VLAN içinde T-Pot.

Amacım sadece tool çalıştırmak değildi. Anlamlı telemetry üretmek, bunun Wazuh’a ulaştığını görmek ve event kaybolursa nerede kaybolduğunu anlayabilmek istedim.


Ne İnşa Ettim?

Snort:        pfSense package, IDS mode
Interfaces:   WAN and LAN
Rules:        Community + focused ET Open categories
Honeypot:     T-Pot in VLAN 50
Telemetry:    T-Pot Suricata eve.json -> Wazuh agent
Test source:  Kali in VLAN 40
Snort paketi pfSense üzerinde kuruldu.
T-Pot VM HONEYPOT VLAN için oluşturuldu.
T-Pot Suricata event'leri Wazuh içinde parse edildi.


Neden Önemli?

Bu noktada lab detection ortamı gibi davranmaya başladı. Kali’den trafik üretip Snort/T-Pot/Wazuh zincirinde ne göründüğünü test edebiliyorum.

packet -> Snort alert -> pfSense system log -> Wazuh syslog listener -> decoder -> searchable event

Topoloji Kesiti

Kali 10.10.40.102  ->  HONEYPOT VLAN 50  ->  T-Pot 10.10.50.x
        |
        |-- test traffic

pfSense Snort -> pfSense syslog -> Wazuh 10.10.10.99
T-Pot agent -> Wazuh 10.10.10.99
T-Pot Suricata eve.json -> Wazuh localfile JSON

Kurulum Adımları

Snort

System -> Package Manager -> Available Packages -> snort -> Install
Services -> Snort

Blocking’i kapalı bıraktım. Bu kurulumda Snort’u IPS değil IDS mode’da kullandım.

pfSense üzerinde Snort package aranıyor.
WAN interface ve Send Alerts to System Log.
LAN interface aynı mantıkla yapılandırıldı.
Snort interface'leri çalışıyor, blocking disabled.

pfSense tarafında RAM kısıtlı olduğu için rule seçimini küçük tuttum:

snort-community.rules
emerging-scan.rules
emerging-exploit.rules
emerging-malware.rules
Snort global rule kaynakları aktif.
Rule update başarılı şekilde tamamlandı.
İlk Snort alert pfSense içinde görünüyor.

Wazuh Snort Decoder

pfSense Snort CSV alert ürettiği için built-in snort-full / snort-fast decoder’ları eşleşmedi. Bu yüzden local decoder yazdım.

/var/ossec/etc/decoders/local_decoder.xml:

<decoder name="snort-csv">
  <prematch>^\d\d/\d\d/\d\d-\d\d:\d\d:\d\d.\d+ ,</prematch>
</decoder>
<decoder name="snort-csv-fields">
  <parent>snort-csv</parent>
  <regex>"([^"]+)",(\w+),([\d.]+),(\d*),([\d.]+),(\d*),\d+,([^,]+),(\d+)</regex>
  <order>id,protocol,srcip,srcport,dstip,dstport,extra_data,severity</order>
</decoder>

Rule:

/var/ossec/etc/rules/local_rules.xml:

<group name="snort,">
  <rule id="100100" level="5">
    <decoded_as>snort-csv</decoded_as>
    <description>Snort alert</description>
  </rule>
</group>

Test:

sudo /var/ossec/bin/wazuh-logtest
curl http://testmynids.org/uid/index.html

Doğru query:

rule.id:100100
decoder.name:snort-csv

T-Pot

T-Pot’u HONEYPOT VLAN’a kurdum. Kaynak tüketimini makul tutmak için mini/light profile seçtim.

env bash -c "$(curl -sL https://github.com/telekom-security/tpotce/raw/master/install.sh)"
T-Pot HONEYPOT VLAN içinde IP alıyor.
Honeypot agent eklendikten sonra Wazuh agent görünümü.

T-Pot Suricata Logslarını Wazuh’a Forward Etmek

Wazuh agent host aktivitesini görür, ama asıl saldırı verisi T-Pot loglarındadır. Bu yüzden Suricata eve.json dosyasını JSON localfile olarak ekledim:

sudo find /home/honeypot/tpotce/data -name "*.json"
<localfile>
  <log_format>json</log_format>
  <location>/home/honeypot/tpotce/data/suricata/log/eve.json</location>
</localfile>
sudo /var/ossec/bin/wazuh-logtest
curl http://testmynids.org/uid/index.html
sudo systemctl restart wazuh-agent

Karşılaştığım Problemler

Snort alert var ama Wazuh’ta yoktu. Alert’in önce pfSense system log’a düşmesi, sonra Wazuh tarafından decode edilmesi gerekiyordu.

snort diye aramak yanlıştı. Event vardı ama içinde snort kelimesi yoktu. rule.id:100100 ve decoder.name:snort-csv daha doğru query oldu.

T-Pot Attack Map boş kaldı. Internal RFC1918 IP geolocate edilemediği için map boştu. Event’ler aslında Kibana/Wazuh içindeydi.


Ne Öğrendim?

Boş dashboard’ın veri yok anlamına gelmediğini öğrendim. Forwarding, decoder, indexing ve query ayrı ayrı doğrulanmalı.

Görselleştirmeleri de ground truth gibi okumamak gerektiğini gördüm. İç lab trafiğinde dünya haritası yerine src_ip ve raw event araması daha güvenilir.


Doğrulama Kanıtı

curl http://testmynids.org/uid/index.html
sudo /var/ossec/bin/wazuh-logtest
nmap -sV --top-ports 50 10.10.50.50
ssh root@10.10.50.50
rule.id:100100
data.src_ip:10.10.40.102
agent.name:honeypot

Sırada Ne Var?

Detection ve honeypot telemetry çalışıyor. Sırada lab’e uzaktan güvenli erişim kurmak var; pfSense’i internete açmadan yönetim yolunu çözmem gerekiyor.


Hızlı Referans

<localfile>
  <log_format>json</log_format>
  <location>/home/honeypot/tpotce/data/suricata/log/eve.json</location>
</localfile>