Linux Sunucularda Temel Güvenlik Sıkılaştırma (Hardening) Neden Önemli?
Günümüzün dijital dünyasında, sunucularınızın güvenliği iş sürekliliğinizin ve veri bütünlüğünüzün temelini oluşturur. Özellikle Linux tabanlı sunucular, esneklikleri ve güçlü yapıları sayesinde kurumsal altyapıların vazgeçilmez bir parçasıdır. Ancak bu güç, doğru yapılandırılmadığında potansiyel güvenlik açıkları da barındırabilir. İşte bu noktada temel güvenlik sıkılaştırma (hardening) devreye girer. Sunucularınızı olası siber saldırılara, yetkisiz erişimlere ve veri ihlallerine karşı korumak için proaktif adımlar atmak hayati öneme sahiptir.
Başlamadan Önce: Hazırlık ve En İyi Uygulamalar
Güvenlik sıkılaştırma işlemlerine başlamadan önce aşağıdaki adımları göz önünde bulundurmanız şiddetle tavsiye edilir:
- Yedekleme Yapın: Herhangi bir değişiklik yapmadan önce sunucunuzun tam bir yedeğini alın. Bu, beklenmedik sorunlarda hızlıca geri dönebilmenizi sağlar.
- Test Ortamı Kullanın: Kritik üretim sunucularına uygulamadan önce, güvenlik adımlarını bir test ortamında denemek olası kesintileri önleyecektir.
- Dokümantasyon: Yaptığınız her değişikliği, tarih ve nedenleriyle birlikte belgeleyin.
Adım 1: Güncel Tutun ve Yama Yönetimi Yapın
Yazılım güncellemeleri, bilinen güvenlik açıklarını kapatan yamalar içerir. Sunucunuzu güncel tutmak, en temel güvenlik adımıdır.
Ubuntu/Debian Tabanlı Sistemler İçin:
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -yCentOS/RHEL Tabanlı Sistemler İçin:
sudo yum update -y
sudo yum upgrade -y
sudo yum autoremove -yOtomatik güncellemeleri yapılandırmak, bu süreci daha yönetilebilir hale getirebilir, ancak kritik güncellemeleri manuel olarak kontrol etmek her zaman iyi bir pratiktir.
Adım 2: SSH Güvenliğini Sıkılaştırın
SSH (Secure Shell), Linux sunuculara uzaktan erişim için kullanılan en yaygın protokoldür. SSH güvenliğini sağlamak, yetkisiz erişimi engellemenin anahtarıdır.
1. Varsayılan SSH Portunu Değiştirin
Yaygın taramalardan kaçınmak için varsayılan 22 numaralı portu farklı bir porta taşıyın (örneğin 2222).
sudo nano /etc/ssh/sshd_configAşağıdaki satırı bulun ve değiştirin:
#Port 22
Port 22222. Parola Yerine Anahtar Tabanlı Kimlik Doğrulama Kullanın
Parola tabanlı kimlik doğrulama yerine SSH anahtar çiftleri kullanmak çok daha güvenlidir.
sudo nano /etc/ssh/sshd_configAşağıdaki satırları kontrol edin ve ayarlayın:
PasswordAuthentication no
PubkeyAuthentication yes3. Root Kullanıcısı ile Doğrudan Erişimi Kapatın
Root kullanıcısının doğrudan SSH üzerinden erişmesini engellemek, sisteminize yönelik saldırı yüzeyini azaltır.
sudo nano /etc/ssh/sshd_configAşağıdaki satırı bulun ve değiştirin:
PermitRootLogin noDeğişikliklerden sonra SSH servisini yeniden başlatın:
sudo systemctl restart sshdÖnemli: SSH ayarlarını değiştirdikten sonra, yeni port ve anahtar ile yeni bir oturum açıp erişimi doğrulayın. Mevcut oturumu kapatmadan önce yeni ayarların çalıştığından emin olun!
Adım 3: Güçlü Parola Politikaları Uygulayın
Kullanıcıların güçlü ve karmaşık parolalar kullanmasını zorunlu kılmak, kaba kuvvet saldırılarına karşı koruma sağlar.
- Minimum parola uzunluğunu ve karmaşıklığını ayarlayın (büyük/küçük harf, sayı, özel karakter).
- Parola yaşlandırma (password aging) politikaları uygulayın.
pam_pwqualitymodülü ile parola kalitesini artırın (Ubuntu/CentOS).
sudo apt install libpam-pwquality # Ubuntu
sudo yum install pam_pwquality # CentOSDaha sonra /etc/pam.d/common-password (Ubuntu) veya /etc/pam.d/system-auth (CentOS) dosyasını düzenleyerek parola politikalarını sıkılaştırabilirsiniz.
Adım 4: Kullanıcı ve Grup Yönetimi
Sisteminizde sadece gerekli kullanıcıların ve grupların bulunmasını sağlayın.
- Gereksiz kullanıcı hesaplarını silin veya devre dışı bırakın.
- Her kullanıcıya en az yetki prensibiyle (Principle of Least Privilege) yetki verin.
sudogrubunu kullanarak belirli kullanıcılara yönetici yetkileri atayın, root kullanıcısını doğrudan kullanmaktan kaçının.
sudo adduser yeni_kullanici
sudo usermod -aG sudo yeni_kullaniciAdım 5: Firewall (Güvenlik Duvarı) Yapılandırması
Bir güvenlik duvarı, sunucunuza gelen ve giden ağ trafiğini kontrol ederek istenmeyen erişimi engeller.
Ubuntu İçin UFW (Uncomplicated Firewall):
sudo ufw enable
sudo ufw allow ssh # veya 2222 gibi özel portunuz
sudo ufw allow http
sudo ufw allow https
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw status verboseCentOS İçin firewalld:
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=ssh # veya --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-allAdım 6: Gereksiz Servisleri Kapatın
Sunucunuzda çalışmayan ve ihtiyacınız olmayan servisleri kapatmak, saldırı yüzeyini önemli ölçüde azaltır.
sudo systemctl list-units --type=service --state=running
sudo systemctl disable <servis_adı>
sudo systemctl stop <servis_adı>Herhangi bir servisi kapatmadan önce, bu servisin sisteminiz için gerekli olup olmadığını veya başka bir servise bağımlılığı olup olmadığını mutlaka kontrol edin.
Adım 7: Log Yönetimi ve İzleme
Sistem loglarını düzenli olarak izlemek ve analiz etmek, potansiyel güvenlik olaylarını erken aşamada tespit etmenizi sağlar.
/var/logdizinindeki log dosyalarını (auth.log, syslog, messages vb.) düzenli olarak kontrol edin.rsyslogveyajournalctlgibi araçları kullanarak logları merkezi bir sunucuya (SIEM) göndermeyi düşünebilirsiniz.- Fail2Ban gibi araçlar, başarısız oturum açma girişimlerini izleyerek saldırgan IP'leri otomatik olarak engelleyebilir.
sudo apt install fail2ban # Ubuntu
sudo yum install fail2ban # CentOS
sudo systemctl enable fail2ban
sudo systemctl start fail2banAdım 8: Antivirüs ve Rootkit Tarayıcıları
Linux sistemleri Windows kadar yaygın virüs tehditleriyle karşılaşmasa da, kötü amaçlı yazılımlara ve rootkit'lere karşı koruma sağlamak önemlidir.
- ClamAV: Bilinen virüslere karşı tarama yapabilir.
- chkrootkit / rkhunter: Sistemde rootkit varlığını tespit etmeye yardımcı olur.
sudo apt install clamav chkrootkit rkhunter # Ubuntu
sudo yum install clamav chkrootkit rkhunter # CentOSBu araçları düzenli olarak çalıştırarak sisteminizi tarayın.
Adım 9: SELinux (CentOS) veya AppArmor (Ubuntu) Etkinleştirme
Bu güvenlik mekanizmaları, uygulamaların ve kullanıcıların sistem kaynaklarına erişimini kısıtlayarak ek bir koruma katmanı sağlar.
- SELinux (Security-Enhanced Linux): CentOS/RHEL sistemlerinde varsayılan olarak bulunur. Genellikle
Enforcingmodunda çalıştırılması önerilir. - AppArmor: Ubuntu sistemlerinde varsayılan olarak bulunur. Uygulama bazında profiller tanımlanarak güvenlik sağlanır.
Bu araçların doğru yapılandırılması karmaşık olabilir, ancak sağladıkları güvenlik faydaları göz ardı edilemez.
Adım 10: Düzenli Yedekleme Stratejileri
En iyi güvenlik önlemleri bile %100 koruma sağlamaz. Bir felaket durumunda verilerinizi kurtarabilmek için düzenli ve güvenli yedeklemeler kritik öneme sahiptir.
- Verilerinizi düzenli aralıklarla yedekleyin.
- Yedekleri güvenli, tercihen ayrı bir konumda (bulut depolama, ayrı bir sunucu) saklayın.
- Yedeklerin geri yüklenebilirliğini periyodik olarak test edin.
Sonuç: Güvenlik Sürekli Bir Yolculuktur
Linux sunucularda güvenlik sıkılaştırma, tek seferlik bir işlem değildir; sürekli bir süreçtir. Siber tehditler evrim geçirdikçe, güvenlik önlemlerinizin de güncel kalması gerekir. Yukarıda belirtilen adımları uygulayarak sunucularınızın güvenlik duruşunu önemli ölçüde artırabilir ve olası saldırılara karşı daha dirençli hale getirebilirsiniz. Unutmayın, proaktif güvenlik yaklaşımı, reaktif olmaktan her zaman daha etkili ve daha az maliyetlidir.