GNU/Linux & Unix & Güvenlik Ali BOYACI 1306030066 Mehmen OLGUNGÜN 1306020065 Orhan YILMAZ GNU/Linux Nedir? Linux, serbestçe dağıtılabilen, çokgörevli, çok kullanıcılı UNIX işletim sistemi türevidir. Linux, Internet üzerinde ilgili ve meraklı birçok kişi tarafından ortak olarak geliştirilmekte olan ve başta IBM-PC uyumlu kişisel bilgisayarlar olmak üzere birçok platformda çalışabilen ve herhangi bir maliyeti olmayan bir işletim sistemidir. Linux, temel olarak Finlandiya Üniversitesinde öğrenci olan Linus Torvalds'ın ve Internet üzerinde meraklı bir çok yazılımcının katkıları ile geliştirilmiştir. Linux gelişimi açık bir şekilde yapılmaktadır. Bunun anlamı, işletim sisteminin her aşaması açık olarak Internet üzerinde yayınlanmakta, dünyanın dört bir yanında kullanıcılar tarafından test edilmekte, hataları ve eksiklikleri tesbit edilerek düzeltilmekte ve geliştirilmektedir. Zaman zaman bu deneme aşamaları belirli bir noktada durdurulur ve güvenilir bir işletim sistemi sunulup, geliştirme için ayrı bir seriye devam edilir. Geliştirmede yer alan bu açıklık Linux'un en büyük avantajlarından biridir. Gelişimi evrimseldir, hatalar anında kullanıcılar tarafından tesbit edilip rapor edilmekte ve birçok kişinin katkısıyla düzeltilmektedir. Bazı işletim sistemi sürümleri saatler içerisinde güncellenebilmektedir. Linux, Andy Tannenbaum tarafından geliştirilmiş olan Minix işletim sistemine dayanmaktadır. Linus Torvalds boş zamanlarında Minix'ten daha iyi bir Minix işletim sistemi yaratmak düşüncesiyle 1991 Ağustos sonlarında ilk çalışan Linux çekirdeğini oluşturdu. 5 Ekim 1991 tarihinde 0.02 sürümü Linux ilk defa tanıtıldı. Linus, comp.os.minix haber grubuna gönderdiği yazıda yeni bir işletim sistemi geliştirmekte olduğunu ve ilgilenen herkesin yardımını beklediğini yazmıştı. İşletim sisteminin çekirdeği için verilen numaralar kısa sürede bir standart kazandı. a.x.y seklinde belirtilen çekirdek türevlerinde y bulunulan seviyeyi, x gelişim aşamasını göstermektedir. Tek sayılı x'ler geliştirme aşamalarını çift sayılı x' ler ise güvenilir Linux çekirdeklerini göstermektedirler. a ise değişik Linux sürümlerini belirtir. Unix nedir? Unix, çok kullanıcılı (multiuser) ve aynı anda birçok işi yapabilen (multitasking) bir işletim sistemidir. Daha çok program geliştiren kişiler için düşünülmüş bir sistemdir. Komut yorumlayıcı programlar (shell) aracılığı ile kullanıcı ve bilgisayar sisteminin iletişimi sağlanır. UNIX 1969 yılında Bell Laboratuarlarında doğmuş ve 80 li yıllar ile birlikte çok popüler bir işletim sistemi olmuştur. Özellikle akademik dünyada iş istasyonları üzerinde çok yaygın bir kullanım alanı bulmuştur. Bunda biraz da işletim sisteminin gelişmeye-geliştirilmeye açık olması çok önemli bir rol oynamıştır. Kendiliğinden ve çok değişik kaynaklar ve yollardan geliştirildiği için piyasada çok değişik UNIX vardır, mesela ULTRIX, AIX, System V, BSD, Digital UNIX, vb. Fakat bu farklı UNIXler kullanıcılar tarafından komut yorumlayıcı programlar (Shell) sayesinde bir zorluk çekmeden kullanılmaktadır. GNU/Linux & unix dizin yapısı /: En üst dizindir. Tüm dizinler bu dizinin alt dizinidir. /bin : Çalıştırılabilir dosyalar /dev : G/Ç aygıtları /etc : Ayarlar /lib : Kütüphaneler /proc : İşlemlerlerinn bulunduğu sanal bir dizindir. /var : Logların bulunduğu dizindir. /usr : Kullanıcı programlarının bulunduğu dizindir. /home : Kullanıcı belgelerinin dizinidir. Desteklenen dosya sistemleri minix En eski, en güvenli olarak kabul edilen ama kısıtlı yeteneklere ve özelliklere sahip olan dosya sistemidir. (En fazla 64 MB lık dosya sistemi, en çok 30 karakterlik dosya isimleri, ara sıra kaybolan tarih zaman damgaları gibi... xia Dosya isimleri ve dosya sistemi boyutlarının sınırlarını kaldıran ama bundan başka pek bir yenilik getirmeyen, sadece minix dosya sisteminin yenilenmiş halidir. Çok popüler değildir ama oldukça iyi çalıştığı rapor edilmektedir. ext3 ext3 dosya sistemi, ext2'nin bütün özelliklerine sahip bir dosya sistemidir. Aradaki temel fark, günlükleme özelliğinin eklenmiş olmasıdır. Böylece, herhangi bir sistem çökmesi esnasında, geri kurtarma zamanı kısaltılır ve performans artışı sağlanır. ext3, ext2'den daha popüler olmuştur. ext2 En yetenekli Linux dosya sistemidir. İleriye dönük kolay geliştirilebilen bir dosya sistemi olarak tasarlanmıştır. Dolayısıyla yeni sürümü, dosya sistemi kodlarını, kurulu bir sisteme uygulamak için yeni ayarlar yapmayı gerektirmez. ext Ext2'nin geliştirilmeye uygun olmayan eski sürümüdür. Pek çok insan ext2 dosya sistemine yönelmiştir. reiserfs Çok sağlam bir dosya sistemidir. Veri kayıplarını en aza indirmek için günlükleme (journalling) yöntemi kullanılır. Günlükleme; yapılmış veya yapılan işlemlerin kayıtlarının tutulması mekanizmasıdır. Bu sayede dosya sistemi meydana gelmiş olan hasarları son derece kolay bir biçimde onarabilir. Bunlara ek olarak, çok sayıda yabancı dosya sistemine destek bulunmaktadır. Böylece işletim sistemleri arasında dosyaları değişmek kolaylaştırılmıştır. Bu yabancı dosya sistemleri, makine üzerinde doğal Linux dosya sistemleri gibi çalışabilirler. Ama Unix'in bazı özelliklerinden faydalanamazlar, bazı kısıtlamalara tabidirler veya bazı acayiplikler sergilerler. msdos MS-DOS FAT dosya sistemleri (OS/2 ve Windows NT) ile uyumlu bir dosya sistemidir. umsdos Msdos dosya sistemi sürücülerine, Linux altında daha uzun dosya isimleri, sahipler, izinler, bağlar ve aygıt dosyaları erişimi sağlar. Bu sistem; normal bir MSDOS dosya sisteminin sanki Linux dosya sistemiymiş gibi kullanılmasını sağlar ve böylece Linux için bağımsız bir bölüm oluşturulması zorunluluğunu ortadan kaldırır. vfat FAT32 olarak bilinen dosya sisteminin bir uzantısıdır. Pek çok MS Windows diski vfat'tır. FAT'tan daha büyük disk alanlarını destekler. iso9660 CD ROM'lar için standart dosya sistemleridir. Daha uzun dosya isimlerine izin veren Rock Ridge uzantısı otomatik olarak desteklenir. nfs Bir ağ dosya sistemidir. Dosya sisteminin pek çok bilgisayar tarafından paylaşılmasını sağlar. smbfs MS Windows bilgisayarlarla paylaşım sağlayan bir ağ dosya sistemidir. Windows dosya paylaşım protokolleri ile uyumludur. hpfs OS/2 dosya sistemi. sysv SystemV/386, Coherent ve Xenix dosya sistemleri. GNU/Linux & unix neden güvenlidir? GNU/Linux , unix işletim sistemlerinde olduğu gibi çoklu kullanıcılı tasarlanmıştır. Sistemin en üstünde çekirdek işlerini yürüten root kullanıcısı bulunmaktadır. Bu kullanıcı sistemin hayati fonksiyonlarının işlerini yürüten kullanıcıdır. Bu kullanıcı hesabı sistem güncellemesi ve sisteme müdehale edildiği durumlarda kullanılır. Temel olarak işletim sistemi üzerindeki kullanıcı sistemin hayati fonksiyonlarına müdehale edemediğinden sistemdeki hayati öneme sahip dosyaların silinmesi yada bozulması mümkün değildir. GNU/Linux ve unix işletim sistemi altında her uygulamaya ayrı kullanıcı hakları tanımlanması mümkündür. Örneğin eposta istemcinizin indirdiğiniz bir dosyaya erişim haklarını değiştirebilirsiniz. GNU/Linux ve unix işletim sisteminde /tmp dizini geçici dosyalar için kullanılan dizindir ve bu dizinde ki dosyaların çalışma izni yoktur. Buda bu dizinde bulunan bir dosyanın sisteminize zarar veremeyeceği anlamına gelir. GNU/Linux ve unix sistemlerde derlenmiş dosyalar çalıştırılabilir durumda değildir. İndirdiğiniz bir dosyanın çalıştırılabilir olması için ona o izni vermeniz gerekmektedir. GNU/Linux da ve unix türevlerinin bir kısmında kod tamamen açıktır. Bu durum kodun birçok insanın gözünün önünden geçmesine neden olduğu için açıkların ortaya çıkması ve yamalanması hızlı olmaktadır. Güvenli bir işletim sistemi “OpenBSD” OpenBSD, unix tabanlı bir BSD işletim sistemidir. BSD işletim sistemi AT&T şirketiyle yaşadıkları hukuki sorunlar nedeniyle unix adını kullanamamaktadır. Günümüzde BSD tabanlı işletim sistemlerinin sayısı oldukça fazla olsa da FreeBSD , NetBSD ve OpenBSD bunların başlıcalarındandır. MACOS Apple Şirketinin BSD çekirdeğine sahip işletim sistemidir. FreeBSD “The Power to Serve” (Sunum Gücü). FreeBSD yüksek performans ve son kullanıcılar için kullanım kolaylığı amacını güder. Ve ISP firmaları için favori işletim sistemidir. PC’ler ve Compaq’ın Alpha işlemcileri üzerinde çalışır.FreeBSD açık bir farkla diğer projelere oranla daha fazla kişi tarafından kullanılır. NetBSD “Of course it runs NetBSD” ( Elbette NetBSD kullaniyor) NetBSD azami seviyede taşınabilirlilik hedefler. Ek olarak sade dizayna sahip olamk önemlidir. NetBSD palmtoplardan büyük serverlara kadar her yarde çalışır.ve NASA’nın uzay çalışmalarında da kullanılmıştır. Intel-olmayan donanımlar için iyi seçimdir. OpenBSD “Only two remote holes in the default install, in more than 10 years!” OpenBSD güvenlik ve kod güzelliği hedefler.Birleşik Devletler hükümet işlemleri, borsa ve bankalar gibi güvenliğin ön planda olduğu önemli merkezlerin seçimi olmak için, çok sıkı kod denetimleri ve doğruluk testleri gerçekleştirir ve bunu açık kod standart ve kavramına uygun olarak yapar.NetBSD gibi birçok platformda çalışabilir. Konu güvenlikle ilgili olduğunda BSD dünyasında OpenBSD bir adım daha öne çıkar. OpenBSD projesi Theo de Raadt tarafından 1995 in sonlarında başlatılmıştır. İlk sürüm 1995 de 1.2 daha sonra 1996 2.0 olarak yayınlanmıştır. Bu tarihten sonra her 6 ayda yeni sürümler duyurulmaya başlanmıştır. Yoğunlukla güvenlik duvarı, saldırı tespit sistemi, VPN geçiş noktası olarak kullanılmaktadır. API Değişiklikleri Tampon bellek taşmalarını engellemek için string işleme fonksiyonları geliştirilmiştir. Bu fonksiyonlar daha sonra NetBSD ve FreeBSD projelerine de eklenmiştir. Hafıza Koruması OpenBSD string overflow ve integer overflow sorunlarını gidermek için çeşitli yollar geliştirmiştir. GCC derleyicisine yığın saldırılarından korunmak için yığını kontrol eden pointerlar oluşturmaktadır. Bu olası bir taşma sırasında hafızada bozulma olmasını sağlayarak taşmayı engellemektedir. Yine hafıza yazılabilir yada çalıştırılabilir olarak ayrılmıştır. 3.8 versiyonu ile birlikte malloc fonksiyonun yaptığı sistem çağrısına geleneksel unix işletim sisteminden farklı olarak hafızadan rastgele boş alan seçerek cevap vemeye başlamıştır. Bu hafızanın daha zor delinmesini ve manipüle edilmesini sağlamaktadır. OpenBSD çekirdeğine rastgele asal sayı üretimi ve kriptografi modülleri eklenmiştir.