RSS Feed
  1. Konsol iyidir

    December 23, 2011 by Oğuz Yarımtepe

    Bilgi İşlemde sanallaştırma ile sanal sunucular oluşturup kullanıyoruz. Citrix Xen Sunucu arayüzünden kolay bir şekilde sanal bir makine oluşturup herhangi bir sistemi oluşturmak mümkün.  Bugüne kadar sıkıntısız Linux kurduğumuz sanal makineler çalışıyor idi. Bugün makinelerden birisine ssh üzerinden erişmek istediğimde ulaşamadım. Citrix arayüzünden konsoluna bakayım dediğimde göremedim. Makineyi yeniden başlat dediğimde de Citrix arayüzünde bu işe engel olan başka bir süreç var diye hata verdi. Bu durumda hatayı aratınca Xen konsolundan yardım alabileceğimi gördüm.

    Tüm sanal makinelerin olduğu sunucunun bir de konsol arayüzü var. Xene özgü komutları çalıştırmak mümkün olduğu gibi bildiğiniz Linux. Sorunu görmek için


    xen task-list

    komutunu çalıştırmanız yetiyor. Çıkan konsol yanıtında “Pending” olarak bir sürecin işaretlenmiş olduğunu gördüm. Sonrasında


    xe vm-reset-powerstate vm=makineniniziadi --force

    komutunu çalıştırdım. “… a domain still exits for the specified VM” diye bir mesaj verip altında da VM e ait bilgileri gördüm. Yazan bilgilerden birisi de domid idi.

    Sonrasında bu bilgiyi kullanarak


    /opt/xensource/debug/destroy_domain -domid yukaridakidomid

    demem yeterli oldu.

    İş yapan insan için elindeki sisteme sorun olduğunda ne kadar müdahale edebileceği en önemli nokta. Alt tarafında Linux olması, konsolla müdahale edilecek olması. Bunlar faydalı özellikler. Korkmamak lazım.


  2. Android için gerçek zamanlı “push” servisi

    December 17, 2011 by Oğuz Yarımtepe

    Android için gerçek zamanlı “push” servisine ihtiyacımız vardı. Hem Internet hem de Intranette çalışssın istiyorduk. Android için böylesi bir araştırma yapınca ilk akla gelen c2dm oluyor. android 2.2 ile gelen bu servis Google sunucularını kullanarak gerçek zamanlı olarak cihazınıza mesaj göndermenizi sağlıyor. Gel gör ki bunu için Internet gerekiyor. En tipik örneği cihaz kapalı iken, Android Markete girip bir uygulamayı indir dedikdten sonra cihazınız açılıp Internete bağlandıktan sonra o uygulamayı indirmeye başlaması.

    Biraz araştırınca MQTT kullanarak, bir aracı sunucu ile de bu işin yapılabileceğini gördüm. Hatta yapılmış örnekler de bulmak mümkün. Ben buradaki örnek uygulamasını Android projesi olarak Eclipse’e aktardım. Yerelime “broker” denilen ve MQTT üzerinden iletişip gönderdiğiniz mesajları Android cihazlara yollayacak olan bir sunucu kurdum. Tercihim Mosquitto‘dan yana oldu. Ubuntu için


    apt-add-repository ppa:mosquitto-dev/mosquitto-ppa

    demek ve sonrasında mosquitto paketini kurmak yeterli. Ayar dosyasında cihaz erişimleri için güvenlik tanımlamaları yapmak mümkün. Kullanıcı adı tanımlamak, üye olunacak başlıkları belirlemek ve bu başlıklar için cihaz IDleri tanımlamak mümkün.

    Varsayılan ayarlarla da örnek Android uygulaması çalışıyor. Derlemenin olabilmesi için MQTT için bir jar dosyasına ihtiyaç var. IBM sayfasından indirilebilir. wmqtt.jar dosyasını (J2SE dizini altındaki) Android projenizin derleme yoluna harici bir jar olarak eklemeniz gerekiyor.

    Gelen arşiv dosyası içerisinde wmqttSample.jar isimli bir de istemci örneği var. J2SE dizini altındaki bu uygulamayı yerelinizde


    java -jar wmqttSample.jar

    deyip çalıştırabiliyorsunuz. Gelen ekranda “Connect” kısmına tıklayıp sonrasında da “testing” dite bir başlığa üye olup yazdığınız mesajları “Publish” kısmına tıklayarak Android uygulamanızda görebilirsiniz.  Kaynak koddaki String topics[] = { “testing/#” }; kısmını testing olarak değiştirdim.

    Bu sayede yerel ağda/Internet’te çalışan bir MQTT sunucu kullanarak bir API aracılığı ile (Python APIsi var) Android cihazlarınıza yerel/Internet üzerinden gerçek zamanlı mesajlar göndermiş olabilirsiniz.


  3. Andorid iso ile sanal makinede Android koşturmak

    December 13, 2011 by Oğuz Yarımtepe

    Android için uygulama yazarken genel olarak Eclipse ve Android SDK kullanarak yazılan kod derleme sırasında sanal bir cihazda test ediliyor. Sanal makinenin açılması, oluşan derlenmiş apknın makineye kurulması, kurulduktan sonra sizin açılan sanal cihazda etkileşim ile menulerde gezinmeniz bazen yavaş olabiliyor. Beraber çalıştığımız öğrenciler X86 için derlenmiş ve sanal makineye kurmanızı sağlayan bir iso bulmuşlar. Projenin sayfasında sadece 2.2 için değil 2.3 ve farklı donanımlar için derlenmiş isoları da bulmak mümkün. Ben 2.2 olanını VirtualBox’a kurdum. Kurulum yapıldıktan sonra çıkan “Create Fake SD Card” seçeneğini de aktif edip kurulumdan sonra sanal bir SD kart oluşturulmasını sağlamak gerekiyor. Android’in kurulacağı bir disk yanında Virtualbox’ta oluşturulan sanal makineye ikinci bir disk ekleyip ext2 ile formatlayıp, etiket olarak SDCARD atanması da söyleniyor.[1][2]

    Sonuçta elinizde daha hızlı çalışan bir Android oluyor. Bu sanal Android’e dışarıdan bir apk kurmak da epey kolay. Bunun için Android SDK içerisinden çıkan adb komutunu kullanmak lazım:

    adb connect :5555

    ile cihaza bağlandıktan sonra


    adb install -r apk_dosyasi.apk

    komutu ile kurulum yapmak mümkün.

    Bu komut sonunda eğer sertifika hatası alınıyor ise uygulamanın kök dizininde önce


    update project --target hedef_cihaz_numarası --path .

    demek gerekiyor. Hedef cihaz numarası da


    android list targets

    komutu ile öğrenilebiliyor. android komutu da android-sdk içerisinde bulunuyor. Bu işlemden sonra


    ant -Dsdk.dir=android_sdk_yolu release

    ile uygulamanın bulunduğu dizinde bin altında imzalanmamış bir apk oluşturmak mümkün. Oluşan apkyı imzalamak için ise http://developer.android.com/guide/publishing/app-signing.html#ExportWizard adresinde yazılanları takip etmek yeterli. Sonrasında uygulamayı adb ile kurup sanal makinede denemek mümkün.


  4. Yeni nesil log tutma

    December 10, 2011 by Oğuz Yarımtepe

    Bir süredir bir log sunucusu kurmanın derdindeydik. Benim açımdan okunabilir bir şekilde tutmak önemli idi. Konsoldan dosya dosya bir takım grep bash işlemleri ile gerektiğinde log analizi yapmak istemiyordum. Klasik yaklaşım syslog-ng ile bir sunucuda logları düz metin olarak tutmak idi. Necati Graylog2 ile MongoDB kullanarak log sunucusu kurduğundan bahsetmişti. Ben de güncel yaklaşımı biraz araştırayım dedim. Sonuç olarak Logstash + Graylog2 çözümüne vardım.Aslında önerilen yaklaşım bu ikisine ek olarak bir de Elasticsearch kullanmak. Sebebi de Graylog2′nin arşivleme özelliği üzerine kurulmamış olması. Elasticsearch ile arama ve arşivleme işini büyük (örneğin 5GB) veri tabanı boyutlarında hızlandırmak. Logstash bu işin hem sunucu hem de istemci tarafımda kullanılıyor.

    Logu gönderilmek istenen sunucularda logstash çalıştırılarak Linux konsolundan bildiğimiz “tail” işlemi ile log dosyasına her eklenen satır ayar dosyasındaki çıktıya gönderiliyor. Sürekli bir takım kayıtların gönderileceği düşünülürse, gönderilecek kısmın doğrudan veritabanı değil de bir kuyruk olması daha mantıklı. Bu noktada Logstash, RabbitMQ gibi mesaj kuyruğu sistemleri ile haberleşebiliyor.Altta Apache’nin erişim loglarını gönderdiğim ayar dosyası var.


    input {

    file {
    type => "apache-access"
    path => "/var/log/apache2/other_vhosts_access.log"
    }

    }

    output {
    # Output events to stdout for debugging. Feel free to remove
    # this output if you don't need it.
    # stdout { }

    # Ship events to the amqp fanout queue named 'rawlogs"
    amqp {
    host => "A.B.C.D"
    exchange_type => "fanout"
    name => "rawlogs"
    }
    }

    A.B.C.D ile yazılan kısım RabbitMQ koşan ve log sunucusu görevi yapacak olan sunucunun IP adresi.

    Logu gönderilecek olan kısımda java komutunun çalıştırılabilir olması gerekir.

    Konsolda aşağıdaki komut ile ayar dosyasının okunup Apache erişim kayıtlarının mesaj kuyruğuna yollanması sağlanabilir.


    sudo java -Dlog4j.debug -Dlog4j.configuration=file:/home/oguz/logstash/log4j.properties -jar logstash-1.0.17-monolithic.jar agent -f logstash.conf


    Log sunucusu görevi görecek olan kısımda RabbiMQ yanında Graylog2 sunucusunun koşması gerekiyor. Graylog2 sunucusunun ve web arayüzünün kurulum ve çalıştırılması wikisinde gayet güzel anlatılıyor. Logstashın'da çalışıp RabbitMQ kuyruğundaki mesajları alıp Graylog2'nin anlayacağı Gelf biçiminde ona göndermesi gerekiyor. Ayar dosyası şu şekilde:


    input {
    amqp {
    # ship logs to the 'rawlogs' fanout queue.
    type => "all"
    host => "A.B.C.D"
    exchange_type => "fanout"
    name => "rawlogs"
    }
    }

    filter {

    grok {
    type => "apache-access" # for logs of type 'apache-access'
    pattern => "%{COMBINEDAPACHELOG}"
    }

    date {
    type => "apache-access"
    timestamp => "dd/MMM/yyyy:HH:mm:ss Z"
    }
    }
    {>
    output {
    #stdout { }
    }>
    gelf
    {
    host => "A.B.C.D"
    }

    }

    Logstash burada Grok isimli filtreleme ile gelen mesajları biçimlendirip o şekilde kaydetmenizi sağlıyor. Graylog2 web arayüzünde de kaydedilen log kayıtlarını anlık olarak görmek mümkün. Arayüz gerçek zamanlı olarak size sonuç gösteriyor. Filtreleme yapıp arama yapmanız rahat. Hangi uçlardan ne mesajı görmeniz gayet kolay. Otomatik olarak uçlardan gelen logları size toplu olarak gösteriyor.  İşin 5651 kısmı için böylesi bir yaklaşım uygun mudur pek emin değilim. Sorduğum arkadaşlar log kaydının metin olması, belli bir biçimi olması gerektiğini söyledi. Ben bu veri tabanının "dump" edilmiş halini imzalasam ve saklasam da 5651 için uygun olur diye düşünüyor idim. Böyle değilse bile Logstash sadece log dosyanızın sonuna eklenen satırları anlık olarak işlediğinden, hala elimizdeki log dosyalarını syslog-ng ile bir yerlerde saklamak mümkün. Bence bir web arayüzünden kaydı tutulan loglar ile ilgili neler olup bittiğini görmek için güzel bir çözüm.


  5. GSoC, hayat, yaz

    July 13, 2011 by Oğuz Yarımtepe

    GSoC 2011′de ara dönem değerlendirme sürecine girildi. Bu zamana kadar yapılanları danışmanlar bildirirken, öğrenciler de hem organizasyonu hem de danışmanlar hakkındaki fikirleri belirten anketi dolduruyor.

    Ben bu ana kadar bir “proof of concept” olması için 3 boyutlu bir dünya üzerinde kötü amaçlı yazılımların dağılımlarını görselledim. Bakmak isteyenler için WebGL destekli bir tarayıcı gerektiğini belirteyim. hpfeeds yardımı ile merkezi bir balçanağından (Dionaea) çekilen verilerin coğrafik koordinatlarına göre görsellenmesi prensibine dayanıyor. Bar uzunlukları kötü amaçlı yazılım miktarlarına karşılık geliyor. hpfeeds ile çekilen veride henüz zaman damgası olmadığından zamana göre gruplanmış verilerde henüz anlamlı bir bilgi yok.

    Şimdilerde de mesh oluşturup bu verileri grid üzerindeki dalgalanmalar olarak göstermeye çalışmaktayım.  Meraklısı için detaylı İngilizce bir girdiyi buraya yazmıştım.

    GSoC’un bu ara dönem değerlendirmesinden önce yatan ilk ödeme ile kendime epeydir istediğim internet tablet ve Kindle aldım. Tablet için Archos 101, Kindle için de Kindle 3 (114$) olanını tercih ettim. Elde 500$ olunca hazır da birileri USA’den gelirken getirebileceği için bu iki ürünü Amazon’dan sipariş etmiştim. 10” tableti genelde tarayıcıda ya da PDF’te bir şeyler okumak için kullanıyorum. Firefox’un Read It Later eklentisini kullanıyorum. Android tarafındaki uygulaması yardımıyla da, gün içinde okumaya üşendiğim ya da sonraya bıraktıklarımı açıp okuyabiliyorum. Ekran başında oturamayıp, Twitter da neler oluyor veya ExDergi sayılarını okumak için oldukça rahat bir alet, internet tablet.

    Kindle ile de aram iyi sayılır. Kindle’ı olanlardan (Sedat Gündüz ve Necdet Yücel) edindiğim mobi formatında kitaplardan sonra, Instapaper kullanarak okuduklarım daha bir zevkli geliyor. Mesela Murat Eren‘in uzun günlük girdilerini Instapaperdan Kindle cihazıma yollatıp okuyorum.  Calibre kullanarak çevirdiğim PDF formatındaki bir doktora tezi de başarılı bir şekilde Kindle’da okunabiliyor.

    5 Eylül’de evleniyorum. Kıbrıstayken planladığımız süreç , önce Çanakkale’ye geliş, sonrasında evlilik hazırlıkları ile devam etti. Sürecin kendisi hiç bitmeyecek gibi dursa da 5 Eylül’den sonra başka süreçler içerisinde olacağımı biliyorum.


  6. Yaz kodlaması bu Pazartesi başlıyor

    May 22, 2011 by Oğuz Yarımtepe

    GSoC 2011′de zaman çizgisinde kodlamanın başlayacağı güne geliyoruz. Pazartesi artık projeyle ilgili takvim çalışmaları ve okumalar yerini kodlamaya bırakacak.

    Honeynet projesinde, geçen haftalarda herkese projeleri için Redmine ve git hesapları verildi. Bizle de süre zarfında, projemizle ilgili detayları danışmanlarımızla konuşarak belirlemeye çalıştık. Ben kendi adıma kafamda neyi nasıl yaparımı araştırdım. Araştırmalarım sonunda kafamdaki çözümü netlleştirdim denebilir. Geçen hafta içerisinde de artık birer zaman çizgisi belirlenmesi istendi. Diğer tüm öğrenciler gibi ben de uyabileceğim bir zaman çizgisi yazdım. Ayrıca tüm kabul edilen öğrencilere honeynet.org üzerinde birer de Drupal hesabı açılıp, haftalık olarak buraya günlük yazılması da istendi. Ben buna mümkün olduğunca uymaya çalışıyorum. Takip etmek isteyenler için benim günlüğün de yer aldığı Honeynet günlük adresi burada.

    Honeynet projesinde bir haberleşme listemiz yanında bir de “Chapter” dedikleri ve ülke bazlı çalışan ekiplerin olduğu listemiz var. Tüm “Chapter” ların listesine bakarken henüz Türkiye için bir çalışma grubu oluşturulmadığını da farkettim.  Türkiye’de Honeynet projesi ile ortak çalışan birileri var mı bilmiyorum ama projeye olan katkım arttıkça Türkiye için bir Chapter oluşturmak faydalı olabilir diye düşnüyorum. En aktif gruplardan birisi Australian ekibi. Çinliler de epey bir yazılım geliştirmiş durumda. Şimdilik fikir aşamasında olan bu niyetim, projeye olan katkım arttıkça şekillenir diye düşünüyorum.

    Tüm kabul edilmiş arkadaşlara kolay gelsin diyorum :)


  7. Internet yasakları

    May 15, 2011 by Oğuz Yarımtepe

    Bugün Türkiyedeki diğer illerde olduğu gibi, 22 Ağustosta uygulanacağı söylenen yeni Internet erişim kurallarını protesto etmek için Çanakkalede de bir yürüyüş vardı. LKD Bayrakları da yürüyüşte yerini almıştı.

    Öyle kalabalık denecek bir katılım yok idi. Bu akşam bahar şenlikleri kapsamında konser verecek Gripin, Uykusuz sever gençler, bir iki bilgisayar mühendisliği öğrencisi ve bilmediğim bazı aktivistler… Kordon boyunda yapılan yürüyüşte kimi görenler garip garip baktı ne diyor bu adamlar ne sansürü dedi, kimi alkışlayarak destek oldu. Siyasi bir eylem değildi yapılan. 22 Ağustosta seçmemiz gerekecek ve aslında yasal bir dayanağı da olmayan ve adeta bir dayatma gibi sunulan adı da paket olan, önceden tanımlanmış filtreli erişimlerden birini seçmemiz gerektiğini okuyup duyan herkesin noluyoruz yahu bu ne saçma işmiş demek için yaptığı bir yürüyüştü. Hala ne olduğunu bilmeyenler varsa buraya ekleyeyim. LKD son olarak tüm üyelerine de gönderdiği bir basın açıklaması yaparak durumu ortaya koymuştu:
    00000000.LKD Internetime Dokunma Basin Aciklamasi 15may2011

     

    Eskiden ama çalıştığım konular ile ilgili ama gündemle ilgili sağda solda lafı geçen, bu zaten biliniyordur dediğim konuların gerçekten de bilindiğini sanırdım. Son zamanlarda karşılaştığım durumlar gösteriyor ki, gerçekler öyle değilmiş. Ben de söylemiş olayım, bir kurumun/kişinin herkes adına Internet erişimi ile ilgili karar alıp sonra da bunu seçeceksiniz demesi anti-demokratiktir. Kamu görevlisi olanlar bu tür yaptırımlara pek alışkındır muhtemelen. Ama biz çekiyoruz bari memleketin kalanına yapmayalım ve bu erişim yasaklarını bu işin uzmanları, STKlar ve mümkün olduğunca çok kafa ile oturup karara bağlayalım.


  8. Çanakkale deyip geçme

    April 25, 2011 by Oğuz Yarımtepe

    Eskiden daha sık yazardım. Şimdilerde artık sadece önemli güncellemeleri yazar oldum. Hazır GSoC2011 başvuru sonuçları açıklanmışken, ben de yazayım. Başvurusu kabul edilenlerden birisi de benim. Necdet Hoca dürtmese GSoC’a başvurmayı planlamıyordum. Acaba ne tür projeler varmış diye baktığımda ilk yaptığım, arama kısmına “visualization” yazmak oldu. Doktora konumla ilgili belki bir proje vardır diye ümit etmiştim. Honeynet‘in açtığı projeleri görünce de heyecanlanmıştım. Elimi kirteletebileceğim, doktora çalışmalarımda da faydası olacağını düşündüğüm 4 numaralı projeyi hemen farkettim.

    Önce organizasyonun, haberleşmek için duyurduğu eposta listesine projeyle ilgilendiğimi belirten bir eposta attım. Bunu yapmadan önce proje detaylarını okumuştum. Gereksinim olarak belirttiklerini incelemiştim.Epostayı attıktan kısa bir süre sonra özelden, proje sorumlusundan bir yanıt aldım. IRCde konuşalım diyordu. Projenin irc kanalına girdim. Proje sorumlusu önceden benim kişisel sayfama gitmiş, yaptığım projeleri incelemişti. Python kullandığımı görmüştü. Python mu kullanmayı tercih edersin diye sorduğunda evet dedim. Benden bu projeyi Python ile Web ortamında nasıl çözerimle ilgili bir yanıt istedi. Ben de araştırıp döneyim dedim. Biraz çalışıp bir çözümle gittim.”Proposal” olarak yazmadan önce de bir ön değerlendirmesini aldım.

    Honeynet’in açtığı diğer bir proje, okuyunca hemen her Django tecrübesi olanın kolay bu iş yapılır dediği tarzdandı. Ve bu projeye epey bir başvuru da olmuştu aslında. Eposta listesinde özellikle Hintli katılımcıların başvuru talepleri yığılı idi. Olsun deyip proje ile ilgili yazışmaları okudum. İlgilendiğimi göstermek için bir eposta da ben attım. Atarken teknik detaylar sordum. IRCde sorumlusunu yakaladıkça konuşmaya çalıştım. Başvurumla ilgili benden 2 Python kodlaması ve bir araştırma sorusu cevabı istediler. Python soruları pek de zorlayacak türden değildi. Hızlıca yanıtlayıp yollamıştım.

    İlk başvurduğum ve ümitli olduğumdan bu akşam olumlu yanıt geldi.

    GSoC başvuru sürecinde proje sorumluları ile konuşmak,projeyi anlamak, kafanızda bir çözüm oluşturabilmek, olası sorulara hazırlıklı olmak, belli zamanlarda proje geliştiricinizi ircde dürtmek önemli.

    Çanakkale’den bu sene 3 kişi daha var kabul edilen. Çomak ekibinin insanları hepsi de. Bilgi İşlemde beraber projeler yapmaya çalıştığımız başka gençler de var. Beraber iş yapıyor olmasak bu kadar Çanakkale adını duymazdınız. Gelecek dönemlerde daha çok Çanakkale adı geçer diye düşünüyorum :)

     


  9. Kürkçü dükkanına dönüş

    February 28, 2011 by Oğuz Yarımtepe

    Lisans öğrenimimi tamamladığım Çanakkale’ye yerleşmek üzere geri döndüm. Bir zamanlar yarı zamanlı çalıştığım Bilgi İşlem Dairesi’nde gene Necdet Hoca ve diğer sevdiğim insanlarla, bu sefer tam zamanlı bir şekilde çalışıyor olacağım. Buradan mezun olurken bir röportaj yapılmıştı benle, hatırlıyorum. Orada üniversitenizde kalıp çalışmayı düşünür müsünüz diye sormuşlardı. O zaman, şimdi olmasa da ileride dönüp burası için de çalışmak isterim demiştim. O zaman bunu derken, 5 sene sonra evlenip Çanakkale’ye yerleşme planı yapacağım aklıma gelmezdi. Tekrar Çanakkale’de olup aynı heyecanlarla iş yapacak olmak beni mutlu ediyor.


  10. Doktora yolları

    August 27, 2010 by Oğuz Yarımtepe

    Geçtiğimiz Çarşamba itibari ile DEU Bilgisayar Mühendisliği doktora programına kaydımı yaptırdım. Yüksek lisanstan mezun olduğumda tez sürecinden sonra doktora felan yapmam arkadaş diyordum. Şimdi hayatımda başka parametreler  de var , var olanların bazıları da değişti. O zamanki bakış açım ile şimdiki fikirlerim arasında farklılıklar var. Artık şimdilerde doktora ile ilgili başarmak istediğim hedefler belirleyebiliyorum.

    Doktoraya başlayacağım için biraz heyecanlıyım. Beraber çalışmayı planladığım hocanın bundan 4-5 sene sonrası için bir tez yapmayı planlıyor olmam ve bilgisayar dünyasında bu süre düşünülecek olursa ortaya koymam gereken çalışmanın ciddiyetini hatırlatması doktorada düzenli çalışmanın gerekliliğini bir kere daha hatırlamamı sağladı. Şu ana kadarki doktoraya alım ve kayıt süreci bence memnunluk vericiydi. Dokuz Eylül bu konuda gayet sistematik çalışıyor demeliyim. Çalışmak istediğiniz bir konu ve hoca bulmak işin kabul kısmını büyük ölçüde çözüyor. Bir takım sınav değerlerinin üzerinde notlarınızın olması, sınav ve mülakatta asgari başarı sağlamanız işinizi garantiliyor. Sonrası düzenli derse gitmek, hocayla çalışmak ve bir takım hedefleri gerçeklemeye çalışarak geçecek gibi.