Kurulum
yaparken minimum servis kurmak güvenlik açısından önemli.
Öncelikle
sunucunuz yeni kurulduğunda size otomatik atanan root şifresini
değiştirmelisiniz.
Ben şifre
oluşturma ve yönetimi için açık kaynaklı keepass yazılımını
kullanıyorum. 30 karakterli bir
şifreyi aşağıda ki ayarlarla üretmek yeterince paranoyakça.
Şimdi root
şifresini değiştirelim
passwd
Fail2Ban kurulumu
Şimdi
sunucumuzu brute-force ataklardan korumak için fail2ban kuralım.
apt-get
install fail2ban
Açık
portlarınızı kontrol etmek için aşağıda ki komutu kullanın ve gereksiz
portlarınızı kapatın
netstat -an --inet | grep LISTEN | grep -v 127.0.0.1:
/tmp dizinini güvenli hale getirmek
Sunucuzun /tmp
dizinini ayrı bir bölüm olarak ayırıp noexec nosuid yapmak hackerlara
karşı alınacak önemli tedbirlerdendir. Benzer bir şekilde /var/tmp dizininide
ayrı bir bölüm yapmalı veya sembolik
bağlantı olarak /var dizinine bağlamak gerekir.
/tmp
dizininizin ayrı bir bölüm olup olmadığını öğrenmek için:
df -Th
önce fstab
dosyasının ve /tmp dizinini yedeğini alın
cp
/etc/fstab /etc/fstab.backup
cp -Rp /tmp
/tmp_backup
Eğer /tmp dizini zaten ayrı bir bölümse:
editörünüzle
fstab dosyasını açın
/etc/fstab
nosuid,noexec
opsiyonlarını aşağıda ki gibi ekleyin
UUID=… /tmp
ext4 defaults,nodev,nosuid,noexec 10 0
tekrar mount
edin
mount -o
remount /tmp
/tmp dizini / ile aynı bölümde ise
aşağıda ki
önce büyük bir dosya yaratacağız sonra on ayrı bir bölüm olarak mount edeceğiz
burda seek parametresini değiştirerek istediğiniz boyutta oluşturabilirsiniz
dosyanızı. cd /var
dd
if=/dev/zero of=tmp.partition bs=1 count=0 seek=12G
mkfs.ex4
/var/tmp.partition
sonra y ile
devam edin
mke2fs 1.42
(29-Nov-2011)
/var/tmp.partition
is not a block special device.
Proceed
anyway? (y,n) y
bs buffer
size ve count ise bs nin kaç kere yazılacağını söylüyor seek komutu ise
gerçekten dosyayı oluşturmadan boş bir dosya oluşturmasını sağlıyor. Yani dosya
üzerine yazıldıkça büyeyecektir bir çok dosya sistemi buna izin verir böylce
çok büyük dosyaları çok kısa zamanda oluşturabilirsiniz.
örneğin
aşağıda ki ilk komut altında ki komuttan daha hızlı çalışacaktır
dd
if=/dev/zero of=dosya count=0 bs=1G seek=10
dd
if=/dev/zero of=dosya count=10 bs=1G
/etc/fstab'a
ekleme
öncelikle sistemde hiçbir
servisin çalışmadığından emin olun (mysql, nginx, apache…) işlemler bitene
kadar /tmp dizini kullanan servisler hata verecektir.
echo
"/var/tmp.partition /tmp ext4 loop,rw,noexec,nosuid,nodev 0
0">> /etc/fstab
yeni /tmp
dizinini mount edelim
mount -o
loop,rw,noexec,nosuid,nodev /var/tmp.partition /tmp
chmod 1777
/tmp
chown
root:root /tmp
777 başında
ki 1 sticky bit diye adlandırılır ve yaratılan bir dosyanın sadece kendi
kullanıcısı ve root tarafından edit elilebilip silinebilmesini sağlar.
/var/tmp
dosyasını sembolik bağ ile /tmp 'e bağlama
öncelikle
/tmp 'nin içeriğini yedekten aktarıp yedek dizinini silelim
cp -Rp
/tmp_backup /tmp/
rm -rf
/tmp_backup
/var/tmp 'de
dosya varsa önce yedeğini alın sonra
rm -rf
/var/tmp
ln -s /tmp
/var/tmp
yapabiliyorsanız
sunucuzu yeniden çalıştırın
reboot
bölümlerinizi
kontrol edin
df -Th
İşlemi
yapmak için durdurduğunuz servislerin çalıştığından emin olun.
shared memory'i güvenli hale getirmek
httpd 'e
shared memory üzerinden yapılan ataklara karşı shared memory'de noexec nosuid
ataması yapalım
Yine
/etc/fstab editörünüzle açın ve aşağıda ki satırı ekleyin
tmpfs
/dev/shm tmpfs defaults,noexec,nosuid 0 0
ayarın etkin
olması için restart veya tekrar mount edilmesi gerekir
mount -o
remount /dev/shm
umask ayarı
umask
sistemde yaratılan dosyaların varsayılan haklarını ayarlar, Ubuntu 12.04'de
/etc/login.defs dosyasında tanımlıdır varsayılan 022 değerini 027 yapın. SSH
oturumunuzu kapatıp yeniden açtığınızda ayarın etkin olduğunu göreceksiniz. İlk
durumda her dosya 644 değeriyle gelir bu ayar yapıldıktan sonra 640 yeni
varsayılan değer olur. Çalışma mantığı
dosyalar için
666 - umask
= vasayılan değer
dizinler
için :
777 - umask
= varsayılan değer
şeklinde
bulunur.
Aşağıda ki
gibi deneme yapabilirsiniz. umask 022 olduğunda
touch
deneme1.txt
ls -al
-rw-r--r-- 1 root root
0 Sep 14 13:29 deneme1.txt
umask 027
olduğunda
touch
deneme2.txt
ls -al
-rw-r----- 1 root root
0 Sep 14 13:30 deneme2.txt
Sunucunuza
ssh root erişimini engellemek iyi bir güvenlik önlemidir ayrıca siteleri
/var/www dizinin altına koymak yerine eklediğiniz kullanıcının
/home/{kullanıcıadı} dizinine koymak çoklu kullanıcı durumlar için daha iyi bir
seçenek. Şimdi yeni bir kullanıcı ekleyelim.
adduser
server
IPV6 inaktif yapmak
Eğer IP6
kullanmıyorsanız firewall kurallarında sadece IP4 ile çalışmak daha
yönetilebilir olur.