Snort ve Suricata ile İmza Kuralları
Ağ kurallarını yazma ve okuma.
Snort ve Suricata ile İmza Kuralları, CoddyKit'te ücretsiz bir Cyber Security Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cyber Security Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cyber Security Academy kursu toplamda 4 dersten oluşur.
Snort ve Suricata
Snort ve Suricata, açık kaynaklı iki baskın IDS/IPS motorudur. Büyük ölçüde uyumlu bir kural dilini paylaşırlar; bu nedenle biri için yazılan bir kural genellikle diğerinde de çalışır.
Suricata çoklu iş parçacığı, yerel protokol ayrıştırıcıları, dosya çıkarma ve zengin günlükleme (EVE JSON) özellikleri ekler; Snort 3 de kendi motorunu benzer şekilde modernleştirmiştir. Kural söz dizimini bir kez öğrenmek, her iki motor üzerinde de yetkinlik kazanmanızı sağlar.
Kuralın Yapısı
Her kuralın iki bölümü vardır: bir başlık ve seçeneklerden oluşan parantez içindeki bir gövde. Başlık eylemi, protokolü ve trafik yönünü belirler; gövde ise neyin eşleştirileceğini ve nasıl raporlanacağını tanımlar.
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 ( \
msg:"WEB suspicious request"; \
content:"/admin.php"; http_uri; \
sid:1000001; rev:1; )Başlık Alanları
Başlık soldan sağa okunur:
- eylem — uyarı, bırakma, reddetme, geçirme
- protokol — tcp, udp, icmp, ip (veya Suricata'daki uygulama protokolleri: http, dns, tls)
- kaynak IP/bağlantı noktası ve hedef IP/bağlantı noktası
- yön —
->tek yönlü veya<>çift yönlü
$HOME_NET ve $EXTERNAL_NET gibi değişkenler yapılandırmanızdan gelir; böylece kurallar farklı sitelerde taşınabilir kalır.
drop tcp any any -> $HOME_NET 22 ( msg:"SSH blocked"; sid:1000002; rev:1; )Eylemler: Uyarı ve Bırakma
Eylem, ilgili kuralın IDS mi yoksa IPS mi gibi davranacağını belirler:
alert— günlük kaydı oluşturur ve bildirim gönderir, trafiği durdurmaz (IDS)drop— paketi sessizce atar (IPS, yalnızca satır içi dağıtımda)reject— paketi atar ve TCP sıfırlama paketi veya ICMP erişilemez bildirimi gönderirpass— açıkça izin verir ve sonraki kuralları atlar
Aynı altyapı, satır içinde dağıtılıp dağıtılmadığına ve kullandığınız eylemlere bağlı olarak IDS veya IPS olur.
İçerik Eşleştirme
content anahtar sözcüğü, yük içindeki bir bayt örüntüsüyle eşleşir. Metin tırnak içinde, ikili veri ise onaltılık biçimde dikey çubuklar arasında yazılır.
Konum sabitleme anahtar sözcükleri eşleşmeleri kesinleştirir: offset, depth, distance ve within, örüntünün nerede görünebileceğini sınırlar; bu da hem doğruluğu hem de performansı artırır.
alert tcp any any -> $HOME_NET any ( \
msg:"Malware magic bytes"; \
content:"|4D 5A|"; offset:0; depth:2; \
sid:1000003; rev:1; )Yapışkan Arabellekler
Modern kurallar ham akış yerine protokolü tanıyan arabelleklerle eşleşir. Bir arabellek anahtar sözcüğünden sonra gelen content eşleşmeleri, ayrıştırılmış protokolün ilgili bölümüne uygulanır.
http_uri— istek URI'sihttp_header— istek/yanıt başlıklarıhttp_user_agent— Kullanıcı-Aracısıtls_sni/dns_query— TLS sunucu adı / DNS sorgusu
Bu yaklaşım, paketin tamamında bir alt dize aramaktan çok daha güvenilirdir.
alert http any any -> any any ( \
msg:"Suspicious user agent"; \
http.user_agent; content:"sqlmap"; nocase; \
sid:1000004; rev:1; )PCRE ve Büyük/Küçük Harf Duyarsızlığı
Sabit dizeler yeterli olmadığında pcre, Perl uyumlu düzenli ifadeleri kullanıma sunar. Ucuz bir content ön filtresini pcre ile birlikte kullanarak düzenli ifadenin yalnızca aday paketlerde çalışmasını sağlayabilir ve performansı koruyabilirsiniz.
nocase değiştiricisi, içerik eşleşmesini büyük/küçük harfe duyarsız yapar. Bu, saldırganların değiştirebileceği başlıklar ve kullanıcı denetimindeki alanlar için önemlidir.
alert http any any -> $HOME_NET any ( \
msg:"SQLi attempt in URI"; \
http.uri; content:"select"; nocase; \
pcre:"/union\s+select/i"; \
sid:1000005; rev:1; )Akış ve Durum Anahtar Sözcükleri
flow seçeneği, bir kuralı bağlantı durumuna ve yönüne göre sınırlar; böylece yanlış pozitifleri ve maliyeti azaltır.
established— yalnızca tamamlanmış TCP oturumlarındato_server/to_client— istek ve yanıt yönü
Sunucu yanıtlarını yalnızca bağlantı kurulmuş ve istemciye yönelmişken eşleştirmek, başıboş veya sahte paketlerde kuralın tetiklenmesini önler.
alert tcp $HOME_NET any -> $EXTERNAL_NET any ( \
msg:"Beacon response"; \
flow:established,to_client; \
content:"|00 01 02 03|"; \
sid:1000006; rev:1; )Üstveri: sid, rev, msg, reference
Kayıt tutma seçenekleri, kural kümesinin bakımını kolaylaştırır:
sid— benzersiz imza kimliği (yerel kurallar için 1000000 ve üzerini kullanın)rev— revizyon numarası; her düzenlemede artırınmsg— çözümleyicilerin gördüğü uyarı metniclasstype— önceliği belirleyen kategorireference— CVE veya güvenlik duyurusuna bağlantı
Sabit sid değerleri ve artan rev değerleri, panoları ve bastırma ayarlarını bozmadan kuralları izlemenize ve güncellemenize olanak tanır.
alert tcp any any -> $HOME_NET 445 ( \
msg:"EternalBlue exploit attempt"; \
flow:to_server,established; content:"|FF|SMB"; \
classtype:attempted-admin; \
reference:cve,2017-0144; sid:1000007; rev:2; )Snort ve Suricata Arasındaki Farklar
Kurallar uyumlu olsa da altyapıların yetenekleri farklıdır:
- Suricata çok iş parçacıklıdır, uygulama protokollerini yerel olarak ayrıştırır, dosyaları çıkarır, JA3 hesaplar ve EVE JSON üretir
- Snort 3, altyapısını performans ve modüler bir eklenti sistemi için yeniden yazmıştır
Bazı anahtar sözcükler altyapıya özeldir. Suricata, uygulama katmanı anahtar sözcükleri (tls.sni, dns.query, http.method) ile veri kümesi ve flowbits özelliklerini ekler. Kuralları paylaşırken en düşük ortak paydayı hedefleyin veya altyapıya özel kural kümelerini ayrı tutun.
Hız Filtreleme ve Eşikler
Bir kuralın konsolu uyarılarla doldurmasını önlemek için eşikler uygulayın. detection_filter, bir zaman aralığında N olaydan sonra çalışır; limit ile birlikte kullanılan threshold ise uyarı hacmini sınırlar.
Bu, tek bir olayın anlamsız olduğu ancak kısa süredeki yoğunluğun sinyal oluşturduğu kaba kuvvet ve tarama tespitleri için zorunludur.
alert tcp any any -> $HOME_NET 22 ( \
msg:"SSH brute force"; flow:to_server; \
detection_filter:track by_src, count 5, seconds 60; \
sid:1000008; rev:1; )Hızlı Kontrol
Bir kuralı okuyun ve davranışını tahmin edin.
Özet
Artık Snort/Suricata imzalarını okuyup yazabilirsiniz:
- Bir kural = başlık (eylem, protokol, kaynak/hedef, yön) + gövde seçenekleri
- Eylem IDS ile IPS arasındaki farkı belirler:
alert,drop,reject,pass content, offset/depth ve onaltılık eşleşmelerle yük baytlarını denetler- Yapışkan arabellekler (http.uri, tls.sni, dns.query), ayrıştırılmış protokol alanlarıyla eşleşir
pcrevenocase, değişken örüntüleri ele alırflow, eşleşmeyi durum ve yönle sınırlarsid/rev/msg/reference, kuralların bakımını kolaylaştırır- Eşikler, kaba kuvvet ve tarama gürültüsünü azaltır
Sıradaki konu: hiçbir imzası olmayan tehditleri tespit etmek.
Sıkça Sorulan Sorular
“Snort ve Suricata ile İmza Kuralları” dersi ücretsiz mi?
Evet — “Snort ve Suricata ile İmza Kuralları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cyber Security Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cyber Security Academy kursu toplamda 4 dersten oluşur.
“Snort ve Suricata ile İmza Kuralları” dersinde ne öğreneceğim?
Ağ kurallarını yazma ve okuma. Cyber Security Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cyber Security Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cyber Security Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Snort ve Suricata ile İmza Kuralları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cyber Security Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cyber Security Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- IDS ve IPS Kavramları
- Snort ve Suricata ile İmza Kuralları
- Anomali ve Davranışsal Tespit
- Ayarlama ve Dağıtım