Linux Sunucu Sıkılaştırması

Linux sunucunuzun güvenliğini sağlamak, verilerinizi, fikri mülkiyetinizi, itibarınızı, zamanınızı ve bir çok sebepten dolayı bilgisayar korsanlarından korumak için önemlidir. Linux sunucusunun güvenliğinden sistem yöneticisi yani bizler sorumluyuz. Linux sıkılaştırma için bir çok yöntem ve uygulama mevcuttur. Biz bu kılavuzda, sunucu içinde alabileceğimiz önlemlere bakacağız. Bunun dışında sunucu dış dünyaya açıksa veya sanallaştırma vb. uygulamalar içinde kullanılıyor ise onlara özelde güvenlik sıkılaştırılmaları yapmanız gerekmektedir. Lafı fazla uzatmadan neler yapabileceğimize bakalım.
Sistem sıkılaştırılması nasıl gerçekleştirilir?
- Kurulum esnasında güvenlik
- Yapılandırma dosyaları yedekleri
- Yama yönetimi
- Kayıt/İz takibi mekanizması
- Dosya/Dizin izinleri
- Gereksiz servislerin kapatılması
- Güvenli servislerin kullanımı
- Sistem yönetim hesapları
- Erişim kontrolü
- Çekirdek parametreleri
Makaleye başlamadan önce ilk olarak güvenlik gereksinimleri ve güvenlik politikası belirlemek doğru olacaktır.
- Hassas ya da gizli bilgiyi nasıl sınıflandırırsınız?
- Sisteminiz hassas ya da gizli bilgi içeriyor mu?
- Tam olarak kime karşı korunmak istiyorsunuz?
- Sisteme uzaktan bağlanma ihtiyacı var mı?
- Şifrelerle ya da kriptolamayla yeterli güvenlik sağlanıyor mu?
- İnternet erişimine ihtiyaç var mı?
- İnternetten sisteminize erişim ne kadar sınırlandırılmalı?
- Sisteminizin güvenliğindeki bir açıklığa karşı neler yapılabilir?
Fiziksel Sunucu Güvenliği
- Klavye ve harddisk gibi harici cihazların takıldığı yerlerin kilitlenebildiği kasalar kullanılmalıdır.
- BIOS ve grup önyükleyici parolasını ayarlayın.
- BIOS üzerinden, DVD'ler / USB gibi harici cihazlardan önyüklemeyi devre dışı bırakın.
PAM
- libpam-pwqyality kullanılması
pam_cracklib.so ile parola oluşturma gereksinimlerinin belirlenmesi
/etc/pam.d/system-auth
passwordrequisitepam_cracklib.so try_first_passretry=3 minlen=8 lcredit=1 ucredit=1 dcredit=1 ocredit=1
Hatalı giriş denemeleri için kilitleme
/etc/pam.d/password-authve /etc/pam.d/system-authdosyalarında;
authrequiredpam_faillock.so preauthauditsilentdeny=5 unlock_time=900
auth[default=die] pam_faillock.so authfailauditdeny=5 unlock_time=900
authsufficientpam_faillock.so authsuccauditdeny=5 unlock_time=900
auth[success=1 default=bad] pam_unix.so
DDOS
- fork bomb (system crash)
Sahiplik ve İzinler
suid, guid ve Sticky Biti izinleri
Alias
All Users = /etc/bash.bashrc
- sh vb. kabuk geçişlerinin engellenmesi
- history -c engellenmesi
- sudo rm -rf / engellenmesi
- dd if=/dev/zero of=/dev/null vb..
Shell
- Yeni kullanıcı eğer shell belirtilmez ise varsayılan olarak sh üzerinde oturum açmış olacaktır. Varsayılan olarak bash seçilmesi.
- Bash history merkezi olarak toplanılması
- Shell değişiminin engellenmesi ve sadece bir shell kullanıması “bash”
Sudoers Dosyası
- linux shell escape korunması
- Komut Satırından Kritik Komutların Engellenmesi / systemctl halt- reboot-shutdown-restart
Sistem Genel
- İşletim sistemi ve uygulamaların güncel olması
- Kullanıcının çalıştırabileceğiniz mevcut maksimum işlemlerinin sınırlandırılması. “ulimit”
- umask değerinin 077 ayarlanması | /etc/login.defs aksi halde home dizinindeki kullanıcılar birbirine erişebilir
- suid guid stick bit tanımlamaları
- Terminalin Engellenmesi
- Kullanılmayan Paketlerin Kaldırılması. (make, gcc, python vb.)
OpenSSH Güvenliği
- SSH Timeout süresi ayarlanması.
- SSH varsayılan port değiştirilmesi.
- RootLogin kapatılması.
- Allowusers tanımlanması
- Whitelist ip belirlenmesi
- PAM açılması
Paket Veritabanı
Sistemde kurulu paketler ve bu paketlerin sürümleri ile ilgili bilgiler kesinlikle son kullanıcıya gösterilmemelidir. Sürüm bilgisi alınan bir yazılım için açıklık taramak son derece kolaydır.
Sıkılaştırmak için
#chownrpm:rpm/var/lib/rpm
#chmod750 /var/lib/rpm
#chownrpm:rpm/var/lib/rpm/*
#chmod700 /var/lib/rpm/*
Dosya Sistemi Sıkılaştırma
nodev, noexec, nosuid seçeneklerini düzenleyin
mount-o remount,nodev,nosuid,noexec/tmp/dev/shm{/ayrılabilir ortamlar}
#mount-o remount,nodev/home
/var/tmp dizinini /tmp’ye bağlayın.
mount--bind/tmp/var/tmp
Kullanılmayan dosya sistemlerini etkisizleştirin.
freevxfs, jffs2, hfs, hfsplus, squashfs, udf
/etc/modprobe.d/harden.conf
install freevxfs /bin/true…
Bu dosyalar sisteme istenmeyen şahıslar tarafından kurulan programlar olabilir.
#find / -nouser -o -nogroup -print
Sunucu Paketi
Bir sunumcu tek amaca yönelik servis vermelidir. Aşağıdaki örnekler gibi;
- Bilgi hizmetleri: WWW, FTP
- Dosya ve yazıcı paylaşım hizmetleri: NFS, Samba
- DNS hizmetleri
- E-mail hizmetleri
E Posta Sunucu Güvenliği
Web Sunucu Güvenliği
DNS Güvenliği
Uygulama İle Denetim
https://github.com/CISOfy/lynis
App Hide
Kullanılan uygulama versiyonlarının gizlenmesi. Wappalyzer gibi.