Sercanca Çözümler..

Mikrotik – Filtre Kuralları (Filter Rules)

Mikrotik – Filtre Kuralları (Filter Rules)

Mikrotik kullanıp yöneten kişiler bilirler. Paketler üzerinde işlem yapıp yasaklama, izin verme gibi kurallar yazmak gerekebilir. Mikrotik bu anlamda bayağı esnek bir yapıya sahiptir. İlk kullanmaya başlayanlar genelde kural yazarken zorlanabilirler. Eğer daha önce UTM yönetimi yaptı iseniz eminim karşınıza Mikrotik gelince yapısı çok farklı gelecektir. Bu yazıda Mikrotik tarafında Filtre Kurallarını ele almayı hedefliyorum. Yapı çok esnek olduğu için bazı durumlara değinmeyip temel kuralların yazılmasını göstereceğim.

Filtre Kuralları (Filter Rules)

Güvenlik duvarları üzerinden geçen paketleri filtreye tabi tutarak veri akışını yönetebilir. Gerekli paketleri engelleyebilir ya da izin verebilirler.  Mikrotik bu işlemleri ve daha fazlasını yapabilecek yetenektedir. Geçen paketleri belirlediğimiz farklı parametrelere göre değerlendirebilir. Her cihazda olduğu gibi tanımlanan paketler yukarıdan aşağıya doğru işletilir.

Cihaz üzerinde tanımlı Networkler arasında güvenlik amaçlı denetme yapılması ağınızı en sağlık ve güvenli şekilde kullanmanızı sağlayacaktır.

Filtre kuralları bir Zincir (Chain) yapısında çalışırlar. Mikrotik tarafında zincirlerde işlenen bir sıra vardır.(input->forward->output). Kendi zincir yapınızı oluşturabileceğiniz gibi mevcut hazır yapıları da kullanabilirsin. Ben kural yazarken her iki durumu da kullanıyorum.

İnterface

Cihazın üzerinde fiziksel yer alan ya da sanal olarak oluşturulmuş data giriş ve çıkışı yapılabilen portlardır. Biz yazımızda interface için arayüz kelimesini kullanacağız.

Chain Türleri

Yeni bir kural oluşturduğunuzda zincir seçiminde aşağıdaki seçenekler yer alır.

Forward 

Cihaz üzerinden geçen paketleri yakalayan zincirdir. İşlem yapılacak paketler cihaz üzerinden hedefe doğru geçip giderse bu zincire sahip kurallar çalıştırılır. Örneğin cihaz üzerinden geçip pppoe-out1 arayüz tarafına giden paketlerde QUIC  (UDP 443) protokolünü engellemek istersek “Forward” zincirini kullanmamız gerekmektedir.

Yukarıdaki kuralda cihaza gelip geçen trafikte çıkış arayüzü pppoe-out1 ise ve bu pakette hedef portu udp 443 ise paket direkt engellenecektir. Kabaca internet arayüzüne giden paketlerde QUIC protokolü yer alıyorsa paket engellenir.

İnput 

IP adresine sahip olan bir arayüz üzerinden IP adresi ile cihaza giren paketleri yakalamak için kullanılan zincirdir.

Örneğin LOKAL arayüz üzerinden cihaza gelen DNS sorgularını engellemek istersek aşağıdaki gibi bir kural yazılması gerekir.

Output 

Arayüz üzerinden cihazı terk edip çıkan tüm paketleri yakalamak için kullanılır. Cihazın kendisinde oluşturulan paketler sadece output zinciri ile yakalanır.

Örneğin cihazın kendi DNS sunucusunun dış DNS sorgularını yakalayıp listelemek istersek output zinciri kullanmalıyız.

Yukarıdaki kural incelediğimizde cihazın pppoe-out1 arayüzü üzerinden dışarı yapılan DNS(udp 53) sorguları yakalanıp 10 saniye boyunca DNS-SORGU-LIST listesinde tutulur. “/ip/Firewall/Address Lists” kısmından oluşturulan listeyi görebilirsiniz.

Zincir (Chain) Oluşturma

Yazının başında zincir oluşturmaktan söz etmiştim. Aslında oluşturulan zincir, standart zincirlerden ibarettir. (input, forward, output) . Bazı durumlarda fazla olan zincir kurallarını bu yöntemle sadeleştirebilirsiniz.

Örneğin pppoe-out1 arayüzünden cihaza gelen bazı TCP paketlerini engellemek istiyoruz. Aşağıdaki gibi bir kuralla bunu çözebiliriz.

Gördüğünüz gibi input zinciri ile pppoe-out1 arayüzüne direkt gelen paketleri yakalayıp “jump” ile “tcp” zincirine gönderiyoruz. Eğer parametrelere uyan bir paket olursa paketi engelliyoruz.

Kural Eylemleri (Action)

Fark etti iseniz kural zincirlerini anlatmaya çalışırken örneklerde sürekli “drop” eylemi ile paketleri engelledik. Şimdi bu eylemler üzerinde duracağım. Kural yazarken istediğiniz eyleme göre farklı işler yaptırabiliriz.

Eylemler Seçenekleri

accept : Parametrelere uygun paketler kabul edilir.

add-dst-to-address-list : Parametrelere uygun paketlerdeki, hedef adresleri barındıran liste oluşturur.

add-src-to-address-list : Parametrelere uygun paketlerdeki, kaynak adresleri barındıran liste oluşturur.

drop : Parametrelere uygun paketler geri cevap verilmeden engellenir.

fasttrack connection : Paketleri filter,NAT,Queues gibi işlemlerden bypass(atlatmak) edip hızlı şekilde sonuca ulaştırır.

jump : Kullanıcı tanımlı zincirlere yönlendirmek için kullanılır.

log : Parametrelere uygun paketleri tespit edip Log mesajı üretmek için kullanılır.

passthrough : Paket kurallara uyuyorsa sayac bir artar ve sonraki” kurala geçer.(Genelde istatistik almak için kullanılır.)

reject : Parametrelere uygun paketler, geri bilgi verilerek engellenir.

return : Atlama yapıldığı yerden zincire geri gönderir.

tarpit : Gelen TCP bağlantılarını yakalar ve tutar (TCP SYN paketine SYN/ACK ile cevap verir.)

Log kutucuğu: Hangi eylemi seçerseniz seçin Action tabında Log kutucuğu yer alır. Eğer Log kutucuğu seçilirse kural işletildiği zaman sisteme Log mesajı atacaktır. Hemen altında yer alan “Log Prefix” bölümüne ne yazarsanız Log mesajının başında yer alacaktır.

Adres Listeleri ve Adresler

Parametre olarak kaynak ve hedef adres listeleri oluşturularak kurala eklenir. Adres listeleri “/ip/Firewall/Address Lists” tabından elle oluşturulabilir. Oluşturduğunuz kuralda “Advanced” tabından “Src. Address List ve Dst. Address List” kısmından seçilerek kurala eklenebilir.

Src. Address List = Kaynak Adres Listesi (Paketlerin geldiği kaynak adreslerin listesi)

Dst. Address List = Hedef adres Listesi (Paketlerin gittiği hedef adreslerinin listesi)

Eğer Liste oluşturmadan tek ip yazılacaksa “General” Tabında “Src. Address ve Dst.Address” kısmına tanımlanabilir. Ama bu kısımlara tek IP adresi yazılabilir.

Fark etti iseniz kurallarda adres tanımları ve diğer parametrelerin girildiği kutuların başlarında ufak bir kutucuk yer alıyor. Bu kısma tıklarsanız seçili hale getirilir. Bu kısım seçili ise karşısındaki girilen parametreni tam tersi geçerlidir.

Mesela Src.Address kısmına 192.168.2.3 girili ise bu kutucuk seçilirse kural 192.168.2.3 dışındaki IP ler için geçerli olur. Diğer parametrelerde de bu durum geçerlidir.

Kelime Engelleme (Content)

En sevdiğim özelliklerinden birisi kelime engelleme diyebilirim. Forward olarak yazılan bir kuralda paket içerisinde ilgili kelime yazıyorsa paketi engellebilirsiniz.

Mesela LOKAL arayüzünden gelen paketlerde “youtube, mynet, haber” kelimeleri yer alıyorsa engellemek istiyorum. Yani bir kişi bilgisayarından adreslerinde “youtube, mynet, haber” kelimelerinin içerdiği sitelere girmesini istemiyorum. Content parametresi kullanılarak ile kural yazılabilir.

Kuralın en kötü tarafı her kuralda tek kelime tanımlanmasıdır. Bunun için kendi zincirimizi oluşturup kullanabiliriz. Aşağıda bu konuya uygun kural dizisi yer almaktadır. Kelime tanımlamalarını kuralın “Advanced” tabından bulunan “content” parametresinden yapılabilir.

Örnek Content parametresinin kullanımı.

Arayüz Tanımlama (interface)

Kuralları yazarken eğer arayüz belirtilmez ise tüm gelen paketler işletilir. Bu durumdan kaçmak istersek kuralın “General” tabında bulunan “In. Interface, Out. Interface, In. Interface List, Out. Interface List” parametrelerini kullanabiliriz.

In. Interface : Giriş arayüzü

Out. Interface : Çıkış arayüzü

In. Interface List : Giriş arayüz listesi

Out. Interface List : Çıkış arayüz listesi

Örneğin kuralda sadece LOKAL arayüzden gelen paketleri işlemek istiyorsak kuralda In. Interface kısmını LOKAL olarak seçmeliyiz.

Bazı kurallarda arayüzleri seçerken hata alabilirsiniz. Kuralın yapısı uygun değilse size hata verir ve tanımlama yapmaz.

Protokol ve Port Tanımlama

Kuralları yazarken belli protokoldeki portları parametre olarak verebiliriz. İlgili kuralın “General” tabında bulunan “Protokol, Src. Port, Dst. Port, Any. Port” kısımlarında gerekli tanımlamalar yapılabilir.

Protokol : IP protokol türü seçilir. (tcp,udp,icmp..)

Src. Port : İşlenen paket içeriğindeki kaynağın port numarası verilir.(0-65535)

Dst. Port : İşlenen paket içeriğindeki hedefin port numarası verilir.(0-65535)

Any. Port: İşlenen paket içeriğindeki hem kaynak hemde hedef port numarası verilir(0-65535)

Bir yere port ile erişim sağlandığında Src. Port kendi otomatik oluşturur. Bu şekildeki uygulamalarda Src. port değişkendir. Biz genelde Src.port sabit değilse Dst. Portu kullanıyoruz.

Port konusunu örnekle pekiştirelim.

pppoe-ou1 arayüzünden dışarı ilerleyen trafikte UDP 53 portunu engelleyelim.

Gerekli parametreleri değiştirerek farklı kurallar yazabilirsiniz.

Bağlantı Durumları (Connection Type,State)

Kuralları yazarken bağlantıların durumuna göre işleyebiliriz. İlgili kuralın “General” Tabında bulunan “Connection Type, Connection State, Connection NAT State” özelliklerini amacımıza göre parametre olarak verebiliriz.

Connection Type : Bağlantı türü seçilir (ftp,h323,irc,pptp,quake3,sip,tftp)

Connection State : 

invalid : Bir şekilde bağlantı oluşturulmamış geçersiz paketler.(Genelde engellenmesi tavsiye edilir.)

established : Mevcut çalışan bir bağlantıya ait bir paket

related : Başka bir paketin parçası olan ama başlı başına paket olmayan paketler.

new : Yeni oluşturulan bir bağlantıya ait bir paket

untracked : Bağlantı takibi RAW tablolarında atlatılmış paketler

Connection NAT State : Bağlantının Paket yönü belirtilir. İlk Yönü (Src. NAT , Dst. NAT olabilir)

Genelde aşağıdaki kuralları kullanıp cihazdaki geçersiz paketleri elemeyi tercih ediyorum.

Yukarıdaki kuralları cihazınıza eklerseniz gelen giden tüm paketlerde geçersiz olan paketleri engelleyecektir. Tavsiyem mutlaka kullanın. İnternet trafiğiniz daha stabil çalışacaktır. Bu kurallar bütününü mutlaka diğer kuralların altına yerleştirin. Üstte kalırsa başka kuralları ezebiliyorlar.

Kaynak MAC adresi (Src. MAC Address)

Bazı kurallarda paketin kaynak MAC adresini belirtip işlem yaptırmak gerekebilir. Mesela ağınızda “00:01:02:03:04:05”  adresine sahip bir cihaz varsa ve MAC adresine göre engellemek istiyorsak aşağıdaki gibi bir kural yazabiliriz.

Kuralı yazaken arayüz belirtmeniz ve “Advanced” tabından “Src.MAC Address” kısmına MAC adresi yazmalısınız.

Content” tanımlamasında olduğu gibi MAC tanımlamasında da tek Mac adresi yazılabilir. Her MAC için ya zincir oluşturmanız ya da tek tek tanımlama yapmanız gerekmektedir.

Buraya kadar Mikrotik tarafında filtre kurallarına yer verdim. Yazmadığım bir çok özellik daha mevcut. Bu yazıda en çok kullanılan özelliklere yer vermeye çalıştım. Daha detaylı  bilgileri Mikrotik Wiki sayfasından ulaşabilirsiniz.

Başka bir yazıda görüşmek üzere,

Sercan TEK

BİR YORUM YAZIN

This site uses Akismet to reduce spam. Learn how your comment data is processed.

ZİYARETÇİ YORUMLARI - 2 YORUM
  1. Vedat dedi ki:

    Merhaba sercan bey. mikrotik makaleleriniz çok faydalı. emeğiniz için teşekkürler. internette türkçe kaynak bulmak zor ama sizin yazdığınız makaleler bulunmaz nimet.

    1. Sercan TEK dedi ki:

      Teşekkürler. Yenileri gelecektir.

Yayımlanan tüm yazılar Sercan TEK tarafından yazılmaktadır. İzinsiz kullanımı yasaktır.