logo Unutmayayım diye yazdıklarım...


C# ile Mikrotik API'sinin Kullanımı

14.07.2009 tarihinde oğuzhan tarafından yazıldı.

Bazı ufak ölçekli ağlar'da Mikrotik kullanıyoruz ve bazı ufak ölçekli network'lerede saldırılar ve izinsiz erişimler olabiliyor. Bunları mümkün olduğunca otomatize etmek gerekiyor ve bunun içinde Mikrotik'in API'sini kullanıyoruz.

Genelde senaryomuz sunucuda çalışan belirli servislerin olaylarını (Events) yakalayıp (Örneğin MSSQL'in AUDIT_LOGIN_FAILED event'ı) belirli değerlerin dışındaysa sisteme erişimini kapatmak şeklinde gelişiyor. Bunun sisteme erişimi kapatmak kısmında da C# ile mikrotik'e erişip firewall bölümünün Filter kısmına yeni bir rule eklemek oluyor. Bunuda aşağıdaki şekilde gerçekleştiriyoruz.

Mikrotik Wiki'sinde her dilde mikrotik'e ulaşabileceğiniz client sınıfı hazır olarak var. C# class'ı için  http://wiki.mikrotik.com/wiki/API_in_C_Sharp adresine bakabilirsiniz. Daha sonra aşağıdaki gibi bir kod işinizi görecektir.
        static void IpBlokla(string ip)
{
MK mikrotik = new MK("10.5.5.1"); // Mikrotik IP
if (mikrotik.Login("mikrotik_user", "password"))
{
mikrotik.Send("/ip/firewall/filter/add");
mikrotik.Send("=action=drop");
mikrotik.Send("=chain=forward");
mikrotik.Send("=dst-port=25");
mikrotik.Send("=protocol=tcp");
mikrotik.Send("=protocol=tcp");
mikrotik.Send(String.Format("=src-address={0}",ip));

mikrotik.Send(".tag=firewall", true);

foreach (string h in mikrotik.Read())
{
Console.WriteLine(h);
}
}
}
Bu C#'kodu Firewall bölümüne drop tipinde yeni bir rule ekliyor ve TCP protokolünün 25. portunu blokluyor. Tabi sizin vereceğiniz IP doğrultusunda çalışıyor.

Burda önemli olan komut'u sonlandıracağınızda bir .tag belirleyip Send metodunun endsentence parametresi vermeniz.

Mikrotik API'si için geçerli bir komut oluşturmak normal terminal komutu ile aynıdır buna bir örnek vermek gerekirse;
Terminal için kural
/ip firewall filter add action=drop chain=forward disabled=no dst-port=8911 in-interface=Local protocol=tcp
API için kural
/ip/firewall/filter/add =action=drop =chain=forward =disabled=no =dst-port=8911 =in-interface=Local =protocol=tcp
API'de oluşturabileceğinzi komutların terminalden tek farkı boşluklar yerine / (Slash) ve özelliklerin başınada = (Eşittir) işareti koymanız.

Mikrotik'in bu özelliğini kullanarak istediğiniz kuralı (Lisansınızın Level 4 ve üzeri olması gerekiyor) API ile oluşturup gönderebilir ve otomatize edebilirsiniz.

Son olarak hazırladığımı C# projesini aşağıdan download edebilrisiniz.

Download MkClient_Source.rar


 

#Murat Eltimur+, 21.08.2009 01:22:33 tarihinde demiş ki...
ICollection türetilen her sınıfı seviyorum. Çok Çok eskiden datatable kullanmaktan gına gelmişti :)

Combobox, Grid vb. datasource kullanabilen tüm componentler için Collection ve/veya List kullanmayı öneririm. Ayrıca bu türlerde linq ile verileri kolayca sorgulayabiliriz. Aşağıdaki gibi örneklerde hata yapmamızı azaltacaktır. GetProductDetail() metodundan dönen listeği hertürlü datasource de kullanabiliriz.

[Serializable]
private class Detail
{
public Guid Oid { get; set; }
public string ShortContent { get; set; }
public string BannerPathString { get; set; }
public string LargeBannerPathString { get; set; }
}

protected List<Detail> GetProductDetail()
{
List<Detail> listDetail = new List<Detail>();

foreach (Product
#Sertunc SELEN+, 29.06.2010 11:04:52 tarihinde demiş ki...
Merhaba oğuzhan bey user edit komutu apı uzerınden nasıl gönderebılırız.

tool user-manager user edit
number:abcd
value-name:uptime-limit
3h
ctrl-c

Yorum Yapın
İsim (String)
Mail (String)
4, 4 daha yapar. (Int)

*NVarChar*3 + html desteğide yok.
(bit)
Sosyal Ağ Antenleri
Blog RSSLinkedinFacebookFlickrTwitterFriendfeedGoogle ReaderYoutubegit
  • Açılış
  • Projelerim
  • Arşiv
  • İletişim
  • En çok ilgi görenler...

    HP IPAQ 914c
    Mikrotik
    NETSH'dan faydalanmak
    Togi Twitter Client
    Mikrotik ADSL Bridge.
    Netsis SQL Raporları.
    SQL Server Optimizasyonu.
    VBScript.Encode - Encode
    C# ile DataGridView den Excel 'e
    C# ile mail gönder
    Netsis SQL Server Değişikliği.
    Windows Sunucularda SYN Atakları.

    Rastgele birşeyler...

    localdedicated.com...
    Askerlik Yoklama Mac...
    Mikrotik ADSL Modem ...
    VB6 Atraksiyonu...
    Ivır Zıvır...
    Aha Burdayım...
    Balıklıova Çadır Kam...
    ClickOnce ve Mime Ty...
    Zıçtık Abicim...
    SQL Server Optimizas...
    Busa'dan ilk entry...
    LOG :) Cilgin Bedish...
    LOG :)...
    Hafızama Kazınanlar...
    İp ucu: Asp.Net Rend...
    MSNRobotu 0.5 Beta R...

    Şebeke

    WHT, Fıroİş, Denizİş, Serkan, Semih, Sewgi, Beşir, İzgençvos, Erkan, Mumin, Aliİş, Lütfü, Alper, Yusuf

    2003 - Oğuzhan YILMAZ
    Bir şey alıntıladığınız zaman kaynak göstermeniz yeterli.


    Web Hosting Sponsor Vargonen Technologiies