Tmp dizini geçici dosyaların yazıldığı bir dizindir biizm yapıcaklarımız dosyaların yazılmasını engellemiyecek fakat icra yetkisini önleyecektir.Yani kısaca saldırgan ruhlu insan gene exploitini ,bindshelini yada ne indiriyorsa gene tmp dizininize indirebilecek ama onu çalıştıramıyacaktır.
Hemen başlıyalım
ideal olanı sistem kurulurken bir partion u tmp ye ayırmaktır ama burada yapacağımızda sistemi reboot filan etmeye gerek kalmadan olucaktır fiziksel olarak formatlamıyacağız diski işleme başlıyoruz
öncelikle 200 mb lik bir dosya oluşturuyorum bu dosya boyutu tmp dizininin boyutu olacaktır
bu işlemleri yapabilmek için root yetkiniz olmalıdır
dev dizinine geçiyoruz öncelikle
Kod:
cd dev
daha sonra dosyamızı oluşturuyoruz 200 mb boyutunda
Kod:
dd if=/dev/zero of=tmpdir bs=1024 count=200000
burada count un karşısındaki 200000 boyutunu göstermektedir isteğinize göre değiştirin bunu
daha sonra tmpMnt dosyamız için extended dosya sistemimizi oluşturuyoruz aşağıdkai komutu vererek
Kod:
mke2fs /dev/tmpMnt
size şu hatayı vericektir
/dev/tmpMnt is not a block special device
Proceed, anyway? (y,n)
siz burada yes i işaretleyip devam ediyorsunuz
ve dosya sistemimizde oluşturuldu
şimdi tmp dizinimiizn yedeğini alıyoruz
Kod:
cp -R /tmp /tmp_yedek
şimdi yeni tmp dizinimizi noexec nosuid olarak mount ediyoruz
Kod:
mount -o loop,noexec,nosuid,rw /dev/tmpMnt /tmp
gerekli izini veriyoruz tmp dizinine
Kod:
chmod 0777 /tmp
yedeklerimiz eski /tmp dizinindeki dosyaları yeni mount ettiğimiz tmp dizinine atıyoruz
Kod:
cp -R /tmp_yedek/* /tmp/
şimdide tmp yedek dizinimizi siliyoruz
Kod:
rm -rf /tmp_yedek
fstab dosyası file system table a karşılık gelir bu dosya sistem yöneticisinin işletim sistemine işletim sisteminin hangi dosyalara ve ne şekilde ulaşılacağını gösterir
şimdi etc dizinindeki fstab dosyasını açıyoruz
Kod:
pico -w /etc/fstab
dosyanın en alt satırına aşağıdakini ekliyoruz
Kod:
/dev/tmpMnt /tmp ext2 loop,noexec,nosuid,rw 0 0
ve görünümü şu şekilde oluyor
artık tmp dizininizde dosya icra yetkisi yoktur
tabi bir trik de var
yada bir shared library kullanmakta geri ictra yetkisi getirebilir
/lib/ld-linux.so.2 /tmp/dosya gibi
öncelikle mysql sunucusuna bir restart atın herşeyin çalışıp çalışmadığını kontrol etin
Kod:
/etc/init.d/mysqld restart
eğer bir sorun olursaki olacağını hiç sanmıyorum mysql.sock dosyasının sembolik bağını yapın bu komutla
Kod:
cd /var/tmp/
ln -fs /var/lib/mysql/mysql.sock /var/tmp/mysql.sock
başlamışken /dev/shm ninde güvenliğini sağlayalım
gene
Kod:
pico -w /etc/fstab
yazarak dosyayı açtık
/dev/shm nin görüntüsü bu şekilde
Kod:
none /dev/shm tmpfs defaults 0 0
onu bu şekilde değiştiriyoruz
Kod:
none /dev/shm tmpfs noexec,nosuid 0 0
değişiklilerin olabilmesi için umount layıp sorna mount luyoruz /dev/shm yi
aşağıdkai komutla
Kod:
umount /dev/shm
mount /dev/shm
eski /var/tmp dizinini silip linkliyoruz
Kod:
rm -rf /var/tmp/
ln -s /tmp/ /var/
şükür bitti artık
/tmp , /var/tmp ve /dev/shm noexec nosuid olarka mount edildi biraz daha güvendesiniz
/tmp güvenliği
Yapılması gereken bazi islemler:
1- Dizin erisim yetkilerini incele. Belirli kullanicilarin yetkilerini sinirla.
2- En cok kullanilan komutlarin belirledigin kullanicilarin calistirmasina izin verme(ls , wget , ps …).
3- Herhangi bir olumsuzluga karsin siteminde tripwire, samhain gibi butunluk kontrol uygulamalarini kur.
4- Uygulamalarini guncel tut.
Örnek saldırı-1 :
[dropby23@server /tmp]$ ./date
bash: ./date: Permission denied
[dropby23@server /tmp]$ /lib/ld-linux.so.2 ./date
Thu May 8 12:20 MDT 2005
[dropby23@server /tmp]$
#pwd
/tmp
#./test.pl
-bash: ./test.pl: Permission denied
#perl /tmp/test.pl
Örnek saldırı-2 :
ssh e800@sorubank.ege.edu.tr password:****
e800@sorubank.ege.edu.tr/$ scp /bin/poweroff.bin / e800@sorubank.ege.edu.tr:/wwwhome/
cd wwwhome
dir
poweroff /kişisel /dersler /webödev
./poweroff
Saygılar..