Donanım + Yazılım IoT Güvenliği ESP32

Ağ Nöbetçisi
IDS/IPS Sistemi

ESP32 mikrodenetleyici ve I2C iletişim protokolü üzerine kurulu, donanım tabanlı ağ saldırı tespit ve önleme sistemi. Gerçek zamanlı trafik analizi yaparak şüpheli paketleri tespit eder ve otomatik olarak engeller.

Proje Amacı

Geleneksel yazılım tabanlı IDS/IPS çözümlerinin aksine, bu proje donanım seviyesinde ağ güvenliği sağlamayı hedefler. ESP32 mikrodenetleyici üzerinde çalışan sistem, düşük gecikme süresiyle ağ trafiğini analiz eder ve tehdit tespit ettiğinde anında müdahale eder.

Özellikle küçük ve orta ölçekli ağlarda, pahalı kurumsal güvenlik donanımlarına alternatif olarak tasarlanmıştır. Açık kaynak ve düşük maliyetli bileşenlerle herkesin erişebileceği bir güvenlik çözümü sunmayı amaçlar.

Teknik Mimari

ESP32 Ana İşlemci

Çift çekirdekli işlemci ile eşzamanlı trafik analizi ve paket filtreleme. WiFi ve Bluetooth desteği ile esnek bağlantı.

I2C İletişim

Sensörler ve yardımcı modüllerle düşük gecikmeli veri alışverişi. Çoklu cihaz desteği ile genişletilebilir mimari.

Kural Motoru

Özelleştirilebilir güvenlik kuralları ile bilinen saldırı imzalarını tespit eder. SNORT benzeri kural yapısı.

Gerçek Zamanlı İzleme

Web tabanlı dashboard üzerinden anlık trafik istatistikleri, uyarılar ve log kayıtları.

Özellikler

  • Gerçek zamanlı ağ trafiği yakalama ve analiz
  • ARP spoofing, port tarama, DDoS tespiti
  • Otomatik saldırı engelleme (IPS modu)
  • I2C üzerinden sensör verisi toplama
  • Web tabanlı yönetim paneli
  • E-posta ve webhook bildirim sistemi
  • Log kaydı ve raporlama
  • Düşük güç tüketimi ile 7/24 çalışma

Kod Örneği

packet_analyzer.py
from scapy.all import sniff, ARP, IP, TCP

class PacketAnalyzer:
    def __init__(self):
        self.arp_table = {}
        self.syn_count = {}
        self.alert_threshold = 100

    def detect_arp_spoof(self, packet):
        if packet.haslayer(ARP):
            src_ip = packet[ARP].psrc
            src_mac = packet[ARP].hwsrc
            if src_ip in self.arp_table:
                if self.arp_table[src_ip] != src_mac:
                    self.trigger_alert(
                        "ARP Spoofing tespit edildi!",
                        src_ip, src_mac
                    )
            self.arp_table[src_ip] = src_mac

    def detect_syn_flood(self, packet):
        if packet.haslayer(TCP):
            if packet[TCP].flags == "S":
                src = packet[IP].src
                self.syn_count[src] = \
                    self.syn_count.get(src, 0) + 1
                if self.syn_count[src] > self.alert_threshold:
                    self.trigger_alert(
                        "SYN Flood saldırısı!", src
                    )

Bunlara da
göz atın