İşletim Sistemleri Katmanları
Bu ay köşemizden hepinize tekrar merhaba. Onlinedergi.net yayın hayatına başlayalı 2 aydan az bir süre olmasına rağmen oldukça büyük bir ziyaretçi kitlesine şimdiden sahip oldu. Yazılı medya yerine Internet ortamını kullanmanın en büyük olanaklarından birisi ticari bir kaygı taşımadan okuyucuyla biraz daha derin bilgi alışverişi yapabileceğimiz konular seçebilmemizdir.



Bu dokümanda her işletim sistemi kitabını okuduğunuzda duyma ihtimalinizin yüksek olduğu bazı teknik terimlere ve onların açıklamalarına yer verilmeye çalışılacaktır. Özellikle kernel, shell gibi kavramlar üzerinde durulacak, Unix sistemlerin neden diğer sistemlere nazaran daha kararlı olduğunu teknik bakış açısı ile öğreneceksiniz.


İşletim sistemleri bilgisayarı da sisteme dahil edersek 4 katmandan oluşur.


  1. Donanım Katmanı : Bir bilgisayarın elle tutulur gözle görülür kısımları. Örneğin ekran kartınız, modeminiz bu katmanda çalışmaktadır.


  2. Kernel(Çekirdek) : İşletim sistemlerinin bilgisayarın en alt seviyede donanım katmanı ile iletişim kuran en alt seviyede program. Bu katmana işletim sisteminin kalbi demek yalan olmaz. Bir işletim sisteminin performansı, yetenekleri vb... kernelin başarımı ile doğrudan ilişkilidir. Üç çeşit kernel vardır.


    • Micro Kernel : İşletim sisteminin kernelinin mümkün oldukça küçük olmasına gayret edilmiştir. Sadece çok önemli, bilgisayarın çalışması için gerekli bölümleri içerir. Örneğin işlemci yönetimi, bellek yönetimi... Bu tip kerneli olan işletim sistemlerinde bilgisayara bağlı CD-ROM, harddisk, disk denetleyici gibi diğer donanımları tanıtmak için işletim sisteminin kerneli ile direk iletişime geçebilecek ve bellekte bu işlemleri yönetebilecek bir yazılıma ihtiyaç vardır. Bu yazılıma da sürücü(driver) denilir. Bu tip kernele sahip işletim sistemlerine en güzel örnek MS-DOS/Windows' tur. MS-DOS' ta basit bir CD-Rom' u tanıtmak için bile bir sürücü programa ihtiyaç duyulmasının nedeni budur. İşletim sisteminin kendisi o donanımı tanıyacak bilgiyi çekirdeğinde tutmaz.


      Avantajı yeni bir donanım takıldığında eğer donanım üreticisi firma o işletim sistemi için sürücü üretti ise bilgisayara tanıtmak çok kolay olmaktadır. İlgili sürücünün setup' ını çalıştırırsınız ve her şey olur biter.


      Dezavantajları ise her türlü donanım için bir sürücüye ihtiyaç duyduğu için bilgisayarda onlarca değişik firmanın ürünü olan program işletim sisteminin parçası gibi davranmaktadır. Bu da herhangi bir donanım arızasının sonucunda bütün sistemin çökmesine yol açmaktadır. Windows' un bu kadar sık göçmesinin temel nedenlerinden bir tanesi de budur.


    • Monolithic Kernel : Bu tür kernellarda donanımımız için gerekli her türlü sürücü yazılım işletim sisteminin çekirdeğine gömülüdür. Yani bir CD-Rom driver veya ethernet driver diye bir kavram yoktur. İşletim sisteminiz bu donanımı kullanmak için gerekli sürücü yazılımı kendi içersinde ihtiva etmektedir. En güzel örneği Unix' tir.


      Avantajı, kernel büyük olmasına rağmen her türlü fonksiyonun bir birbiri ile iletişim tek program tarafından olduğu için genelde daha hızlı işlemektedir. Bu tür işletim sistemlerinin performansı aynı donanımda micro kernel bir sistemden genellikle daha iyidir. Bütün donanımın sürücüleri arasında iletişim söz konusu olmadığı için sistem çok stabil olur. Unix sistemler çok nadir göçer. Yıllarca hiç kapanmadan çalışan Unix sistemler mevcuttur.


      Dezavantajı ise her yeni donanım takıldığında yeni bir kernel derlenmesi gerekliliğidir. Bu işlem bir kaç on dakikadan kimi zaman bir kaç saate kadar süren zahmetli bir iştir ve yüksek donanım bilgisi ister bu nedenle kullanımı zordur ve pek de pratik değildir. Bu nedenle plug&play bir Unix yoktur.


    • Hybrid : Bu tür işletim sistemlerinde sistemdeki donanım için gerekli sürücü istenir ise kernelin içine istenir ise Windows' taki gibi driver yolu ile kullanılabilir. En güzel örneği bir monolitic kernel sistem sayılmasına rağmen hybrid özelliklerine sahip Linux' tur. Kernel derleme sırasında bir donanım sürücüsü istenirse kernela gömülür istenirse modül olarak /lib/modules dizini altına kaydedilir. O donanımın kullanılması gerektiğinde de buradaki object dosyası kernel ile iletişime geçer ve donanımı yönetir. Bu iletişim için insmod modprobe gibi yazılımlar kullanılmaktadır ve bu iki komut modutils adlı paketle birlikte gelmektedir. Her iki komut da kimi kullanımlarda parametre gerektirmesine rağmen bu işi otomatize etmek için libdetect, libdiscover, kudzu, harddrake gibi yazılımlar mevcuttur. Sonuç olarak plug&play bir Linux sistemin micro kernel sistemlerdeki gibi işlemese de uygulanması mümkündür ve şu anda mevcuttur.


  3. Shell(Kabuk) :Kernel' in kullanıcı ile iletişime geçen arabirimidir. Örneğin MS-DOS da c:\>_ komut satırına düştüğünüzde işte o zaman MS-DOS' un shell' i command.com ile karşı karşıyasınız demektir. Verdiğiniz copy, del gibi komutları shell kernel' a onun anlıyacağı dilden iletecek ve kernel da disk üzerinde bu işi gerçekleştirecektir. Unix sistemlerde shell bir çeşit değildir. Yani c:\ gibi bir şey ile karşılaşacağınızı söylemek mümkün değildir. Birden fazla shell mevcut olup kendine has özellikleri vardır. Örneğin bir standart haline gelen bash çok güçlü ama ebat olarak biraz büyüktür. Dolayısı ile güçlü makinelerde faydalı olurken sınırlı kapasitedeki makinelerde yükü ağırlaştırabilmektedir. Csh (C Shell) ise komut satırında C diline benzeyen komutları kullanabilmenizi sağlayabilir.... Unix sistemlerde ve dolayısı ile Linux' da shell değiştirmek için chsh komutu kullanılır. Eğer bir Linux kullanıcısıysanız ve herhangi bir değişiklik yapmamışsanız büyük ihtimalle bash kullanıyorsunuz demektir. Sistemde yönetici kullanıcı (root) iseniz bunu # işaretli bekleme satırından ve eğer normal kullanıcı iseniz de $ şeklindeki satırdan anlayabilirsiniz.


  4. Uygulama Katmanı : Kullandığımız her türlü program bir uygulamadır ve uygulama katmanını oluşturur. Örnek vermek gerekirse Windows altında Photoshop veya Linux altında Staroffice bir uygulamadır ve bu katmanda çalışır.




    Bu yazı Kasım 2001 tarihinde http://www.onlinedergi.net sitesinde yayınlanmıştır.

Linux Sunucu Güvenliği ve Optimizasyonu II
ctrl+alt+del tuş kombinasyonunu engellemek

ctrl + alt + delete tuş kombinasyonu hemen hemen bütün Linux sürümlerinde bilgisayarı yeniden başlatmak üzere öntanımlı gelir. Çoğu zaman bu kombinasyonun kaldırılması faydalı olmaktadır. Yapılması gereken işlem /etc/inittab dosyası içindeki ilgili satırın önüne bir diyez (#) işareti koymaktır.




#ca::ctrlaltdel:/sbin/shutdown -t3 -r now




Geçerli bir yedekleme stratejisi geliştirmek.

Yedeklemenin ne zaman gerekli olduğu konusunda genel bir kabul, "veri kaybetme riskini kaldıramayacağınız her zaman yedekleme zamanıdır" şeklindedir. Pek çok firmanın genelde bir yedekleme stratejileri zaten mevcut olmasına rağmen eğer yoksa çok geçmeden alınması şarttır. Bu iş için taper, BRU, Amanda gibi gelişmiş bir yedekleme yazılımı kullanılabileceği gibi standart "tar" komutu ile de yedekleme yapmak mümkündür. Aşağıdaki tabloda yer alan basit betikleri bir cron işi içersine yerleştirdiğinizde haftalık ve günlük yedekleme yapacaktır. Sonuç, /home dizini içersinde yer alan backup-epoch (haftalık) ve backup-daily dosyaları olacaktır.




TABLO 1
#!/bin/bash
# Haftalık Yedekleme Betiği.
#
cd /
yes | rm /etc/backup.epoch
find /etc -type d -print > /etc/backup.epoch
find /var -type d -print >> /etc/backup.epoch
find /home -type d -print >> /etc/backup.epoch
find /tmp -type d -print >> /etc/backup.epoch
find /root -type d -print >> /etc/backup.epoch
tar -cvps -T /etc/backup.epoch -f /home/backup-epoch.tar

TABLO 2

#!/bin/bash
# Günlük Yedekleme Betiği
#
cd /
yes | rm /etc/backup.daily
find /etc -mtime -1 \! -type d -print > /etc/backup.daily
find /var -mtime -1 \! -type d -print >> /etc/backup.daily
find /home -mtime -1 \! -type d -print >> /etc/backup.daily
find /tmp -mtime -1 \! -type d -print >> /etc/backup.daily
find /root -mtime -1 \! -type d -print >> /etc/backup.daily
find /etc -ctime -1 \! -type d -print >> /etc/backup.daily
find /var -ctime -1 \! -type d -print >> /etc/backup.daily
find /home -ctime -1 \! -type d -print >> /etc/backup.daily
find /tmp -ctime -1 \! -type d -print >> /etc/backup.daily
find /root -ctime -1 \! -type d -print >> /etc/backup.daily
tar -cvps -T /etc/backup.daily -f /home/backup-daily.tar



Sistemden Silinmesi Faydalı Kullanıcı ve Gruplar

Çoğu Linux dağıtımı ile birlikte bazı öntanımlı kullanıcı ve gruplar gelir. Bu hesaplar/gruplar standart olduğu için sisteme girmeyi planlayan bir kişinin sızmak için ilk deneyeceği hesaplar olacaklardır ve silinmesinde fayda vardır. userdel komutu ile sistemdeki adm, lp, sync, shutdown, halt, news, uucp, operator, games, gopher gibi gereksiz kullanıcı hesaplarından kurtulabilirsiniz. Aynı şekilde groupdel komutu da adm, lp, news, uucp, games, dip, pppusers, popusers, slipusers gibi grupları silmenizi sağlayacaktır.



Kullanıcıya sadece FTP izini verilmesi.

Pek çok sistem yöneticisi kullanıcıların FTP ile home dizinlerine bağlanmasına izin veren fakat telnet veya konsoldan sisteme bağlanmalarını engelleyen bir strateji belirlemek ister. Bu kısıtlama özellikle web bulundurma hizmeti ve internet servis sağlayıcılarda gerekli olmaktadır. Bunu sağlamak için basit bir betik hazırlayalım.




#!/bin/bash
echo "Sisteme oturum açma izniniz yok!"



ardından bu dosyayı /bin/girisyok olarak kaydedelim ve "chmod +x /bin/girisyok" komutu ile çalıştırılabilir yapalım. Hazırladığımız betiği telnet veya konsol erişim hakkı vermemek istediğimiz kullanıcının shell' i olarak atamamız gerekmektedir. Bu işlem için chsh komutu kullanılabilir.




chsh -s /bin/girisyok umut



Kullanıcının shell' ini /bin/girisyok olarak degistirdigimizde kullanıcı e-mail alıp gönderebilir fakat ne FTP ne de telnet vb... yolla sisteme bağlanabilir. Kullanıcının FTP kullanımını açmak için ise /bin/girisyok' u /etc/shells dosyasına eklememiz yeterli olacaktır.



Suid bit Programlar

Bir sunucuda kullanıcılara telnet, ssh, konsol gibi yollarla erişim verildiğinde en büyük güvenlik boşluğu suid bit adı verilen izin ile tanımlanmış programlarda yer almaktadır. Sunucuları ele geçirmeye niyetli bir kişi genelde suid bit tanımlı programlardaki açıkları hedef almaktadır. Kısaca açıklamak gerekirse suid bit normalde kullanıların yazmaya veya değiştirmeye izni olmadığı dosyaları değiştirmesine olanak tanımak amacı ile kullanılır. Örneğin, root kullanıcı hariç hiçbir kullanıcının /etc/passwd dosyasını değiştirmeye hakkı yoktur. Fakat chsh komutu ile bütün kullanıcılar /etc/passwd dosyasında kendi isminin yanındaki shell belirtgecini değiştirebilmektedirler. Bunu sağlamak için chsh programı suid bit ile çalıştırılmaktadır, yani kısıtlı olarak kullanıcılara root kullanıcı hakkı verilmektedir.


Sunucunuzdaki suid bit tanımlı dosyaların bir listesini görmek için aşağıdaki komutu çalıştırabilirsiniz.




find / -type f \(-perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;



Önünüze gelen listede çok az kullanılan ya da hiç kullanılmayan programlardaki suid bit' i kaldırmak için :




chmod a-s /usr/bin/wall benzeri bir komut kullanmak yeterli olacaktır.



Sisteminizin ping isteklerine cevap vermesini engellemek

Son zamanlarda popüler olan network/internet saldırılardan bir tanesi de DOS (Denial of Service) adı verilen saldırı çeşididir. Bu saldırılar bir ana makineyi anlamsız TCP/IP paketleri ile meşgul etmeyi veya çok sayıda makineden saldırı yaparak işlevsiz bırakmayı amaçlar. En popüler DOS saldırıları ise bir IP paketine encapsulate edilerek gönderilen ve port bazlı olmayan ICMP paketleridir. Bir sunucuya yüzlerce belki de binlerce makineden aynı anda geçersiz büyüklükte ICMP paketleri gönderildiğinde sunucu büyük ihtimalle görevini yerine getiremeyecektir. Buna karşı çok etkin bir önlem olmasa da bir icmp isteği olan ping' lere sunucuyu kapatmak faydalıdır. Daha etkin bir yöntem için bir firewall (güvenlik duvarı) seçeneğini değerlendirmelisiniz.


Ping paketlerine cevap vermeyi engellemek için aşağıdaki komutu bilgisayarın açılış betiklerinden birisine yerleştirmek ve bilgisayarı yeniden başlatmak yeterlidir.




echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all



Source Routing ve Tehlikeleri

Source Routing, özelleştirilmiş bir TCP/IP paketinin geçeceği yolu kendisinin belirlemesi için kullanılan bir yöntemdir. Sunucu makine, gelen özel paketin öntanımlı yolundan paketi geriye göndermek zorunda bırakılır. Bu da saldıranın kendisini güvenilir bir makine olarak göstermesini sağlayabilir. Bu nedenle kesinlikle sunucunuzda bu özelliği kaldırmalısınız. Yapılması gereken işlem (Red Hat 6.2 için) /etc/sysctl.conf dosyasına aşağıdaki satırı eklemekten ibarettir.




net.ipv4.conf.all.accept_source_route = 0




TCP SYN Cookie Koruması

Bir diğer DOS (Denial of Service) saldırısı, ise SYN saldırıları olarak bilinen türdür. Bu saldırılara karşı önlem almak amacı ile gelen bütün TCP paketlerine karşı koruma sağlayan aşağıdaki satırı /etc/sysctl.conf dosyasına eklemeniz faydalı olacaktır.




net.ipv4.tcp_syncookies = 1



ICMP redirect paketlerinin engellenmesi

ICMP redirect paketleri routerlar tarafından sunucu makinelere üzerlerindeki route tablolarını belirtmek ve sunucu makinelerin paketleri gönderecekleri yolu önceden bilmelerini sağlamak amacı ile kullanılır. Kötü niyetli birisi sizi yanıltacak ICMP redirect paketleri ile sunucu makinenizi yanıltarak başka yere gitmesi gereken paketleri kendisine yönlendirmeyi başarabilir. Bunu engellemek için /etc/sysctl.conf dosyasına aşağıdaki satırı eklemeniz ve network' u yeniden başlatmanız yeterli olacaktır. (Red Hat 6.2)




net.ipv4.conf.all.accept_redirects = 0



Pentium II ve III sistemlerde daha etkin program derlenmesi

Linux ile standart dağıtılan GCC adlı C, C++ compiler programı bilgisayarınızın mimarisine özgü kod derleyebilme yeteneğine sahiptir. Fakat varsayılan olarak 80386 mimarisinde çalışabilecek çalıştırılabilir dosyalar derlemek üzere ayarlanmış gelir. Eğer makineniz Pentium II veya üzeri veya AMD K7 ise aşağıdaki satırları /etc/profile dosyasına eklediğiniz takdirde bundan sonra derlediğiniz programlar CPU' nuza göre optimize edilecek ve daha hızlı çalışacaklardır.



export CFLAGS = '-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions'


Eğer makineniz i586 diye tabir edilen AMD K6-II- Pentium vb... bir sistem ise aşağıdaki satırları /etc/profile dosyasına eklemeniz faydalı olacaktır.


export CFLAGS = '-O3 -march=pentium -mcpu=pentium -funroll-loops -ffast-math -malign-double -fomit-frame-pointer -fno-exceptions -fforce-mem -force-addr'



bdflush parametreleri ile oynayarak sistem performansının artırılması

bdflush parameterleri sistemin sanal bellek yönetimi ile yakından ilgilidir. Bazı buffer vb... ayarlar ile oynayarak sisteminizin cevap verme performansını artırmak mümkündür. Aşağıdaki komutu açılış dosyalarından birisine yerleştiriniz.




echo "100 1200 128 512 15 5000 500 1884 2">/proc/sys/vm/bdflush



Konu hakkında daha ayrıntılı bilgi için /usr/src/linux/Documentation/sysctl/vm.txt dosyasına bakınız.



hdparm ile IDE bir diske erişimde performans artışı sağlamak.

Linux çekirdeği diske erişim sırasında bütün sistemlerle uyumluk sağlaması açısından mütevazi bir konfigurasyonla gelir. Destekleyen disklerde (günümüzde hemen hepsi) DMA, 32 bit transfer gibi ayarlamaları aktif hale getirdiğimizde disk erişim hızında belirgin bir artış sağlanmaktadır. Bu işlem için kullanılan sihirli komutun adı "hdparm" dır.


İlk yapılması gereken hdparm -i /dev/hda komutu ile diskinizin özelliklerini listelemek olmalıdır. Çıktıda özellikle dikkat edilmesi gereken ilk olarak MaxMultSec' ün yanındaki sayıdır. Bu sayının 8 olduğunu varsayarak DMA ve 32 bit erişimi aktif eden komut şu şekilde olabilir.




hdparm -m 8 -d 1 -X66 -c 1 /dev/hda



Yukarıdaki komut IDE diskinize %30' lara veya belki de daha yukarıya çıkan oranlarda daha hızlı erişmenizi sağlayacaktır. Ardından hdparm -t /dev/hda komutu ile testinizi yaptıktan sonra bir sorun iletilmezse kullanmanızı tavsiye ederim. Özellikle -X66 parametresi diskinizde onarılması güç sorunlar çıkarabilir. Oluşabilecek arızalardan PCNET/GnuLinux veya yazar sorumlu tutulamaz.


Bu ayar bilgisayarınızın her açılışında aktif olsun istiyorsanız açılış betiklerinden herhangi birisine yerleştirmeniz yeterlidir.


İki aydır daha güvenli, performansı yüksek Linux sunucuları hazırlamak için bazı ipuçları vermeye çalıştık. Yazı dizimiz burada sona eriyor. Doğru amaçlar için konfigüre edilmiş bir Linux sisteme sahip olmanın geniş bir bilgi birikiminin ve deneyimin eseri olmasına rağmen bu yazı dizimizde belirtilen önlemler alındığında sunucunuzun büyük ölçüde güvenliği sağlanmış olacaktır. Her türlü yorum, dilek ve eleştirileriniz bizim için altın değerindedir.



Bu yazı Kasım 2000 tarihinde PC Net Türkiye dergisinde yayınlanmıştır.

Linux Hakkında Sıklıkla Sorulan Sorular II.
Bir bilgisayar dergisinin verdiği Linux' u kurmaya calıştım. Sonuç, hüsran...
LILO ayarlarından, nerden olduğundan bir şey anlayamadım. SOS IMDAT



Pek çok yeni Linux kullanıcısının, daha önceden edindiği
bilgisayar alışkanlıklarının atılması ve Linux' un mantığına adapte olması zor
olmaktadır. Alışkanlıklarınıza yenik düşmeyerek Linux' a alışmaya çalıştığınızda
kısa sürede gücüne siz de hayret edeceksiniz. Umutsuzluğa kapılmayınız. LILO
ayarları /etc dizininin altında lilo.conf adlı dosyada yapılır. Konfigurasyon
parametreleri çok çeşitli olmakla birlikte, çok basit bir iki parametre ile
sorunu çözmek mümkündür. Aşağıda /dev/hda1 partisyonunda bir Windows işletim
sistemi ve /dev/hda8' de Linux işletim sistemi bulunduran bir lilo.conf dosyası
görünmektedir.




1. boot = /dev/hda
2. delay = 40
3. vga = normal
4. root = /dev/hda8
5.
6. image = /boot/vmlinuz
7. label = linux
8. root = /dev/hda8
9. other = /dev/hda1
10. label = windows


1. satır, LILO kaydının nereye yazılacağını anlatır. /dev/hda MBR anlamına
gelmektedir.

2. satır, LILO yazısının kaç saniye bekleyerek varsayılan işletim sistemini
çalıştıracağını belirtir. 40 değeri 4 sn. anlamındadır.

3. ekran gösteriminin standart 80x25 satır/sütun şeklinde olacağını
göstermektedir.

4. satır, Linux' un root partisyonunun nerede aranması
gerektiğini gösterir. 6. satır, bir Linux kaydının başladığını ve kernelin
/boot/vmlinux olarak kaydedildiğini gösterir.

7. satır, bu Linux kaydının açılış esnasında linux yazılarak çağrılabileceğini
anlatır.

8. satır, Linux' un ilk açılışta salt okunur açılıp, gerekli testler yapıldıktan
sonra yazılabilir yapılmasını sağlar.

9. satır, bir Linux harici işletim sistemi kaydının başlangıcını gösterir.

10. satır, bu kaydın açılış esnasında windows yazılarak çağrılabileceğini
gösterir.



Merhabalar, benim sorunum modemle ilgili.
Pci modemlerin linux altında çalışmadığını biliyorum ve ne yaptıysam modemi
tanıtamadım. Ama RH 7'nin Pci modemleri tanıdığını duydum ne kadar doğru
bilemiyorum. Şuan RH6 kullanıyorum ve modemimin markası "conexa



Linux altında PCI modem kullanımı sürümler ile ilgili bir sorun olmayıp, donanım
üreticilerinin bu modemler için gerekli emülatör programları hazırlaması ile
ilgilidir. Henüz beta test aşamasında olan Red Hat 7.0' ın bu tür bir ekstra
özelliği yoktur.



Linux uzerine bir firewall yazimi ne kadara mal olur?



ipchains adlı port filtreleme yazılımı hemen hemen bütün Linux sürümleri ile
birlikte ücretsiz olarak gelmektedir. Eğer bu yazılımı kullanarak güvenlik
duvarı oluşturacak ekibiniz var ise maliyeti sıfır olacaktır. Eğer bu işi bu
konuda uzmanlaşmış bir firmaya yaptırmak isterseniz destek için ücret ödemeniz
gerekecektir.



İyi günler, öncelikle bu hizmetiniz için size teşekkür ederim. Sorum şu...
Elimde Mandrake 6.0 Linux cd var, bunu bir iki defa makinaya kurmaya çalıştım
açılışta LI yazan bir yazı geliyo ve makina acılmıyor. Tahminen lilo da bir
sorun olmalı ama nedir?



Merhaba, evet sorun tahmin ettiğiniz gibi LILO' da. Bunun pek çok nedeni
olabilir. Çok genellerinden bir tanesinden bahsedeyim. Meşhur 1024. silindir
sorunu. Bu sorun Linux' un LILO' nun erişemeyeceği kadar uzakta bir partisyona
kurulmasından kaynaklanıyor. Sorunu lilo' nun yeni bir versiyonunu yükleyerek
çözebilirsiniz. Açılmayan bilgisayarınızı, kurtarma disketiniz ile açtıktan
sonra lilo' nun yeni versiyonunu Internet' ten indirerek kurunuz ve lilo -L
komutu ile yeni LILO' yu diskinize yazınız.



Linux 2.0.35 (slackware) veya üst sürümlerinde networke bağlı clientlerin bazı
adreslere girmelerini nasıl engellenir. Yardımlarınız için teşekkür ederim.



Bu tür bir çalışma yapabilmek için girilmesini engellemek istediğiniz adreslerin
IP' lerinin bir listesine ihtiyacınız vardır. ipchains yardımı ile bu adreslere
istediğiniz istemcilerin gitmelerini engelleyebilirsiniz. Fakat tahmin
edebileceğiniz gibi bu çok zahmetli bir işlem olacaktır. Bu iş için kullanılan
bazı ticari yazılımlar Internet üzerindeki bütün siteleri indekslemekte ve siz
de kategorilere ayrılmış bu siteleri engellemek şansına sahipsiniz. Bu arada
hatırlatmakta fayda var, bu tür ticari yazılımlar son derece yüksek fiyatlarla
satılmaktadır.




linux mandrake kullanmaya başladım.Brooktree bt878 tv kartım var ama televizyon
izleyemiyorum .acaba henüz linux te tv izleme şansı yokmu.Ayrıca CD ile film
izleyemiyorum.bana yardımcı olur musunuz?



Linux altında video CD izlemek için genellikle Mtv adındaki shareware yazılım
tercih edilir. Bu yazılımı http://www.mpegtv.com adresinden temin edebilirsiniz.
Bu arada çok başarılı bir yazılım olmadığını hatırlatmakta fayda görüyorum. GPL bir opsiyon denemek isterseniz smpeg-xmms adlı xmms modülü de mükemmele yakın sonuçlar ortaya koyabilmektedir. TV
izlemek için çok sayıda ücretsiz yazılım mevcuttur. http://www.freshmeat.net
veya http://www.linuxberg.com adreslerinde yapacağınız bir arama ile karşınıza
gelecek yazılım sayısı sizi şaşırtacaktır. BT 878 çipsetli TV kartları Linux
altında sorunsuz çalışmaktadır.



Bu yazı Eylül 2000 tarihinde PC Magazine Türkiye dergisinde yayınlanmıştır.

Linux Üzerinde Oracle
Oracle Hakkında Genel Bilgi.

Çok değil bundan 3-4 sene öncesine kadar Linux adlı işletim sisteminin bu kadar büyük bir kitleye hitap edebileceği kimin aklına gelirdi ki?
Düşünebiliyor musunuz, basit bir ev projesi bu gün Oracle, Borland, Corel, Netscape, IBM, Sun gibi dünya devi firmaların ürün geliştirip
pazarladıkları bir ortam olagelmiştir.


İlk destek veren firmaların başında ürünlerinin her platformda çalışmasını isteyen Netscape oldu. Linux ortamında çalışan Netscape Navigator sürümü
yüzlerce hata ile dolu da olsa Linux' un artık işletim sistemleri sektöründe pastadan bir pay aldığını göstermesi açısından önemli bir gelişmeydi.
Ardından Corel, Borland, Sun, IBM derken minik penguen 15 milyondan fazla kişinin kullandığı ticari bir işletim sistemi oldu.


Bu gelişmelerin içinde en önemlilerinden bir tanesi, veritabanı geliştirme platformlarının tartışmasız lideri Oracle Inc' in Oracle 8i, Oracle
Application Server ve WebDB yazılımlarını Linux ortamına aktarması sayılabilir. Neden bu kadar önemli sorusunun cevabı şu: Birincisi, artık
Linux büyük ölçekli firmaların çok büyük verilerine cevap verebilecek bir işletim sistemi oldu, ikincisi de böylesine ciddi ve ne yaptığını bilen bir
firmanın Linux' a olan güvenini gösterdi.


Bu yazımızda Linux ortamına taşınmış Oracle araçlarını tanıtıp ardından bir Red Hat Linux sisteme Oracle 8i kurulumunu adım adım açıklamaya çalışacağız.



Oracle 8i for Linux

Oracle 8i, veritabanı teknolojisine geleneksel yazılım mantığına yeni özellikler eklerken, Internet çağının ihtiyaçlarına göre verinin yönetimini ve ulaşılması
anlayışını değiştirmiştir. Oracle 8i' nin bir veritabanı entegre web yazılımı geliştirmek için gerekli bütün araçları içermesinden dolayı, herhangi bir şirket,
Internet' in sunduğu bütün olanakları sonuna kadar kullanabilir.


Oracle 8i' nin en göze çarpan özelliklerinden bir tanesi tamamen Java ile bütünleşik olmasıdır. Java, Internet' in gündelik hayata girmesinin ardından
popüler olmuş, nesneye dayalı bir dildir. Java' nın popülaritesinin temel nedeni, işletim sistemi bağımsız ve dilin
son derece modüler yapısı sayesinde gelişmeye son derece açık olmasıdır. Son zamanlarda pek çok C++ yazılım geliştiricisinin bu programlama diline
kayması sonucunda hemen her veritabanı Java desteği içermeye başlamıştır. Oracle' ın da bu akımdan uzak kalması düşünülemezdi. JServer adı verilen
Java VM ile birlikte gelen Oracle, Java kodunun içine SQL komutları girilmesini sağlayan SQLJ teknolojisi dikkate değerdir. Bu sayede kullanıcılar,
C, OracleCall, PL/SQL gibi dillerin yanısıra sadece Java kodu kullanarak yazılım geliştirebilmektedirler.


SQLJ, IBM, Oracle ve Sun tarafından geliştirilmiş açık bir standarttır. İki çeşidi vardır. Birincisi JDBC üzerinde çalışan ve istemci taraflı byte kodlar
üreten mantık ve diğeri, tamamen native arayüzler ile veritabanına erişen sunucu taraflı SQLJ teknolojisi. Oracle 8i, ayrıca JavaBean ve CORBA
teknolojisini de desteklemektedir.


XML, B-to-B (business to Business) uygulamalarda kendisini ispatlamış bir de facto standartıdır. Aynen Internet üzerinde veriyi formatlamak için kullanılan
HTML dili gbi XML, veriyi tanımlamak için kullanılır. En büyük artısı, HTML' in hatalarından ders almış olması ve başka hiçbir arayüz betimleme diline
ihtiyaç duymadan tamamen kendi olanakları ile veritabanları ile iletişime geçebilmesidir.


Oracle 8i, XML dosyalarının Oracle veritabanlarına erişebilmesini sağlamak için gerekli XML işleyiciler ile birlikte gelir. Bahsi geçen XML işleyiciler, XML
Parser for Java, XML Class Generator, C, C++ ve PL/SQL için XML işleyicileri olarak sınıflandırılabilir.


Oracle 8i' nin en çok dikkat çekici özelliklerinden bir tanesi de kısa yazılımı iFS olan ve Türkçesi Internet Dosya Sistemi olarak çevrilebilen bir veritabanı bütünleşik
dosya sistemidir. Oracle iFS, Oracle 8i' nin üstün özelliklerini bir dosya sisteminin kullanım kolaylığı ile birleştirmektedir.
Oracle 8i ile bütünleşik gelen bu sistem, tabanda Oracle JServer üzerinde çalışan bir Java uygulamasıdır. Kullanıcı tarafından görünümü ise ağ üzerinde
görünen herhangi bir disk sürücüden farksızdır. Oracle iFS' ye kfm, mc, windows explorer gibi herhangi bir dosya yöneticisi, ftp programı, e-mail programı
ile ulaşan bir kimse buradaki verileri sanki bir dosyaymış gibi görüntüleyebilme ve üzerinde standart bir dosya sisteminde yapılan kopyalama silme gibi işlemleri
yapabilmektedir. Hatta üzerinde bir veritabanından beklenen arama ve sorguları sanki bir içeriği dosya içerisinde arıyormuş gibi yapabilmektedir.


Bir yazılım geliştiricisinin bakış açısı ile iFS, verilerin güvenle muhafaza edildiği, dosya sistemi hatalarından korunmuş bir ortamdır. Bu sayede çok sayıda
dosya sisteminin düzenlenmesi ve yedeklenmesi ile uğraşmak yerine sadece iFS' nin bakımı ile uğraşmak yeterli olmaktadır. Ayrıca Oracle' ın çok sayıda
sunucuya yayılabilen yapısı sayesinde çok sayıda fiziksel makine ve diskten oluşan bir sistem sanki tek bir dosya sistemiymiş gibi görüntülenmektedir. Bu
sayede mükemmel bir veri bütünlüğü sağlanmış olur.



WebDB ile web yazılımları geliştirilmesi.

Oracle WebDB, içerik tabanlı web sitelerinin hazırlanması, sunulması ve monitör edilmesi için geliştirilmiş ve Oracle veritabanları ile mükemmel uyum
sergileyen bir üründür. Browser tabanlı arayüzü ve kullanıcıya yön verici yaklaşımı ile WebDB, Oracle veritabanlarını en kısa yoldan
web' e aktarmayı amaçlar. Oracle ve WebDB ile geliştirilmiş web yazılımları tamamen Oracle içerisinde saklanır ve istemci tarafında gerekli olan tek yazılım
bir web tarayıcıdan ibarettir.



Sitenin yönetilmesi ve yeni veri girilmesi aşamasında da herhangi bir aracı programa ihtiyaç olmayıp bütün işlemler yine bir web tarayıcı ile bağlanılan bir
sitede yapılmaktadır. Site güncelleme işlemleri için FTP ile dosya transferi devri çoktan kapanmıştır.


Ayrıca Oracle veritabanlarına WebDB ile ulaşılabileceği gibi ASP ve PHP gibi betimleme dilleri de kullanılabilmektedir.



Oracle Application Server

Oracle Application Server yazılımı, Oracle' ın Internet platformu için çok önemli bir bileşenidir. Bundan yıllar önce ilk veritabanlarının var olmasının nedeni
yazılımları veriden bağımsız kılmak iken, şimdi eğilim verilerin arasındaki ilişkiyi veritabanından bağımsız kılma yönündedir. Oracle' ın bu amaçla geliştirilmiş
yazılımı Application Server çok daha az kompleks modüller içeren sunucular ve daha iyi yazılımların ortaya çıkması amaçlamaktadır.


Oracle Application Server yazılımını dört başlık altında inceleyebiliriz.



  • Geliştir : Oracle Application Server, Java ve daha pek çok programlama diline destek vermekte olup, bir yazılım geliştirirken çoğunlukla en çok vakit
    harcanan yerler olan ağ işlemleri, entegrasyon, güvenilirlik, geliştirilebilirlik gibi ihtiyaçlara hazır çözümler sunmaktadır.

  • Dağıt : Bütün ağ modellerine uygun yapısı ile HTML, Java, CORBA, COM gibi yapılara tam destek vermektedir. Diğer benzeri yazılımların aksine Oracle
    dağıtılabilir bir mimaridedir. Üzerinde çalışan proseslerin yükünü azaltmak için çok sayıda sunucuya görev dağılımı yapabilir ve sonuçları tek bir sunucu
    üzerinden yayınlayabilir.

  • Entegre Et : Oracle veritabanları sadece Oracle veritabanları ile iletişim içinde olmak zorunda değildir. ODBC/JDBC arayüzleri sayesinde herhangi bir
    veritabanı ile rahatlıkla iletişime geçebilir.

  • Yönet : Bütün bir Oracle Application Server sitesi, tek bir makine veya yüzlerce makineden oluşsun, web tarayıcı ile tek bir konsoldan yönetilebilir.
    Yakın gelecekte Oracle Application Server, Oracle Enterprise Manager ile entegre bir şekilde sunulacak olup, bütün bir Oracle platformunun tek bir
    konsoldan yönetimi mümkün kılınacaktır.



Linux üzerinde Legato Clustering


Legato, Linux üzerinde, sunucu makinenin kapalı kalma süresini minimize etmeye yönelik çalışan ilk ticari "High Availability" çözümüdür. Bu kapalı kalma
süresi sunucunun bilinçli ya da istenmeyen nedenlerden dolayı işlevini yapamaması anlamını taşımaktadır.


Legato Clustering teknolojisi, Linux üzerinde çalışan Oracle ile birlikte aşağıdaki avantajları sunmaktadır.




























Hata Durumu Legato Cluster Davranışı
Linux sunucu çalışmıyor. Legato Cluster, Oracle sunucuyu başka bir makinede çalıştırır.
Linux üzerinde Oracle sunucuda bir problem var ve çalışmıyor. Legato Cluster, Oracle sunucuyu aynı makine üzerinde çalıştırmaya çalışır ya da hemen başka bir makine üzerinde çalıştırır. Bu davranışı sistem yöneticisi belirler.
Linux sunucu üzerindeki network kartında problem olması durumu Legato Cluster, IP adresleri arasında NIC - to - NIC hata düzeltme yöntemini uygular ve aynı makine üzerindeki başka bir kartı devreye sokar.
Oracle vertiabanının bulunduğu diskte veri kaybı olması durumu Legato Cluster, aynı makine üzerindeki ya da başka makine üzerindeki bir replike veriye ulaşır ve oradan veriyi alarak kopyayı onarır.
Linux sunucunun upgrade edilmesi için kapatılması. Legato Cluster, işlemlerini başka bir makineye aktarır ve sistem upgrade bitince eski sisteme döner.



Oracle for Linux kurulumu


Oracle 8i, Oracle firmasının Linux üzerinde geliştirdiği ilk yazılım olduğu için kurulumu son derece karışıktır. Çok geçmiyor ki gerek Türkiye içinde gerekse
yurt dışındaki listelerde konu ile ilgili sorular karşımıza çıkmasın. Aşağıdaki adımları birebir takip ederseniz bir Red Hat sistem üzerinde Oracle sorunsuz
şekilde kurulacaktır. Diğer sürümlerde bazı belirgin farklılıklar olmasından dolayı bütün sürümleri burada anlatmamız mümkün değildir. Diğer sürümler hakkında
ayrıntılı bilgi için dağıtım üreticinizin web sitesini inceleyiniz.


Kurulum programların temin edilmesinden başlayarak 5 aşamada incelenecektir.



  1. Programların temin edilmesi.

  2. root kullanıcı olarak yapılması gereken işlemler.

  3. oracle kullanıcısı olarak yapılması gereken işlemler.

  4. Oracle 8i' nin kurulması

  5. Bir veritabanı yaratılması



1. Programların temin edilmesi.br>
Oracle veritabanın Linux versiyonu ücretli bir yazılım olup lisanssız olarak kullanılması yasal değildir. Fakat Oracle firması ürünlerini Linux platformunda denemek
isteyen kullanıcılar için 90 günlük deneme sürümünü piyasaya sürmüştür. 90 günlük versiyonu tam fonksiyoneldir.


Ürünü Oracle for Linux' un web sitesi olan http://www.oracle.com/linux adresinden indirebilirsiniz. Az önce bahsi geçen bileşenlerin toplamı 620 MB gibi bir alan tuttuğu
ve Oracle' ın FTP sitesi genelde meşgul olduğu için bu demo sürümlerini temin etmek tam bir işkence olabilir. Programları haklı olarak yurt içinden temin etmek isterseniz
adresler :


ftp://ftp.linux.org.tr/pub/oracle ve
ftp://ftp.onar.com.tr/pub/linux/console/oracle


olmalıdır. Bir diğer ihtimal de Oracle Türkiye veya Amerika' dan bir demo CD istemek olabilir. Oracle Türkiye web sitesi adresi http://www.oracle.com.tr şeklindedir.


Oracle 8i, Red Hat Linux ile birlikte gelmeyen bazı yazılımlara ihtiyaç duymaktadır.


Birincisi Java uygulamalarını çalıştırmaya yarayan JRE 1.1.6v5(Java Runtime Envirenment) yazılımı. Dikkat edilmesi gereken husus, JDK yerine JRE' nın
belirtilen versiyonun temin edilmesinin gerektiğidir. JRE, http://www.blackdown.org adresinden temin edilebilir. Tam olarak edinmeniz gereken dosya ismi,
jre_1.1.6-v5-glibc-x86.tar.gz şeklindedir.


Oracle Enterprise Manager kullanmayı düşünüyor iseniz http://www.scriptics.com adresinden temin edilebilecek olan TCL paketine de ihtiyaç duyacaksınız
demektir. TCL yorumlayıcı dili günümüzün modern bütün Linux sürümleri ile birlikte gelmekte olup büyük ihtimalle bu paketi indirmeye ihtiya duymayacaksınız.
Yazılımın sisteminizde mevcut olup olmadığını anlamak için komut satırında tcl yazmanız yeterli olacaktır.


2. root kullanıcı olarak yapılması gerekli işlemler.

Gerekli yazılımları indirdikten sonra bunların sisteme kurulması işlemine geçilebilir. İlk olarak JRE kurulmalıdır. Kurulumu hakkında ayrıntılı bilgi tar.gz paketinin
içindeki INSTALL adlı dosyada mevcuttur.


JRE' yi /usr/local/jre dizinine kurduğunuzu varsayarak devam ediyoruz.


Oracle 8i, sistemde make adlı programın GNU versiyonunu aramaktadır. Sisteminizde mevcut olup olmadığını öğrenmek için şu komutları veriniz.




# cd /usr/bin
# ls -l gmake



eğer sonuç olumsuz ise make adlı komuttan gmake' e bir sembolik bağlantı yapabilirsiniz. Bu işlem için şu komutu veriniz.




# ln -s /usr/bin/make /usr/bin/gmake



Eğer make sisteminizde mevcut değilse bir an önce kurunuz.



Son olarak da sisteminizde yeterli disk alanının olup olmadığını kontrol etmelisiniz. Oracle 8i, ortalama bir performans için 800 MB disk alanına ve 256 MB
fiziksel belleğe ihtiyaç duymaktadır. Gerekli bilgiyi almak için şu komutları verebilirsiniz.



 
# df -k
# cat /proc/meminfo



Şimdi Oracle 8i' nin kurulumu için bir dizin belirlemelisiniz. Bu dizinin /usr/local/oracle/8i olduğunu varsayarak aşağıdaki komutları veriyoruz.




# mkdir /usr/local/oracle/8i
# cd /usr/local/oracle/8i
# mkdir u01
# mkdir u02
# mkdir u03



Şimdi de yazılımı kullanmaya yetkili bir grup tanımlanması gerekmektedir. Ayrıca sistemi yönetmek için de dba adlı grup tanımlıyoruz.




# groupadd oinstall
# groupadd dba



Oracle kullanısını tanımlıyoruz. Bu kullanıcının varsayılan grubu oinstall ve ayrıca bu kullanıcı dba grubunun bir üyesi olmalıdır.




# adduser -d /usr/local/oracle/8i -s /bin/bash -c "Oracle User" -g oinstall -G dba oracle8i



Oracle' ın kurulacağı dizinin haklarını oinstall kullanıcısına veriyoruz.




# chown oracle8i.oinstall /usr/local/oracle/8i -R
# chmod 755 /usr/local/oracle/8i -R



Oracle kullanıcısına bir şifre tayin ediyoruz.




# passwd oracle8i



Bu aşamalardan sonra Oracle sisteme kurulmaya hazır hale gelecektir. Sırada Oracle kullanıcısının kendi ev dizininde yapacağı değişiklikler var.



3. oracle kullanıcısı olarak yapılması gereken işlemler.

Bilgisayarınıza oracle8i adlı kullanıcı olarak bağlanın ve XWindows ortamına geçiniz.



Oracle kurulacak olan dizinde güvenlik amaçlı koruma maskesini tanımlayınız.




$ umask 022



Bu kullanıcının açılış betiklerinde bazı değişiklikler yapılması gereklidir. Yaplan değişiklikler temelde ORACLE_HOME, ORACLE_BASE gibi çevre
değişkenlerini belitmekten ibarettir.



Aşağıdaki satırları aynı şekilde ev dizininizdeki .bash_profile adlı dosya içersine yazınız.




ORACLE_HOME = /usr/local/oracle/8i/u01/app/oracle/product/8.1.5
ORACLE_BASE = /usr/local/oracle/8i/u01/app/oracle
ORACLE_SID = v8i815
export ORACLE_HOME ORACLE_BASE ORACLE_SID
NLS_LANG='english_unitedkingdom.we8iso8859p1'
ORA_NLS33 = $ORACLE_HOME/ocommon/nls/admin/data
ORACLE_TERM=vt100
LD_LIBRARY_PATH=$ORACLE_HOME/lib
PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG ORA_NLS33 PATH LD_LIBRARY_PATH

export JAVA_HOME= /usr/local/jre
export PATH=$JAVA_HOME/bin:$PATH



değişikliklerin aktif olması için bir kez daha sistemden çıkarak oracle8i adlı kullanıcı olarak tekrar bağlanınız.



4. Oracle 8i' nin kurulması

Artık sisteminizde gerekli bütün ayarlamalar yapıldı ve Oracle' ı kurmaya hazırsınız. Bir hatadan dolayı runInstaller komutu Red Hat Linux üzerinde
çalışmamaktadır. Bunun yerine runIns.sh' yi çalıştırmak zorundasınız.


Oracle Universal Installer adlı yazılım çalıştıktan sonra çoğu sayfa kendisini açıklar niteliktedir. Fakat bazı dikkat edilmesi gereken hususlar vardır. Aşağıda
bunları işlem sırasına göre yorumlayacağız.




  • hangi grup altında çalışıcağı sorulduğunda oinstall grubunu giriniz. Grup seçimi yapıldıktan sonra kurulum programı /tmp/orainstall/orainstall.sh adlı programı
    çalıştırmanızı isteyecektir. Bu programı çalıştırmadan önce root haklarına sahip olduğunuzdan emin olunuz.




    # cd /tmp/orainstall
    # ./oraInstall.sh



  • Kurulum tipleri ekranına geldiğinizde Custom seçeneğini seçiniz. Diğer iki seçenek çalışmayacaktır.


  • Available Product Components (Mevcut Ürün Modüller) ekranına geldiğinizde Intermedia seçeneği haricinde bütün seçenekleri seçebilirsiniz.
    Bu yazılım hatalarla dolu olup kurulmaması daha faydalıdır.


  • Kurulumun bir aşamasında $ORACLE_HOME/root.sh komutunu root haklarına sahip olarak çalıştırmanız istenecektir. Bu komut varsayılan olarak çalıştırılabilir
    gelmemektedir. Çalıştırmak için aşağıdaki komutu kullanınız.




    # cd /usr/local/oracle/8i
    # sh root.sh




  • Kurulum size bir veritabanı yaratmak isteyip istemediğinizi soracaktır. Cevabınız ne olursa olsun "veritabanı yaratma asistanı" çalışacak ve bu veritabanı yaratılacaktır.


  • Kurulumun sonunda "veritabanı yaratma asistanı" veritabanını yaratırken



    JNLS Exception : oracle.ntp.jnls.JNLSException Unable to Find Any National Character Sets. Please check your Oracle Installation şeklinde bir hata verecektir.


    Bu bilinen bir hatadır, sorun çıkartmayacaktır. Umarsamayınız.


  • Veritabanı yaratma asistanı başladığında cancel tuşuna basarak kurtulabilirsiniz. Ardından Oracle Kurulumuna geri döneceksiniz. Oracle kurulumundan
    çıkınız ve aşağıdaki komutları veriniz.




    $ cd /usr/local/oracle/8i/install/utl
    $ ./linux.sh


    Bu komut bazı çalıştırılabilir olması gereken ama kurulumdaki bir hatadan dolayı olmamış olan dosyalardaki sorunları yok edecektir.




5. Bir veritabanı yaratılması


Veritabanı yaratmak için sisteme oracle8i adlı kullanıcı olarak girmelisiniz. Ardından dbassist komutu ile veritabanı yaratma asistanını çalıştırınız.


veritabanı yaratırken aşağıdaki adımlara dikkat edilmelidir.



  • Select the type of the database to create (Yaratılacak veritabanı tipini seçiniz) sorusu geldiğinde custom seçeneğini seçmelisiniz. Typical seçeneği çalışmamaktadır.


  • Review the Following Database Information (Aşağıdaki veritabanı bilgilerini kontrol ediniz) mesajını içeren ekrana geldiğinizde gerekli bölümlerini doldurunuz. Burada
    veritabanının hangi dosya ismi ile yaratılacağı hanesi yer almamaktadır. Bir kez next (ileri) tuşuna basarak ardından back (geri) tuşuna basınız. Bu sefer bu hane görünecektir.


  • Veritabanı yaratılması aşamasında Intermedia yaratılırken pek çok hata mesajı verecektir. Hiçbirisini umursamayın, işlem sorunsuz gerçekleşecektir.



Sonuç

Bu yazıda Oracle' ın 8i v1.1.5 yazılımını inceledik. Yeni versiyonu olan 8.1.1.6 sürümünde az önce bahsi geçen pek çok hata çözülmüştür.
Kurulumu tam bir ipuçları dünyası olan ve maalesef ki yine kurulumu pek çok hata içeren bu yazılım henüz tamamen hazır değil izlenimi vermesine
rağmen yine de Linux için çok önemli bir adım niteliğindedir. Umut ederiz ki, Oracle Inc. Linux' a verdiği desteği aynen devam ettirir ve böylesine
sorunlu bir kurulumdan kurtulmuş bir Oracle ile pek çok orta ve büyük ölçekli firma sistemlerini Linux' a çevirir.



Bu yazı Eylül 2000 tarihinde PC Net Türkiye dergisinde yayınlanmıştır.

Linux Sertifikaları
BT sektöründe son günlerin en popüler konularından bir tanesi kuşkusuz uzmanı olduğunuz
alanda bilginizi ispatlayan sertifikasyon programlarıdır. Pek çoğunuz, Cisco' nun CCNA,
Microsoft' un MCSE gibi unvanlarından haberdar olmalısınız. Peki Linux için bütün dünyada
geçerli bir sertifika programı mevcut mu?


Sertifikasyon, bambaşka bir sektör ve bu işin firmalarla, işletim sistemleri ile hiç ilişkisi yok.
Dünya üzerinde bu konuda otorite olmuş iki adet firma var. Birisi Virtual University
Enterprises (Vue) diğeri ise Sylvian Prometric. Her ikisi de yüzden fazla ülkede yetkili sınav
merkezleri aracılığı ile hemen her türlü firmanın sertifikasyon programını yürütüyor.


Linux sertifikalarını belli başlı üç başlıkta toplayabiliriz. Birincisi Prometric tarafından
yapılan sınav olan Sair Linux sertifikası, ikincisi Vue tarafından yapılan LPI programı ve bir
de Red Hat firmasının kendisinin yürüttüğü Red Hat Certified Engineer programı. Şimdi
isterseniz bu programları inceleyelim.



Linux Professional Institude(LPI) ve LPIC Sertifikaları

LPI, bu konuda standart olmayı amaçlayan bir komiteden oluşmuş. Caldera, IBM, S.u.S.e,
TurboLinux gibi firmalardan da onaylanmış programın web sitesinin adresi
http://www.lpi.org. Kısaca özetlemek gerekirse LPIC adını verdikleri sertifikalarının 3
aşaması var. Birinci ve ikinci aşamada ikişer tane sınav geçilmesi gerekiyor. Birinci aşama
genelde Linux hakkında genel bilgiler, özgür yazılım felsefesi, kurulum, konfigürasyon gibi
konuları kapsıyor. İkinci aşama ise daha çok sistem yönetimi ve hata çözümleme gibi
konulara yoğunlaşmış durumda. LPI' ın üçüncü aşama programı henüz hazırlık aşamasında
olmasına karşın, tek bir sınavdan oluşacağı ve bu sınavın seçimli olacağını biliniyor. LPIC
sertifika sınavlarına, yetkili VUE sınav merkezlerinden 100$ karşılığında girilebilir. Türkiye'
deki LPI sertifikası veren VUE merkezlerinin tam listesi için
http://www.vue.com/servlet/vue.web.core.VueWebPageServlet adresine bakınız.



Sair Linux & GNU Certification ve LCP – LCA Sertifikaları

Sair, Linux sertifikasyonu alanında ilk çalışan firmalardan birisi olup web sitelerinin adresi
http://www.linuxcertification.com şeklindedir. Bir tanesi tamamlandığında LCP (Linux
certified Professional) unvanının kazanıldığı toplam 4 adet sınav mevcut. Dört sınavın
tamamını geçmiş olan bir kişi ise LCA (Linux Certified Administrator) olarak anılıyor.
Prometric firması ile çalışan Sair, yine yüzden fazla ülkede sertifika programları ve LPI' dan
farklı olarak da yetkili eğitim merkezlerinde eğitim veriyor. LCP olmanın en kısa yolu
Installation ve Configuration (Kurulum ve Konfigürasyon) veya System Administration
sınavlarından bir tanesini geçmek şeklindedir. Diğer sınavlar ise, Networking (Bilgisayar
ağları) ve Security (Güvenlik) başlıklarını taşıyor. Sair Linux' un sınav ücreti 100$ ve
Türkiye' deki yetkili sınav merkezlerinin tam listesine http://www.2test.com/tcl/ZipCode.jsp
adresinden ulaşılabilir.



Red Hat Linux ve RHCE Programı

Dünyanın en yaygın kullanılan Linux sürümü olan Red Hat Linux üzerine yoğunlaşan ve Red
Hat firmasının kendisi tarafından yapılan bir sertifikasyon programı. Bu program sadece
sınavı değil aynı zamanda eğer istenirse konu ile ilgili bir eğitimi de kapsıyor. Eğitim, Red
Hat tarafından onaylanmış dünyanın pek çok ülkesinde bulunan yetkili merkezlerde yapılıyor.
Sınavları diğer sertifikasyon programları gibi Internet üzerinden veya hazır yazılım önünde
değil, yetkili kişiler önünde laboratuarda geçiyor. Sınavda üç aşama mevcut. Birincisi bir
saatlik bir sınav ve alışık olunan bir sistemle bilgisayar önünde sorulan sorulara cevap
veriliyor. İkinci aşamada, bir operatör kişi kontrolünde istenilen niteliklere sahip bir Linux
makine kurulması isteniyor. Üçüncü aşamada yine bir operatör kontrolünde bozulmuş bir
Linux sunucunun düzeltilmesi ve çalışır hale getirilmesi isteniyor. Tahmin edilebileceği gibi
gerçekten de zor bir sınav ve en kötü tarafı da eğitim ve sınav için Amerika' ya gidilmesi şart.
Sınav ve eğitim ücreti geçici bir süre için 2500$. Eğitim 5 günlük bir süreyi kapsıyor ve
ulaşım, konaklama tamamen katılımcının sorumluluğunda. Red Hat Linux sertifikasyon
programları için ayrıntılı bilgiye http://www.redhat.com/training/rhce/courses/ adresinden
ulaşılabilirsiniz.



Bu yazıyı okuduğunuza göre geleceğin işletim sistemi Linux' a yakından ilgi duyuyor ya da
zaten bu konuda uzman seviyesinde olmalısınız. Peki, bir firmada bilginizi ispatlamanız
istendiğinde bir belgenin eksikliğini hissetmiyor musunuz? Ya da bu konuda kendinizi
geliştirmek veya kurs materyallerinden faydalanarak Linux konusunda uzmanlığınızı artırmak
istemez miydiniz? Bilginize güveniyor ve kendinizi ispatlamak istiyorsanız, yukarıdaki
seçeneklerden sizin için en uygun olanını seçmeniz ve yetkili bir sınav merkezine
başvurmanız yeterli olacaktır.


Linux sertifikasyonları konusunda Türkiye' de yetkili eğitim kurumu mevcut mu? Bu sorunun
cevabı maalesef ki hayır... Linux eğitimi ve sertifikası veren kurumlardan birincisi olan Red
Hat firması Türkiye piyasasına henüz girmedi ve dolayısı ile bu tür bir oluşum henüz mevcut
değil. Bir diğer eğitim veren kurum olan Sair Linux' un ise henüz Türkiye' de yetkili bir
eğitim kurumu oluşmadı. Bu nedenle sınavlara hazırlanmak tamamen katılımcıların
özverisine kalıyor. Bir diğer yol ise bu firmalar ile direk ilgisi olmayan fakat ilgili konuda
eğitim sunan bir firma ya da şahıslardan eğitim almak olabilir. Bu konuda çalışan firmalar
arasında İstanbul' da Gelecek A.Ş. (http://www.gelecek.com.tr), Ankara' da Bimel A.Ş.
(http://www.bimel.com.tr) , İzmir' de Onar Ltd. (http://www.onar.com.tr) sayılabilir.



Bir yazılımın kalitesi, onu kullanan kişilerin bilgisi ile doğru orantılıdır. Linux' un kurumsal
piyasada önemli bir yer edinmesini istiyorsak, bu konuda bilgimizi ispatlamamız ve
çalıştığımız firmaları bu yazının konusu olan belgeler hakkında bilgilendirmemiz gereklidir.



Bu yazı Ekim 2000 tarihinde PC Net Türkiye dergisinde yayınlanmıştır.

Linux Sunucu Güvenliği ve Optimizasyonu I
Linux, kararlı çekirdeği, ağ yazılımlarının çeşitliliği ve kalitesi, performans/maliyet
eğrisindeki konumu nedeni ile günümüzün en çok tercih edilen ağ işletim sistemlerinden
olmuştur. Dışarıdan ve içeriden gelebilecek tehlikelere karşı gerekli önlemler alınmış bir
Linux kurulu makine yıllarca hiç sorun çıkartmadan çalışabilmesine rağmen, her zaman için
bunun aksi de mümkündür. Güvenlik ile ilgilenen herkesin bileceği gibi kesinlikle güvenli
denilecek bir sistem tasarlanması mümkün değildir. Özellikle Internet' in yaygınlaşması ve
kurumların iç ağlarını global ağa bağlaması sonucunda tehlike daha da artmıştır. Bu aydan
itibaren Linux sunucu ve istemci bilgisayarlarda güvenliği artırmak için bazı faydalı bilgiler
vermeye çalışacağız.



Güvenli bir işletim sistemi

Güvenlik, ciddiyet isteyen bir iştir. Tasarımına ilk aşamada yani, sunucunun kurulumundan
önce başlanması gereklidir. Bilgisayarın ne amaçlı kullanılacağı bir çizelge üzerinde
belirlenmeli ve temel işlevi dışında hiçbir yazılımın makine üzerinde bulunmasına izin
verilmemelidir. Unutmamalıyız ki, hatasız bir program yoktur. Makine üzerinde ne kadar az
program bulunursa, hatalardan etkilenme riskimiz de aynı derecede azalır.



Eğer sunucumuz üzerinde çok önemli bilgi bulunduruyorsak RAID kontrol kartları bulunması
kaçınılmazdır. Ayrıca yazılımın her ihtimale karşı düzenli olarak yedeklenmesi ve
yedeklenmenin de mümkünse ayrı bir optik veya manyetik medya üzerine yapılması tercih
edilmelidir.



Güvenli bir Linux sistemin kurulumu

Linux kurulumunda deneyimli bir kullanıcı, her Linux sürümünün kurulum programında
bulunan tipik sunucu veya istemci seçeneklerinden birisini tercih etmemelidir. Eğer
bilgisayarınızda tam bir hakimiyet kurmak ve üzerinde bulunan her yazılımın varlığından
haberdar olmak istiyorsanız kurulacak bütün bileşenleri sizin seçmeniz gereklidir.



Kurulum sırasında /var, /usr, /home dizinlerini ayrı disklere bağlamak genelde doğru bir
yaklaşımdır. Bu sayede diskin yedeğinin alınması kolaylaşmakta ve disklerden birinde
oluşacak bir hata sonucunda kaybedilen verinin minimuma indirilmesi sağlanacaktır.



Eğer sunucuda maksimum güvenlik gerekli ise, Xwindows bileşenlerinin kurulmaması doğru
bir karar olacaktır. Xwindows sistemi, bir istemci makinede işlemleri kolaylaştırmasına
rağmen, çok büyük kod yapısı ve kodunda bulunması muhtemel onlarca hatadan dolayı çok
büyük bir risk taşımaktadır.



Elinizdeki Linux sürümünü çok iyi tanımalı, eğer ihtiyacınız olan sunucu yazılımlar bu
sürüm ile birlikte geliyorsa onları sisteminize kurmadan önce versiyonları hakkında ayrıntılı
bilgi edinmelisiniz. Örnek vermek gerekirse: Red Hat Linux 6.2 işletim sistemi kurulacaksa,
bu sürüm ile birlikte gelen FTP sunucu paketi olan wu-ftpd-2.6.0 paketinde bulunan bazı
güvenlik açıkları ve bunlardan faydalanan exploitler nedeni ile yeni kurduğunuz Linux sunucu
birkaç dakika içinde kötü niyetli bir kişi tarafından ele geçirilebilir. Tavsiyemiz, az önce
hazırlamanızı tavsiye ettiğimiz sunucunun görevi başlıklı listenize sizin için gerekli olacak
yazılımlar listesini de ekleyerek sırası ile bu yazılımların Internet'teki ana sayfalarına göz
atmanızdır. Örneğin az önce söz ettiğimiz Red Hat 6.2' deki güvenlik boşluğuna karşı wu-
ftpd-2.6.1 sürümü kullanılmasının gerekliliği, sitenin ana sayfasında önemle duyurulmaktadır.


Şimdi, Linux sunucularda yaygın olarak kullanılan bazı ağ servisleri ve bunlar hakkında en
güncel bilgilerin bulunduğu Internet sitelerini listeleyelim.






































Paketin Adı Temel Görevi Web Adresi
Wu-FTPD FTP Sunucu http://www.wu-ftpd.org
Apache Web Sunucu http://www.apache.org
Bind DNS Sunucu http://www.isc.org/products/BIND/
qpopper POP3 Sunucu http://www.qpopper.org
Cyrus IMAP Server IMAP Sunucu http://asg.web.cmu.edu/cyrus/
Sendmail MTA Yazılımı http://www.sendmail.org


Yukarıdaki web sitelerini ziyaret ederken, elinizdeki Linux sürümündeki yazılımların
versiyonlarını kontrol ettiğinizde büyük ihtimalle en son sürüme sahip olmadığınızı
göreceksiniz. Bu aşamada en doğru hareket, ilgili paketin tar.gz uzantılı kaynak kodunu
sunucu makineye kopyalayıp, kodu derlemektir. Pek çoğumuza zahmetli gelen kod derlemeye
başvurmamızın nedeni, yazılımların kaynak kod olarak dağıtılması ile rpm veya deb paketi
olarak dağıtılmasına başlanması arasında geçen sürede sunucumuzun tehdit edilmesini
istemememizdir.


Güvenliği maksimize etmek için bir diğer önemli nokta da makinede C, C++ derleyici
bulundurulmamasıdır. Eğer ileride bir gün gerekirse geçici olarak kurulması ve ardından
tekrar kaldırılması doğru olacaktır. Bunun nedeni, makineye erişen kullanıcıların işletim
sistemine zarar verebilecek bazı kodları derlemesini engellemektir. Ayrıca, çekirdek (kernel)
kaynak kodunun da sistemde bulunması bazı tehlikeler ortaya çıkarabilir. Bunun nedeni ise
bazı alt seviye güvenlik kırıcı programların kernel' daki C++ başlık dosyalarını kullanarak
sistemde root kullanıcı hakkına sahip olmayı başarmasıdır. Bunu engellemek için en iyi yol,
Linux çekirdeğinin kaynak kodunun sistemde bulunmamasıdır.


Kurulduktan sonra silinecek bileşenler.

Linux sisteminizi kurduktan sonra ilk yapılması gereken, bazı tehlikeli paketlerin sistemde
bulunup bulunmadıklarının kontrolü olmalıdır. Tipik bir sunucuda aşağıda listelenen
programların bulunması ya gereksizdir, ya da bir güvenlik boşluğu teşkil etmektedir. Bu
nedenle özellikle gerekli değilse silinmeleri daha akıllıca olacaktır.


  • git ve mc

  • rsh, rlogin, rcp, rdate, rdist, rusers, rwall, rwho

  • ntalk, talk

  • telnet sunucu

  • Xwindows ile ilgili her türlü program

  • KDE, QT kütüphaneleri

  • C, C++, tk, derleyici ve yorumlayıcıları

  • Snmpd yazılımı

  • NFS ve NIS ile ilgili her şey.

  • routed

  • tftp

  • Grafik ile alakalı her şey.

  • piranha, linuxconf

  • at

  • Multimedia ile ilgili her şey

  • Pump

  • mt-st

  • eject

  • mailcap

  • apmd

  • kernel-pcmcia-cs

  • getty_ps

  • isapnptools

  • setserial

  • kudzu

  • gd

  • pciutils

  • rmt



Yukarıdaki liste ile paranoyaklık boyutuna ulaşmış olabiliriz fakat hepimiz biliyoruz ki,
güvenlik ciddi derecede paranoyaklık gerektirir.


Ayrıca yukarıdaki listede yer almayan ve makinenize kuracağınızı varsaydığımız Apache, wu-
ftpd, bind, sendmail gibi programları da şimdi sisteminizden kaldırmanız ve kaynak
kodlarından derlemeniz tavsiye edilir.


Kullanıcı hesapları

Bir bilgisayar sisteminin kırılmasında izlenen yolların büyük çoğunluğu, makine üzerinde
geçerli bir kullanıcı hesabına sahip olunmasından geçer. Güvenlik açıklarından faydalanmayı
amaçlayan kötü niyetli kişiler bu sunucu üzerinde bulunan hesaplardan bir tanesini eline
geçirdiğinde işi büyük ölçüde kolaylaşmaktadır. Bu nedenle ana makine üzerindeki bütün
şifrelerin en az root kullanıcının şifresi kadar iyi korunması gereklidir.


Sistemde kullanılan şifrelerin genel özelliklerini kısıtlamak mümkündür. Örneğin sistemdeki
bütün şifrelerin minimum 5 karakter ile kısıtlı olması sağlanabilir. Bunun için /etc/login.defs
dosyasına PASS_MIN_LEN n gibi bir ibare girilmesi gereklidir. Buradaki n sayısı şifrelerin
minimum uzunluğunu belirtmektedir.


Çok sık yapılan hatalardan bir tanesi de bir kullanıcının sisteme bağlanması ve uzun süre
bağlı kalmasıdır. Bunu engellemek için de /etc/profiles dosyası içerisine TMOUT =7200
yazılması bağlı olan kullanıcının hiçbir işlem yapmadan geçirdiği 7200 saniye sonunda
otomatikman sistemden atılmasını sağlar.



/etc/exports dosyası

Sisteminizde NFS, NIS gibi bir sistem kullanılmıyorsa, ki kullanılması pek tavsiye edilmez,
/etc/exports dosyası içersinde herhangi bir şey olması gerekli değildir. Bu dosya NFS
sunucular için paylaştırılacak dizinleri belirtir. Eğer NFS kullanılacaksa buradaki paylaşım
listesi aşağıdakine benzer bir yapıda olmalıdır.




/paylaştırılacak/dizin1 yetkili.makine.com.tr(ro,root_squash)
/paylaştırılacak/dizin2 192.168.10.4(ro,root_squash)


Yukarıdaki dosyada ro seçeneği, bu paylaşımın salt okunur olduğunu, root_squash seçeneği
ise root kullanıcı yazma haklarına sahip herhangi bir koşulun olamayacağı anlamına gelir.


/etc/security/console.apps/ dizini

Red Hat Linux sistemlerde normal kullanıcıların makineyi kapatmak, yeniden açmak vb...
özel haklara sahip olmalarını sağlayan bazı dosyalar bulunur. Bu dosyalar,
/etc/security/console.apps dizininde bulunur. Buradaki bazı dosyaları silmek bizi beklenmedik
sürprizlere karşı koruyacaktır. Aşağıdaki komutlar ile gereksiz bazı dosyaları temizleyelim.



rm –f /etc/security/console.apps/halt
rm –f /etc/security/console.apps/poweroff
rm –f /etc/security/console.apps/reboot
rm –f /etc/security/console.apps/shutdown


Eğer sistemde root kullanıcı harici kimsenin Xwindows sistemini kullanmamasını istiyorsak
yine rm –f /etc/security/console.apps/ dizini içindeki xserver dosyasını da silmemiz yeterli
olacaktır.



/etc/pam.d/ dizini

Bir diğer güvenlik artırımı da pam.d sisteminde sağlanabilir. Red Hat sistemlerde /etc/pam.d
dizininde bulunan betikler, yazılımların kullanıcıları nasıl yetkilendireceğini düzenler.
Aşağıdaki komutları verdiğiniz takdirde kullanıcılar tehlikeli sayılabilecek bazı konsol
haklarından mahrum edileceklerdir.



cd /etc/pam.d
for i in * ; do
sed '/[^#].*pam_console.so/s/^/#/' <$i> temp && mv temp $i
done


/etc/inetd.conf dosyası

Bu dosya Linux makinenizin sunucu yazılımlarının pek çoğunu kontrol eder. Arka planda
çalışan inetd adlı yazılım, bu dosyada belirtilen portlarda gelen istekleri dinleyerek bir istek
karşısında yine bu dosyada belirtilen programın bir kopyasını çalıştırır. Bu şekilde hiç
kullanılmayan ya da az kullanılan bazı sunucu yazılımların bellekte gereksiz yer kaplamaları
engellenmiş olur.



Dosyanın temel yapısı şu şekildedir.



ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l –a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd


Bu dosya, sisteminizin güvenliği için en önemli dosyalardandır. Gerekli olmayan her şeyi
kapatmalısınız. Örneğin makine ftp sunucu olarak kullanılmayacak ise yapılması gereken en
doğru hareket ilgili satırın başına bir diyez (#) işareti koyarak bu servisi aktif halden
kaldırmak olacaktır. Elbette ki bu servis kullanılmıyorsa, aynı zamanda makineden silmek
doğru bir harekettir. Eğer bir servisin işe yarayıp yaramadığı hakkında tereddüde
düşüyorsanız, o servisi kaldırın. Büyük ihtimalle işinize yaramayacaktır. Burada açık
bırakacağınız her bir satır size bir güvenlik boşluğu olarak geri dönecektir. Örnek vermek
gerekirse çok zararsız gibi görünen "echo" servisi, bu porta gönderilen her bilgiyi aynen geri
göndermekle görevlidir. Eğer kötü niyetli birisi bu porta, sürekli işe yaramaz bilgi gönderen
bir yazılım yazarsa, bu servis gelen saçma sapan karakterlerin hepsine birden cevap vermek
isterken sistem kaynaklarının çok önemli bir kısmını tüketecektir. Aynı programın bir worm
tarzında yazıldığını ve Internet üzerinde binlerce makineden aynı anda saçma sapan
karakterler gönderildiğini varsayarsanız, sunucunuz büyük ihtimalle göçecektir.


Bir diğer önemli madde ise her ihtimale karşı /etc/inetd.conf dosyasının haklarını kontrol
etmeliyiz. Bu dosyanın hakları 600 yani sadece root kullanıcı tarafından okunabilir ve
yazılabilir şekilde olmalıdır. Bu, aşağıdaki komut ile sağlanabilir.




chmod 600 /etc/inetd.conf



Bu dosyanın içeriğinden emin olunduktan sonra, bir daha root kullanıcı dahil kimse tarafından
değiştirilmemesi için şu komut verilmelidir.




chattr +i /etc/inetd.conf



/etc/hosts.deny dosyası

Bu dosya, ağ servislerinize ulaşmaya yetkili kullanıcıları kısıtlamaya yarar. Genellikle bu
dosya içinde herkese bütün yetkiler kısıtlanır. Ardından sisteme girmeye yetkili IP adresi veya
bilgisayar adları /etc/hosts.allow dosyası içinde belirlenir.


Aşağıda standart bir /etc/hosts.deny dosyası görünmektedir.




# Bütün erişim haklarını kapat!!!...
ALL:ALL



/etc/hosts.allow dosyası

Bu dosya, /etc/hosts.deny dosyasında tamamen kapattığınız erişim haklarını bazı yetkili
bilgisayarlara iade etmek için kullanılır. Örneğin sunucu makinenize sadece trlinux.com
(195.244.37.241) alan adından ve sadece sshd adlı protokol ile erişilmesini istiyorsanız, bu
dosyada aşağıdaki değişiklikleri yapmalısınız.




sshd: 195.244.37.241 trlinux.com



/etc/issue ve /etc/issue.net dosyaları

Bu dosyalar, sisteminize konsoldan veya telnet yolu ile bağlanmak isteyen kişilere login:
belirtkecinden önce gösterilen bilgi satırlarını içerirler. Bu, genelde kişiyi kullandığı sistemin
bir Linux sistem olduğunu göstermesi açısından faydalı olabilir fakat, yüksek güvenlik
gerektiren sistemlerde kullanılan işletim sistemi, kullanılan çekirdek(kernel) gibi bilgilerin
kötü niyetli kişilerin eline geçmesi doğru değildir. Bu nedenle /etc/inetd.conf dosyasında
telnet programını çalıştıran satırda in.telnetd sonuna –h parametresinin eklenmesi bu bilgilerin
ekrana getirilmemesini sağlar.


telnet protokolü, bir makineye uzaktan erişim amaçlı kullanılır ve üzerinden akan bilgiyi
şifrelemeden gönderdiği için güvenli bir makinede bulunması kesinlikle tavsiye edilmez.
Şifrelenmeden yollanan her türlü bilgi, bir sniffer yazılımı aracılığı ile rahatlıkla dinlenebilir.
Bunu engellemek için ssh adı verilen protokolü tercih etmelisiniz.



/etc/services

Bu dosya, bir portta bağlanacak olan programa bir isim vermek amaçlı kullanılır. Örneğin
65000 nolu portu kullanan ve inetd aracılığı ile bu portu dinleyen bir Netbus tarzı bir worm
programı yazılmak istendiğinde yapılması gereken, /etc/services dosyasında bu porta bir isim
vermek ve /etc/inetd.conf dosyasında verilen ismi içeren ve bu porttaki istekleri işleyen bir
program yazılması yeterlidir.


Bunu engellemek için bu dosyada değişiklik yapmayı engelleyen şu komutun verilmesi
yeterlidir.




chattr +i /etc/services



/etc/securetty dosyası

Bu dosya root kullanıcının sisteme direk login belirtecinde kullanıcı adı ve şifresini girerek
bağlanabileceği terminal aygıtlarını listeler. Bu dosya silindiği takdirde sisteme telnet ile
bağlanan herkes kullanıcı adı olarak root verebilir. Bu çok büyük bir güvenlik açığıdır.
Yapılması gereken eğer bu dosya yerinde yoksa yaratılması ve içine "tty1" yazılmasıdır. Bu
sayede root kullanıcı sadece bilgisayarın önünde iken ve 1 nolu sanal terminali kullanırken
sisteme direk bağlanabilir.



/etc/passwd ve /etc/shadow dosyaları

passwd ve shadow dosyaları birlikte, kullanıcı şifreleri ve hesapları hakkında ayrıntılı bilgiyi
barındırır. Bu nedenle korunmasına özel önem verilmelidir. Internet' te yer alan pek çok hack-
warez sitesinde, bir Linux sistemi kırmakla ilgili dokümanda bu dosyaların bir şekilde ele
geçirilmesi ve ardından bir brute force programı yazılımı ile bu şifrenin güçlü bir bilgisayarda
deneme yanılma yöntemi ile kırılması anlatılmaktadır. Bunun önüne geçmek gerçekten çok
kolaydır. Yapılması gereken /etc/shadow dosyasının okuma haklarını normal kullanıcılardan
kaldırmak olmalıdır. Bu işlem şu komutla gerçekleştirilir.




chmod 600 /etc/shadow



Kullanıcıların su komutu ile root kullanıcı olmalarının engellenmesi

su komutu herhangi bir kullanıcının root şifresini bildiği takdirde root kullanıcı haklarına
sahip olmasını sağlar. Bu çok büyük bir güvenlik riskidir, fakat engellemek mümkündür.
/etc/pam.d/su dosyasının en tepesine aşağıdaki satırları eklediğimiz takdirde sadece wheel adlı
ön tanımlı gruba üye olan kullanıcılar su komutunu çalıştırarak root kullanıcı haklarına sahip
olabilirler.




auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel



Artık sistemimizde wheel grubuna üye olmayan hiçbir kullanıcı root haklarına sahip
olamayacaktır. Wheel grubuna aşağıdaki komut ile kolayca umut adlı bir kullanıcı eklenebilir.




chmod –G10 umut




Kullanıcıların CPU ve RAM kullanımlarını sınırlamak

Bu Linux' un çok gelişmiş özelliklerinden bir tanesidir. Sisteme bağlanan kullanıcılara
herhangi bir kaynak limiti verilmediği takdirde sistemi kırmak için özelleşmiş bazı
programları çalıştırarak sistemi meşgul etmelerine ve belki de sonuçta başarılı olmalarına
neden olunabilir. Aşağıdaki satırlar /etc/security/limits.conf dosyasına eklendiği takdirde root
kullanıcı haricindeki kullanıcılar maksimum 20 tane proses açabilecek ve 5 MB bellek
kullanabileceklerdir.




hard core 0
hard rss 5000
hard nproc 20



Ardından bu özelliği aktif hale geçirmek için kullanıcılar sisteme bağlanırken kullanılan
/etc/pam.d/login betiğine bu özelliğin belirtilmesi gereklidir. Sonuçta bu dosya aşağıdaki gibi
olacaktır.




#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_pwdb.so shadow
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so nullok
session required /lib/security/pam_pwdb.so
session required /lib/security/pam_limits.so



Linux işletim sistemi, doğru ellerde dünyanın en güvenli işletim sistemi haline getirilebilir.
Fakat, pek çoklarının düşündüğü gibi bu özelliklerin pek çoğu aktif olarak gelmez. Doğru
amaçlar için konfigüre edilmiş bir işletim sistemi yaratmak için çok çalışmalı ve Linux
dünyasında duyurulan güvenlik uyarılarını dikkate almalısınız.



Bu yazı Ekim 2000 tarihinde PC Net Türkiye Dergisinde yayınlanmıştır.

Linux Hakkında Sıklıkla Sorulan Sorular I.
Linux altında modemimi tanıtamıyorum. Araştırmalarım sonunda modemimin HSP denilen winmodem cinsinden olduğunu öğrendim. Modemimi Linux altında kullanmamın bir yolu var mı?



Winmodem denilen cihazlar adından da belli olabileceği gibi sadece Microsoft Windows işletim sistemlerinde çalışmak üzere tasarlanmışlardır. Bu modemler, aslında modemin yapmakla yükümlü olduğu bazı işlemleri bilgisayarın işlemcisine yaptırarak maliyeti daha düşük tutmak amacı ile üretilmektedirler ve çalışmak için bir emülasyon programına ihtiyaç duyarlar. Maalesef ki çoğu modem üreticisi bahsi geçen emülasyon programlarının sadece Windows versiyonlarını ürettiği için bu tür modemler winmodem diye anılır olmuşlardır. Lucent gibi firmalar winmodemlerinin Linux için emülatör modüllerini yayınlamış olsa da maalesef Türkiye' de satılan PCI modemlerin büyük çoğunluğu halen Linux altında çalıştırılamamaktadır. Bu nedenle en mantıklı çözüm bir harici modem kullanmak olacaktır. Çünkü harici modemlerin çok büyük bir oranı bütün işletim sistemleri altında kullanılabilmektedir.



Yaklaşık 2 aydır Mandrake 7.1 kullanıyorum. Uzun süredir başka bir ortamda C++ ile programlama üzerine çalıştığım için programlarımı kaynak kodundan derlemeyi tercih ediyorum. Fakat ne zaman KDE için program derlemeye çalışsam QT ile ilgili bir hata verip kalıyor. QT nedir, ne işe yarar?



Linux' un da pek çoğumuzun bildiği gibi başarılı sayılabilecek çok sayıda grafik arayüzü vardır. Fakat alışılagelenin dışında Linux' un standart bir grafik arayüzü yoktur. Belli başlıları arasında, KDE, GNOME, Afterstep, icewm, window maker sayılabilir. En popülerleri olan ve Windows işletim sistemi arayüzlerini andıran KDE ve GNOME, üzerinde çalışacak programlar için çok başarılı API' ler s