Sunucum zaten güvenilir demek çok kolay! Böyle bir önyargıya düşmeyin ve masraflı olabilecek güvenlik ihlallerine yol açmayın. 15 Adımda Linux Sunucumuz daha güvenilir hale getirilebilir. Daha önce NetworkWorld’de yayınlanmış olan bu makaleden daha fazla bilgi elde edebilirsiniz.
1.Host Bilgisini Not Edin
Yeni bir Linux Sunucu Güvenliğini Arttırma işlemi yapacağınız zaman yeni bir belge açın ve aşağıda listelenen maddeleri yapılacak listesine ekleyin. Ardından sisteme uyguladığınız her maddeyi işaretleyin.
Makine Adı
IP Adresi
MAC Adresi
Sunucu güvenliğini yapan kişinin Adı
Tarih
Varlık Numarası(Bir şirket için çalışıyorsanız, şirketinizin host sahiplerini etiketlemek için kullandığı varlık numarası)
2. BIOS Koruması
Son kullanıcının BIOS’taki güvenlik ayarlarını değiştirmemesi için host’un BIOS’u bir şifre ile korunmalıdır, bu alanın küçük değişikliklerden korunması için gereklidir.
Bir sonraki adımda (USB/CD/DVD) gibi cihazların dışarıdan boot edilmesini kapatmalıyız. Eğer bu ayarı değiştirmezseniz herhangi bir kişi boot edilebilen İşletim sistemi içeren bir USB Bellek ile verilerinize erişebilir.
En son çıkan sunucuların anakartlarında uzaktan erişebilmemiz için dahili web sunucusuna sahiptir. Eğer böyle bir özellikle şu an için mümkünse admin sayfasının varsayılan şifresini değiştirdiğinizden veya bu özelliği devredışı bıraktığınızdan emin olunuz.
3. Hard Disk Şifrelemesi (Gizlilik)
GNU/Linux Dağıtımlarının birçoğu kurulumdan önce disklerinizi şifreleme imkanı sunar. Disk şifrelemesi hırsızlık durumunda çok önemlidir. Çünkü Sabit diski kendi makinesine bağladığında bilgisayarınızı çalan kişi verilerinizi okuyamayacaktır.
Aşağıdaki resimde gördüğünüz üzere listeden 3.seçeneği seçtiğinizde: “Guided use entire disk and set up encrypted LVM(Logical Volume Manager)”. Türkçesiyle Mantıksal Cilt Yöneticisi.
Resim 1:
Eğer Linux dağıtımınız şifrelemeyi desteklemiyorsa, TrueCrypt gibi yazılımlar kullanabilirsiniz.
Resim 2:
4. Disk Koruması
Sistemin hasar görmesi durumunda yedeklemelerin birsürü avantajı vardır. Önemli sunucular için, yedeklemelerin saha dışına taşınması gerekir. Yedeklemelerin yönetiminin çok iyi olması gerekiyor. Örneğin eski yedeklemeleri ne kadar süre boyunca tutuyorsunuz? Sisteminizi ne zaman yedeklemeniz gerekir? (Her gün, Her hafta?)
Kritik sistemler farklı bölümlere ayrılmış olmalıdır.
/
/boot
/usr
/home
/tmp
/var
/opt
Diskleri bu şekilde porsiyonlara ayırmak sistem hatalarının oluşması durumunda güvenlik ve performans şansı tanıyacaktır. Aşağıdaki resimde gördüğünüz gibi
Kurulum esnasında Kali Linux’ta bölümleri nasıl ayırabileceğinize dair seçenekler görmektesiniz.
Resim 3:
5. Boot Dizinini Kilitleyin
Boot dizini, linux çekirdeğiyle alakalı önemli dosyalar içeren bir dizindir. Bu yüzden aşağıdaki basit adımlarla bu dizinin salt-okunur izinlere kilitlendiğinden emin olalım.
Öncelikle “Fstab” dosyasını açalım.
Resim 4:
En alttaki satırı ekleyelim.
Resim 5:
Aşağıdaki komutu çalıştırarak düzeltmiş olduğumuz bu dosyanın sahibini ayarlayalım.
# chown root:root /etc/fstab
Şimdi boot ayarlarındaki güvenlik için birkaç izin ayarlayalım.
/etc/grub.conf sahip olduğu grubu ve kullanıcıyı root olarak ayarlayalım.
# chown root:root /etc/grub.conf
Tek kullanıcı modu için yetkilendirme yapmalıyız.
# sed -i "/SINGLE/s/sushell/sulogin/" /etc/sysconfig/init
# sed -i "/PROMPT/s/yes/no/" /etc/sysconfig/init
6. USB Kullanımını Kapatın
Nasıl kritik bir sistem üzerinde olduğunuza dayanarak, Linux host üzerinde USB belleklerin kullanımını kapatmak çok önemlidir. USB Bellek kullanımını kapatmanın birden çok yolu vardır. Ancak en popüler olanı üzerinden gidersek;
Kullandığınız metin editörü ile “blacklist.conf” dosyasını açınız.
# nano /etc/modprobe.d/blacklist.conf
Dosya açıldığında en alt satıra aşağıdaki satırı ekleyelim ve kaydedip çıkalım.
blacklist usb_storage
Ardından rc.local dosyasını açalım.
# nano /etc/rc.local
Son olarak aşağıdaki 2 satırı ekleyelim.
modprobe -r usb_storage
exit 0
7. Sistem Güncellemesi
Sistemimizi boot ettikten sonra ilk düşüncemiz sistemi güncellemek olmaktadır. Genellikle Uçbirim’i açarız ve gereken komutları çalıştırırız. Kali Linux’ta aşağıdaki resimdeki gibi komutları girebilirsiniz.
Resim 6:Resim 7:
8. Yüklü Paketleri Kontrol Etme
GNU/Linux dağıtımlarınızda yüklü olan paketleri listeleyelim ve gereksiz olanları silelim. Güvenliğini arttırmaya çalıştığınız bir sunucu ise çok sıkı olmamız gerekiyor. Kali Linux’ta yüklü olan paketlerin nasıl listelendiğine dair bir örneği aşağıda gösterelim.
Resim 8:
Önemli olmayan servislerin kapatılmasının saldırı yüzeyini indirgeyeceğini unutmayalım. Bu yüzden eğer linux sunucunuzda yüklü olarak bulduysanız, aşağıdaki legacy servislerini silmeniz çok önemlidir.
Telnet server
RSH server
NIS server
TFTP server
TALK server
9. Açık Olan Portları Kontrol Edin.
İnternete açık olan bağlantıların tanımlanması çok kritik bir adımdır. Kali Linux’ta aşağıdaki komutu kullanarak herhangi gizlenmiş olan açık portları tespit edebilirsiniz.
Resim 9:
10. Güvenli SSH
Evet, gerçekten de SSH güvenli, fakat bu servisin çok iyi bir şekilde güvenliğini arttırmalıyız. Hepsinden önce SSH’ i kapatarak problemi çözebiliriz. :) Bununla birlikte bu aracı hala kullanmak istiyorsanız SSH’in öntanımlı yapılandırma dosyasını değiştirmelisiniz. Bunu yapmak için /etc/ssh dizinini açalım ve sshd_config dosyasını kullanmış olduğunuz metin editörü ile düzenleyelim.
Resim 10:
Öntanımlı olarak gelen portu (22) 99 gibi bir numarayla değiştirelim.
root’un SSH ile uzaktan giriş yapmadığından emin olalım.
PermitRootLogin n
Bazı özel kullanıcılara izin verelim.
AllowUsers[username]
Başlangıç için yukarıdaki liste yeterlidir. Örnek vermek gerekirsek, bazı şirketler saldırganları caydırmak ve daha da ilerlemelerini engellemek için bazı afişler eklerler. Bu yazıdaki tüm yapılandırmaları anlayabilmeniz için SSH’in kullanım kılavuzunu yada aşağıdaki adresi ziyaret etmenizi öneriyorum.
https://www.ssh.com/ssh/sshd_config/
sshd_config dosyasının olduğundan emin olduktan sonra bazı ekstra seçenekleri aşağıda bulabilirsiniz.
Protocol2
IgnoreRhosts to yes
HostbasedAuthentication no
PermitEmptyPasswords no
X11Forwarding no
MaxAuthTries 5
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
ClientAliveInterval 900
ClientAliveCountMax 0
UsePAM yes
Son olarak sadece root kullanıcılarının içerikte değişiklikler yapabilmesi için sshd_config dosyasının izinlerini ayarlayalım.
Güvenli Geliştirilmiş Linux, erişim kontrolü güvenlik politikasını desteklemek için çekirdek güvenliği mekanizmasıdır. SELinux’un 3 tane yapılandırma modu vardır.
Disabled: Turned-off
Permissive: Prints warnings
Enforcing: Policy is enforced
Herhangi bir metin editörü kullanarak yapılandırma dosyamızı açalım.
#nano /etc/selinux/config
“Policy is enforced” olduğundan emin olalım.
SELINUX=enforcing
Resim 11:
12. Ağ Parametreleri
Linux host ağ etkinliklerinin güvenliğini sağlamak temel bir görevdir. Güvenlik duvarınızın herşeyle ilgileneceğini düşünmemek gerekiyor. Bu yanlış bir varsayım! Burada host ağınızın güvenliği için bazı önemli özellikleri sağlamalıyız.
IP Yönlendirmeyi Kapatın. “/etc/sysctl.conf” dosyasında net.ipv4.ip_forward parametresini 0’a ayarlayarak kapatabiliriz.
Paket Yönlendirmelerini Göndermeyi Kapatın. “/etc/sysctl.conf” dosyasında net.ipv4.conf.all.send_redirects ve net.ipv4.conf.default.send_redirects parametrelerini 0’a ayarlayarak kapatabiliriz.
ICMP Yönlendirme Kabulünü Kapatın. “/etc/sysctl.conf” dosyasında net.ipv4.conf.all.accept_redirects ve net.ipv4.conf.default.accept_redirects parametrelerini 0’a ayarlayarak kapatabiliriz.
Hata İletisi Korumasını Aktifleştirin. “/etc/sysctl.conf” dosyasında net.ipv4.icmp_ignore_bogus_error_responses parametresini 1’e ayarlayarak aktifleştirebiliriz.
İptable kurallarının uygulanmasıyla ve gelen,giden ve yönlendirilen tüm paketlerin filtrelenmesiyle Linux Güvenlik Duvarının kullanılmasını şiddetle tavsiye ediyoruz. İptable kurallarını yapılandırmak biraz vaktinizi alabilir, ama bu verdiğiniz vakit herşeye değer. :)
13. Şifre Politikaları
İnsanlar genellikle şifreleri yeniden kullanırlar. Bu ise çok kötü bir alışkanlıktır. Eski şifrelerimiz “/etc/security/opasswd” dosyasında tutulur. Linux host’un güvenlik politikalarını yönetmek için PAM modülünü kullanacağız. Debian dağıtımı altında kullandığınız metin editörünü kullanarak “/etc/pam.d/common-password” dosyasını açın ve aşağıdaki iki satırı ekleyin.
(Kullanıcıların son 4 şifresini tekrar kullanmasına izin vermeyecektir!)
Başka bir şifre politikası güçlü şifreler oluşturmaktır. PAM modülü dizin ve brute-force saldırılarından sunucularınızı korumak için pam_cracklib önerir. Bunu yapmak için metin editörü kullanarak “/etc/pam.d/system-auth” dosyasına aşağıdaki satırı ekleyin.
Linux, şifrelerin açık metin olarak kaydedilmesini önlemek için SHA512 güvenli şifre hashing algoritması tanımladığınızdan emin olun!
Başka bir ilginç fonksiyon olarak 5 tane hatalı girişten sonra hesabın kilitlenmesidir. Bunu yapmak için “/etc/pam.d/password-auth” dosyasını açın ve aşağıdaki satırları ekleyin.
Sistem yöneticisi hesabın kilidini açmak için aşağıdaki komutu kullanabilir.
# /usr/sbin/faillock --user <userlocked> --reset
Başka bir ipucu verecek olursak, şifrelerin 90 güne kadar tanımlanmasıdır.
“/etc/login.defs” dosyasında PASS_MAX_DAYS parametresini 90 olarak ayarlayalım.
Aktif kullanıcıyı aşağıdaki kullanıcı ile değiştiriniz.
#chage --maxdays 90 <user>
Şifre politikalarını geliştirmek için bir sonraki ipucu “/etc/pam.d/su” dosyasında pam_wheel.so parametrelerini ayarlayarak su komutuna erişimi kısıtlamaktır.
auth required pam_wheel.so use_uid
Şifre politikaları için son ipucumuz aşağıdaki bash script’i kullanarak root olmayan kullanıcılar için sistem hesaplarını kapatmaktır.
#!/bin/bash
for user in `awk -F: '($3 < 500) {print $1 }' /etc/passwd`; do
if [ $user != "root" ]
then
/usr/sbin/usermod -L $user
if [ $user != "sync" ] && [ $user != "shutdown" ] && [ $user != "halt" ]
then /usr/sbin/usermod -s /sbin/nologin $user
fi
fi
done
14. İzinler ve Doğrulamalar
Bir Linux sunucusunda güvenlik açısından daha iyi bir durumda olmak için izinler en önemli ve kritik görevlerden biridir.
“/etc/anacrontab”, “/etc/crontab” ve “/etc/cron.*” dosyaları için aşağıdaki komutları çalıştırarak izinleri ve kullanıcı/grup sahiplerini ayarlayalım.