2 Mayıs 2011 Pazartesi

OpenBSD Nedir?

OpenBSD, BSD işletim sistemi ailesinin en iyi bilinen üyelerinden birisidir. OpenBSD denildiğinde ilk olarak akla gelen güvenlik olmaktadır. Ancak OpenBSD güvenlik konusundaki ünü yanında günümüzde alıştığımız ve en başından var olduğunu ve bugüne dek süre geldiğini sandığımız bir çok uygulamanın da asıl kaynağıdır. Bunlar, geliştirme sürecine svn/cvs üzerinden açık erişim, herkesin erişebildiği ve yine arşivlerin herkes tarafından okunabilen e-posta listeleri gibi bugün için olmazsa olmaz olarak değerlendirilen bir çok uygulama OpenBSD geliştiricileri tarafından ilk olarak uygulamaya konulmuştur.



Yukarıda adı geçen uygulamalar OpenBSD projesinin başlangıcında Theo De Raadt ve diğer geliştiriciler tarafından alınan kararlar ile uygulamaya konulmuştur. Bu kararların alınmasının temel nedeni ise Theo De Raadt'ın aralarında olduğu NetBSD geliştiricileri arasında yaşanan olaylardır. Theo De Raadt, NetBSD geliştirici ekibinden çıkarılması ile NetBSD CVS erişiminin kaldırılmasının üzerine OpenBSD geliştirmeye başlamıştır. OpenBSD geliştirme süreci, NetBSD projesinde yaşanan sorunların bir daha yaşanmaması için yukarıda sözünü ettiğimiz CVS ve e-posta listeleri de dahil olmak üzere geliştirme sürecinin şeffaf olmasını sağlamak için yapılan değişilikler kısa zamanda diğer projeler tarafından benimsenmiştir. Bugünkü “açık” geliştirme süreci aslında OpenBSD bize bir armağanıdır desek yanlış olmaz. ;)

Theo De Raadt ve diğer geliştiricilerinin OpenBSD geliştirilmesi konusundaki düşünceleri, ekibi ve OpenBSD'i en güvenli işletim sistemi olarak algılanmasına neden oldu. Bu da OpenBSD diğer BSD işletim sistemi ailesi içerisinde yaygın olarak bilinen işletim sistemlerinden birisi yaptı. Bugün için OpenBSD bir çok devlet, kamu ve özel kuruluş tarafından yaygın olarak kullanılmaktadır. OpenBSD kullanan kurumların listesine bakıldığında bunlar arasında kamu ve özel kurumlarında bulunduğu görülmektedir. Bu kurumlardan bazıları OpenBSD hem masaüstü hem ağ yönetimi için OpenBSD kullanmaktadır. Ayrıca Fortune 500'de yer alan şirketler içerisinde OpenBSD kullanan da bulunmaktadır.

OpenBSD her ne kadar gücvenlik konusunda parlak bir sicile sahip olsa da geliştiriciler, OpenBSD güvenlik, doğru kod, kullanılabilirlik ve özgürlük olarak tanımladıkları dört ana konuda kusursuz olmasını amaçlamaktadırlar. OpenBSD için bu dört ana ilke geliştirme sürecine ve geliştiricilere yön veren temel ilkelerdir.

OpenBSD'nin NetBSD gibi bir çok farklı platformda çalışabilmesi bu temel ikeleler sıkı sıkıya olan bağlılık ile sağlanmaktadır. Geliştiriciler çalışmalarını yazdıkları kodun kusursuz, doğru ve güvenli olması için özen gösterirler. Bunun da en iyi örneği OpenBSD'dir. OpenBSD kaynak kodunun bir çok farklı platformda hatasız ve güvenli olarak çalışabilmesi bu özenin sonucudur. Hatasız yazılan kaynak kodun sorun yaratması veya çakılması olasılığı yok denecek kadar azdır. Bu da beraberinde hatalardan arındırılmış olan kodun olası güvenlik zayıflıklarından bağışık olmasını da sağlamaktadır. BSD işletim sistemi ailesinin diğer üyelerine bakıldığında hepsinin farklı amaçlara sahip olduklarını görebiliriz. FreeBSD için aktarılabilirlik, az kaynağa gereksinim duyan güçlü bir sistem, yazılım yönetiminde basitlik, ve terfi sürecinin basitleştirilmesi asıl hedefler olmaktadır. NetBSD için ise aktarılabilirlik ve doğru kod yazımı birinci derecede önceliklidir.

OpenBSD Üstün Yanları

Aktarılabilirlik

OpenBSD bir çok farklı işlemci ve platformda çalışacak şekilde tasarlanmıştır. Bugün kullandığımız x86, x86-64 işlemcilerden başlamak üzere Macintosh bilgisayarların PowerPC ve 68000 işlemcileri üzerinde çalışabilir. -Eski- SUN sistemlerin tamamında kullanabilirsiniz. Hatta adını belki ilk defa duyduğunuz HP300 ve VAX sistemlerde dahi çalışır. Kısaca özetleyecek olursak rastlayacağınız her platform ve işlemcide OpenBSD büyük bir olasılıkla çalışacaktır. Desteklene platformalar ve işlemcilerin güncel listesine OpenBSD sitesinden erişebilirsiniz.

Az Sistem Kaynağı Tüketimi

OpenBSD desteklediği platformlar ve işlemciler listesine göz atacak olursanız piyasada bulunmayan veya üreticisi tarafından desteklemeyen/üretilmeyen sistemlerde de çalıştığını görebilirsiniz. Bu geliştiricilerce bilinçli olarak yapılmış bir tercih değildir. Tersine OpeNBSD projesinin ilk başladığı günlerde bulunabilen sistemler ile geliştirme süreci başlamıştır. Geliştiriciler bu sistemleri desteklerken OpenBSD hızını ve donanım uyumluluğunu olabildiğince korumaya çalışmaktadır. Eğer iş yerinizn bodurumunda demirbaş envanterinden çıkarılmış ama nasılsa unutulmuş bir HP300, Vax, 386 veya 486 sisteme erişebiliyorsanız, bu donanımlar üzerinde çalışacak olan her yazılım veya sistemdeki en küçük hata bile anında ortaya çıkacaktır. Güncel bir donanım kullanmanız durumunda bu hataları fark etmeniz pek mümkün değildir. Donanımda ve yazılımdaki gelişmeler İnternet'in de etkisi ile oldukça hızlanmış olduğu için OpenBSD geliştirme araçlarında da bu değişimler olacaktır. Değişimlerin neden olacağı bazı sorunlar kaçınılmaz olarak karşınıza çıkabilir ama geliştiriciler bu sorunları olabildiğince ortadan kaldırmak için çabalamaktadır. Dolayısıyla da OpenBSD geliştirilirken olası sorunlar zaten belgelendirilmiş ve çözülmüş olacaktır.

Bu eski donanımlar üzerinde OpenBSD performans kaybı olmadan çalışabilmesi için geliştiriciler sistem kaynaklarının kullanılması konusunda olabildiğince tutumlu davranmaktadırlar. Sistem kaynaklarına duyulan gereksinim en düşük düzeyde olması sağlanırken uygulamaların da gereksinim duydukları sistem kaynaklarına erişebilmesi sağlanmaktadır. Elinizde altında 1 GB disk ve eski bir Pentium 100 işlemcili sistem bulunuyorsa bunu rahatlıkla bir web sunucusu olarak kullanabilirsiniz. Hatta ağ geçidi/yönlendirici olarak kullanacak olursanız emekli olduğunuzda bu sistem halen çalışıyor olacaktır. Donanım arızası olmadığı sürece. :)

Belgelendirme

Bir çok yazılım projesi genelde kararlı sürümü duyurup kaynak kodları dağıtmayı yeterli olduğunu belirtir. Hatta belgelendirmeyi sormanız durumunda size anlaşılması zor olsaydı o zaman bu kodu yazmadık gibi bir yanıt verirler. Bazıları ise yazılım içerisinde “--help” veya grafik arayüzde bir yardım menüsü ekleyerek bunun içerisinde yer alan bir kaç maddenin yeterli olduğunu belirtirler. Daha iyi durumda olduğunu düşündükleriniz içerisinde olanlar kılavuz sayfası hazırlar ama bu sayfa eksik veya eski sürüme ait olabilir.

OpenBSD geliştiricileri için belgelendirme olmazsa olmazdır. Belgelendirmenin aynı zamanda açık, doğru ve kesin olması zorunludur. Bu koşullar tüm belgelendirme için kesinlikle uyulması gereken kurallardır. Sistem ve kütüphanelere ilişkin kılavuz sayfalarına göz atacak olursanız bu sayfaların ayrıntılı ve konuyu bütün yönleri ile kapsadığını görebilirsiniz. Diğer BSD sistemler ile çalışmışlığınız varsa OpenBSD kılavuz sayfalarının aynı zamanda e-posta listelerindeki tartışmaları, nasıl kullanacağınıza ilişkin örnekleri ve güvenlik konusundaki uyarıları da kapsadığını görebilirsiniz. OpenBSD geliştiricileri ayrıntılı kılavuz sayfaları hazırlamakla birlikte aynı zamanda OpenBSD kaynak kodunu geliştirmekte gösterdikleri duyarlılığı da aynı zamanda belgelendirmede göstermektedir. Belgelendirmede rastlana en ufak eksik veya hatalı girdi bit hata, güvenlik zafiyeti gibi değerlendirilip acile olarak düzeltilir veya tamamlanır.

Doğru Kod Yazmak

OpenBSD geliştiricileri geliştirdikleri çözümlerin doğru ve hatasız olarak uygulanmasını prensip haline getirmiştir. Bir diğer deyişle POSIX ve ANSI standartlarını yani UNIX standartlarına uyarlar. OpenBSD geliştiricileri için yazdıkları kodun güvenli ve doğru olmasını sağlamak için geliştirme süreçlerini buna göre sıkı bir şekilde kontrol altında tutarlar. Doğru ve güvenli olarak yazılan kod her zaman kabul görür tersi durumda ise red edilir. Bu yaklaşım doğru yazılan kodun beklendiği gibi çalışacağını, hatalardan arındırılmış olacağını ve sürprizler yapmayacağını garanti eder. Bir çok yazılım projesinde yazılan kodun derlenebilmesi ve çalışması geliştirici açısından yeterli bir ölçüdür. OpenBSD geliştiricileri için ise bu kabul edilebilir niteliğe sahip olan bir kod yazıldığını kanıtlamaz. Yazılan kodun OpenBSD yer alması için teklif edildiğinde, geliştiriciler önerilen kodu kontrol eder ve kabul edilemez bulduklarında bunu geri çevirirler. Geri çevrilen kod diğer bir çok projedeki geliştiricilerin aksine nasıl daha iyi yazılabileceğine ait önerileri içeren yapıcı bir eleştiri ile geri dönecektir. Eğer hakaret edileceğini veya zekanız ile ile ilgili bir şeyler okumayı bekliyorsanız OpenBSD geliştiricileri sizi hayal kırıklığına uğratacaktır.

Güvenlik

OpenBSD en güvenilir işletim sistemi olma iddiasındadır. Bu iddiayı haklı çıkaracak olan kusursuz bir sicile sahip olmasının ardında yukarıda belirtilen doğru kod yazılmasına gösterilen duyarlılık olduğu kadar güvenlik konusunda da aynı derece de hassas olmak yatmaktadır. Güvenlik zafiyetlerinden arındırılmış kod yazılması ve bunun sürdürülmesi ciddi bir çabayı gerektirir. Bugün güvenlik konusu bilerek ve isteyerek göz ardı edilmektedir. Çünkü bugün için yenilik veya yeni bir özellik olarak sunduğunuz her şey yarın için bir güvenli kaçığı olabilmektedir. OpenBSD geliştiricileri geliştirme sürecinde ortaya çıkan her türlü hatayı ve zayıflığı yakından izlemektedir. Bu ortaya çıkan hatalar ve zayıflıkları tüm kaynak kod üzerinde tarama yaparak aralar ve bulunduğunda da gecikmeden önlem alırlar. Böylelikle zayıflığın farkına varılıp bunun istismar edilerek sisteme zarar verilmesinin önüne geçerler. OpenBSD geliştiricileri için önemli olan nokta sorunların ortaya çıkmadan önce çözülmesi ve ortadan kaldırılmasıdır.

Söz konusu güvenlik olduğunda OpenBSD parlak bir sicili olmakla birlikte bugün halen OpenBSD çalıştıran sistemlere yetkisiz erişimler gerçekleşmektedir. Bunun nedeni OpenBSD iddia edildiği kadar güvenli olmaması değil, tersine olarak sistemi kuran ve kullana kişi veya kişilerin bilgisayarların güvenliğinden anlamamasıdır.

OpenBSD yapısında bir çok güvenlik mekanizmasını barındırmaktadır. OpenBSD güvenli olduğunu öğrenen kullanıcılar bu güvenlik mekanizmalarının sisteme kuracakları tüm yazılımları da kapsadığını ve her soruna çözüm olduğunu düşünürler. Bu düşünce sadece güvenlik konusunda kara cahil olan kullanıcının kafasından çıkacaktır. Hangi işletim sistemi olursa olsun, sistemi işleten veya yapılandıran kullanıcının hatalarından kaynaklanan sorunlardan bağışık olamaz. Kurulun yazılımların hatalarından işletim sistemi bir noktaya kadar korunabilir, bağışık olabilir. Ancak tüm sorumluluk her zaman için sistemi kuran ve yapılandıran kişinin bilgisi, deneyimi ve becerisine bağlıdır.

Bir sunucuda işletim sistemi olarak OpenBSD kullanılmakta olduğunu düşünelim. OpenBSD, sunucu olarak güvenilir bir platform olarak üzerine düşeni yapacaktır. Üzerinde çalışan sunucu yazılımının sistem yöneticisinin izin verdiği sınırlar içerisinde isteklerine yanıt verip çalışmasını sağlayacaktır. Sunucu yazlımında ortaya çıkacak olan olası bir sorunda ise sorun sadece sunucu yazılımı ile sınırlı olarak kalacak ve sistemin geri kalanına bir zarar vermeyecektir. Tersine olarak sistem yöneticisi herhangi bir önlem lamadan sunucu yazılımının sınırsız veya çok geniş yetkiler ile çalışmasını sağlaması durumunda ise sorun tüm sistemi tehlikeye atabilir. Yetkisiz bir erişim durumunda ise sisteme sızan kişiler sunucu yazılımını kullanarak işletim sistemine de erişebilirler. Bu durumda sorun işletim sisteminden kaynaklanmamaktadır. Sorunun kaynağı sistemi yapılandıran kişinin hatasıdır. Daha önce de belirttiğim gibi hangi işletim sistemi olursa olsun kullanıcıdan kaynaklanan sorunlardan bağışık olamaz.

Özgür

OpenBSD diğer BSD sistemlerdin de kullandığı BSD lisansını kullanmaktadır. OpenBSD edinip herhangi bir sınırlama olmadan kullanabilirsiniz. Kaynak kodlar üzerinde yapacağınız değişiklikler için geliştiricilere geri bildirim de bulunmak durumunda değilsiniz.

Burada şu soru akla gelebilir. BSD işletim sistemi ailesi temelde AT&T'nin BELL Laboratuvarlarında geliştirilen UNIX sistem ile ilişkisi olduğuna göre ilk UNIX sistemlere ait olan kaynak kodu barındırabilir. Bu durumda da farklı lisanslara sahip olan kaynak kod barındırması söz konusu olabilir. Bu durumda bu kadar özgür olması nasıl mümkün olabilir?

OpenBSD ve diğer BSD işletim sistemi ailesinin üyeleri AT&T ve diğer farklı lisanlara sahip olan kodu barındırmaz. Bu kodlar uzun zaman önce sistemden ayrıştırılmıştır. Ayrıca farklı lisanslara sahip olan kodlarda yarıştırılmış ve sadece BSD lisansı ile dağıtılan kodlar bırakılmıştır. Bu konuda OpenBSD projesinin kurucusu ve geliştiricilerinden birisi olan Theo De Raadt bu konuya açıklık getirmiştir.

Özgür bir lisansın ne olması gerektiğini biliyoruz.

Lisans şu koşulları belirtmelidir:

*Copyright foo

Haklarımdan vaz geçerek, başkalarına;

  • dağıtma
  • satma
  • bağışlama
  • değiştirme
  • kullanma

hakkını verirken, sahibi ve yazarı olduğumu saklı tutuyorum.

Eğer lisans bundan farklı ise o zaman şunu sormalıyız:

Başkalarının etkilenmeyeceğini %100 garanti edebiliyor mu?
Başkalarına daha fazla hak -hatta yazarı olma hakkı- tanıyor mu?

Eğer bu sorulara yanıt veremiyorsa ya tüm hakları veriyor demektir veya yanı bağlamda tüm hakları gasp ediyor demektir.

Bu durumda bizim öngördüğümüzden daha az özgür demektir ve bu kabul edilemez.

OpenBSD geliştiricileri yazdıkları kodun bu lisans koşullarını yerine getirdiğini, hatasız olduğunu ve güvenlik açıklarına neden olmadığını sıkı bir şekilde kontrol etmektedir. Yukarıdaki koşullara uymayan kod sistemde yer almaz.

OpenBSD Nere(ler)de Kullanılır?

OpenBSD kullanabileceğiniz alanlar kurumsal alanda kurum politikalarına bağlı olarak ortaya çıkacaktır. Bireysel kullanım açısından bakıldığında ise kişisel beklentilerinizin ne kadarına yanıt verdiği veya sizin için uygun olup olmadığına bağlı olarak değişir. Kişisel olarak OpenBSD ve FreeBSD sistemlerini masaüstü, sunucu ve ağ yönetimi konularında kullanıyorum. Dolayısıyla da bu alanlarda siz de rahatlıkla kullanabilirsiniz.

Masaüstü

Eğer bir UNIX masaüstü sisteme gereksinimiz varsa OpenBSD bu iş için uygun bir sistemdir. Öte yandan ofis yazılımları, web tarayıcıları vb günlük olarak kullandığını bir çok uygulama da kullanılabilir. Geliştirme araçları, masaüstü ortamı ve pencere yöneticileri, geliştiricilerin gereksinim duyabileceği sunucu uygulamaları vb bulunur. Ağ ve/veya sistem yöneticilerinin gereksinim duyacakları tüm araçlar da hazırdır.

Sunucu

Tüm sunucu uygulamalarını OpenBSD ile gerçekleştirebilirsiniz. Düşük maliyet ile güvenilir bir sistem oluşturabilirsiniz. Tüm sunucu uygulamalarınızda sorunsuz olarak çalışacaktır. Buna bir de güvenlik etkenini eklerseniz OpenBSD sunucu olarak son derece güvenilir bir platforma oluşturmanızı sağlayacaktır.

Ağ Yönetimi

OpenBSD, hazır gelen e diğer BSD işletim sistemi ailesi üyelerince de kullanılan PF -Packet Filter-aracına sahiptir. PF kullanrak bir yönlendirici, firewall, proxy sunucuları, saldırı tespit sistemleri veya trafik ilzeme sistemleri vb bir çok a uygulaması ve servisini sunabilirsiniz. PF kullanarak yazacağınız kurallar ile OpenBSD kullnarak istenmeyen trafiğin sistemlerinize ulaşmadan çok önce ortadan kaldırabilirsiniz.

OpenBSD Geliştirme Süreci

OpenBSD diğer BSD işletim sistemi ailesinin üyeleri gibi dünyanın çeşitli yerklerinde yaşana geliştiricilerin gönüllü çabaları ile geliştirilmektedir. Tüm geliştirme süreci e-posta listeleri ve IRC kanallarında gerçekleştirilen toplantılar ile yürütülmektedir. Aslında bir ofiste karşılıklı oturup çalışmak daha iyi bir yöntem olarak düşünülürken, dünyanın farklı ülkelerinde yaşayan geliştiricilerin bir araya gelip çalışmalarını birlikte yürütebilmelerinin tek yolu aslında budur. Ayrıca bu çalışma şekli gerçekleştirilen tüm çalışmaların, görüşmelerin ve kısacası tüm iletişimin de kayıt altına alınmasını sağlar.

OpenBSD'de üç grup geliştirici bulunur; katkıcılar geliştiriciler ve koordinatör. Katkıcılar, belgelendirme çalışması yapan, problemleri çözen ve işletim sistemine yeni özellikler ekleyebilen OpenBSD kullanıcılarıdır. Herhangi bir OpeBSD kullanıcısı katkıcı olabilir. Belgelendirmedeki bir imla hatasını düzeltmekten bu da olsaydı iyi olurdu dediğiniz bir özellik için oturup kod yazmaya kadar veya yeni donanım sürücüsünün denenmesi ve hatalarının belirlenmesine dek bir çok iş katkıcıların emeği ile gerçekleştirilmektedir. Bir katkıcının yazdığı kod sistemin bir parçası olacak kadar iyi ise bu çalışmasını devam ettirirse bir süre sonra geliştirici olarak projede yer alabilir. Geliştiriciler katkıcılardan farklı olarak OpenBSD kaynak kod ağacına doğrudan erişim yetkisi olan kişilerdir. Bu kişilerin yazdığı kod doğrudan işletim sisteminin bir parçasıdır. Bir çok geliştirici boş vakitlerinde OpenBSD kaynak kodu üzerinde çalışan programcılardır. Bu çalışma tamamen gönüllü olarak gerçekleşir. Geliştiriciler işletim sistemi üzerinde gerekli gördükleri tüm düzenlemeleri yapabilirler. Bu düzenlemeleri yaparken diğer geliştiriciler ile koordinatöre karşı sorumludurlar. Geliştiriciler e-posta listeleri ve diğer kanallar üzerinden diğer geliştiriciler ile iletişim kurup birlikte çalışırlar. Bu e-posta listeleri konuyla ilgilenen herkes tarafından izlenebilir. Bu listeler genelde geliştiricilerin yazdıkalrı kod ile ilgili olarak kullanılır. Dolayısıyla da bu listelerden birisine üye olup bu nasıl yapılıyor diye sormayın ;) Yanıt veren çıkmayacaktır veya yanıt alırsanız da uygun bir dille bunun yeri burası değil yanı alabilir veya “sessiz” olmanızı isteyebilirler.

Geliştiricilerin çalışmaları genelde web sitelerinde ve e*posta listelerinde yer alır. Konuyla ilgilenen herkes geliştiricilerin yazdıkları kodu inceleyebilir. Bir geliştirici olmak cazip bir iş gibi görünebilir ama sorumluluğu düşünüldüğünden çok daha büyüktür. Yazdıkları kod sistemin işleyişini olumsuz etkiliyorsa veya projenin temel hedeflerine uymuyorsa bunu düzeltmek durumundadırlar. Tüm OpenBSD geliştiricileri projenin ana hedeflerine uymak ve bu konuda koordinatör Theo De Raadt'a karşı sorumlu durumundadırlar.

Theo De Raadt, OpenBSD projesini 1995 yılında başlatmış ve bugün halen projen,in yürütülmesinden birinci derece de sorumlu olan kişidir. Sistem neyi ekleyip çıkaracakları veya OpenBSD nasıl işleyeceğine, kimlerin doğrudan kaynak kod ağacına erişip katkı yapabileceğine dair son söz
Theo de Raadt aittir. Geliştiriciler ve katkıcılar arasındaki anlaşmazlıkları kendi araklarında çözemelerse bunları gidermek de Theo De Raadt'ın sorumluluğudur.

Bunların dışında OpenBSD'nin farklı mimarilere aktarılmasında önemli görevleri olan geliştiriciler , geliştirici sorumluluğu yanında koordinatör sorumlulukları da almaktadır. Bu geliştiriciler topluluğun içerisinden gelen ve herkesin güveninin kazanmış olan kişilerdir. OpenBSD sadece tek bir koordinatöre sahip olmakla birlikte bu koordinatör grevi üstlenmiş olna kişiler söz konusu mimariyi ilgilendiren kritik kararları alabilirler. OpenBSD söz konusu olduğunda her zaman son söz Theo De Raadt tarafından söylenir.