Linux Sunucu Güvenliği ve Optimizasyonu II
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.