Bilginin Adresi Ana Sayfa
Forum Anasayfası Forum Anasayfası > Bilgisayar Güvenliği / Computer Security > Güvenlik / Security Makaleleri
  Aktif Konular Aktif Konular RSS - Linux Sunucu Güvenliği ve Optimizasyonu
  SSS SSS  Forumu Ara   Events   Kayıt Ol Kayıt Ol  GiriÅŸ GiriÅŸ

Linux Sunucu Güvenliği ve Optimizasyonu

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
megabros Açılır Kutu Gör
Security Professional
Security Professional
Simge

Kayıt Tarihi: 08-06-2009
Konum: Turkey
Status: Aktif DeÄŸil
Points: 752
Mesaj Seçenekleri Mesaj Seçenekleri   Thanks (0) Thanks(0)   Alıntı megabros Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Linux Sunucu Güvenliği ve Optimizasyonu
    Gönderim Zamanı: 23-08-2009 Saat 22:36

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.dfor i in * ; dosed “/[^#].*pam_console.so/s/^/#/” <$i> temp && mv temp $idone

 
 
/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.

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 k****ktı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, sshi, 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.

Saygılar.


Düzenleyen megabros - 23-08-2009 Saat 22:36
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu Gör



Bu Sayfa 0.172 Saniyede Yüklendi.