Snort Başlangıç Uygulamaları

Snort Nedir ?

Snort ücretsiz ve açık kaynaklı ağ ihlallerini tespit ve engellemeyi sağlayan araçtır. Kural bazlı imzaları kullanır. Topluluklar tarafından oluşturulan kuralları, ücretli kuralları ya da kendinizin kural oluşturmasını sağlar. Örnek olarak, port taramaları, brute force denemeleri ya da exploit işlemlerini tespit ya da engelleyebilirsiniz. IDS ile tüm ağ sniffing yaparak oluşturulan kurallara göre uyarılarını belirtir. IPS ile oluşturulan kurallar çerçevesinde iletişimi keser.

Snort Uygulaması İçin Gerekli Lab Ortamın Hazırlanması

2 adet client dağıtımı önemsiz linux kurulumları ve Snort üzerinde çalışacağı Ubuntu Server.

clientler üzerinde herhangi birinde ssh servisi kurulu olmalıdır.

Virtual Box Üzerinden Host Network Manager Alanından 192.168.58.0/24 şeklinde ağ oluşturulmalıdır.

Snort Kural Senaryosu

  • ICMP tespiti
  • SSH bağlantısı tespiti
  • SSH Connection Failed Attempt tespiti

Yukarıda ki senaryolar için kurallar oluşturulacaktır.

Snort Yapılandırması

Ubuntu 20.04 lts server üzerinde Snort yapılandırmasını gerçekleştireceğim. Ubuntu iso dosyasını indirip minimal kurulum ve ssh servisini kurmanız gerekmektedir. Ağ yapılandırması için 2 adet network interface gerekmektedir. Virtualbox kullandığım için ağ arayüz yapılandırmam şu şekildedir; Burada ki en önemli kısım Adapter 1 alanında Host-only Adapter olmalı ve Promiscuos mode Allow All seçili olmalıdır.

Evet minimal kurulum yaptığımız Ubuntu’ya dönelim. Tabi ki ilk komutuz magic word olan sudo olur. Yapılandırma için super user yetkisine ihtiyacımız olacaktır.

sudo su
apt install snort -y

Kurulum öncesi network interface yani ağ arayüzlerin isimlerini bilmemiz gerekiyor. Burada ki isimlendirme herkes de farklı olabilir. enp0s3 host-only arayüzü ve enp0s8 Nat arayüzüdür. Ek olarak biz enp0s3 arayüzünü yöneteceğiz. Hadi ilerleyelim.

cd /etc/snort/ && ls -l

Snort yapılandırma dosyalarımız buradaki dizinde tutulur. Kural işlemine geçilmeden önce snort.conf yedeği oluşturulur.

cp snort.conf snort.conf.backup

Kopyalama komutu ile backup işlemini tamamladık. Şimdi snort.conf dosyası içeresini yapılandıralım ve tüm default olarak gelen kurallarımızı kaldıralım. Bunu yazdığımız kuralları görebilmek ve daha iyi öğrenebilmek için yapıyoruz.

cp snort.conf test_snort.conf

Şimdi test_snort.conf dosyasını text editörü ya da nano ile açalım.

nano test_snort.conf

Home_net bizim yönettiğimiz alandır. Burada kendi iç ağ adresimi yazmamız gerekir.

ipvar HOME_NET 192.168.58.0/24

538 satırdan 696 satıra kadar olan kural satırları silinir.

snort -T -i enp0s3 -c /etc/snort/test_snort.conf

Silme işlemi sonucunda kurallarımızı uygulayalım ve aşağıda ki ekran çıktısı görmemiz gerekir.

Snort Kural Yapısını Anlamak

Örnek olarak bir kural verirsek;

alert icmp any any -> $HOME_NET any (msg:”ICMP detect”; sid:1000001; rev:1; classtype:icmp-event;)

msg kendimizin oluşturabildiği bir iletidir. Bu kısım uyarı hakkında her şey yazabiliriz.

sid: kendimizin verdiği değerdir

classtype, sınıflandırmak için atadığımız değerdir ve opsiyoneldir. Zorunlu değildir.

any yerine spesifik ip ya da port numaraları verilebilir.

Snort Custom Kural Oluşturmak

local.rules burası özel kuralların bulunduğu yerdir. Bizim oluşturduğumuz custom kurallar buraya kaydedilir.

İlk kuralımız icmp protokolünü tespit edeceğiz.

Snort İle ICMP Tespiti

nano /etc/snort/rules/local.rules
alert icmp any any -> $HOME_NET any (msg:"ICMP Paketi Tespit Edildi"; sid:1000001;)

Herhangi bir kaynak adresi ve port üzerinden gelen icmp paketleri $HOME_NET ile tanımladığımız herhangi bir porta iletişim kurarsa ICMP Paketi Tespit Edildi uyarasını bas anlamına gelir. sid değeri ise kendi atadığımız değerdir. Best pratiğe göre custom kurallar için 100000’den sonralar verilmelidir.

Oluşturduğumuz kural ilgili dosyaya eklenir.

snort -A console -q -i enp0s3 -c /etc/snort/test_snort.conf

Console açalım ve ilgili ping işlemi kullanıcılar arası gerçekleştirelim.

192.168.168.58.5 makinesinden 192.168.58.4 makinesine ping attığımızda oluşturduğumuz uyarı başarılı şekilde çalıştı.

ping 192.168.58.4

Snort İle SSH Tespiti

nano /etc/snort/rules/local.rules
alert tcp any any -> $HOME_NET 22 (msg:"SSH bağlantısı Tespit Edildi"; sid:1000002;)

TCP protokolünde herhangi kaynak adres ve port HOME_NET(yani 192.168.58.0/24) adresine 22 port numarasına giden iletişim olduğunda ssh uyarısı verecektir.

Açılan dosyanın sonuna kural eklenir.

snort -A console -q -i enp0s3 -c /etc/snort/test_snort.conf

Snort İle Başarısız SSH Denemesini Tespit Etmek

Burada kural yapımıza content değişkeni gelmektedir. Aldığımız hata mesajını yazarak ilgili uyarımızı oluşturabiliriz.

nano /etc/snort/rules/local.rules
alert tcp any  any -> $HOME_NET 22 (msg:"Hatalı SSH Denemesi"; flags: S+; threshold: type both, track by_src, count 2, seconds 30; sid:10000005;)

Leave a Reply

Your email address will not be published. Required fields are marked *