Linux Sunucu Güvenliği (1 Viewer)

K

kr4l

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.

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.


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)
 

Users who are viewing this thread

Top