Linux, sunucu yönetimi için en yaygın kullanılan işletim sistemlerinden biridir. Açık kaynaklı olması, esnekliği ve güçlü güvenlik özellikleriyle öne çıkar. Ancak, Linux sunucularının güvenliği de doğru yapılandırılmaya ve yönetilmeye bağlıdır. Bu makalede, Linux sunucularını güvende tutmak için uygulamanız gereken temel güvenlik ipuçlarına değineceğiz.
1. Güncellemeleri Düzenli Olarak Yapın
Linux sunucularındaki güvenlik açıklarını kapatmanın en etkili yollarından biri, sistem yazılımlarını düzenli olarak güncellemektir. Çoğu Linux dağıtımı, güvenlik güncellemelerini otomatik olarak indirip yüklemeyi sağlar, ancak bazen manuel kontrol gerekebilir.
a. Paket Güncellemeleri:
Yazılım güncellemeleri, yeni güvenlik yamaları ve hata düzeltmeleri içerir. Güncel olmayan yazılımlar, kötü niyetli kişilerin sisteme sızmak için kullanabileceği açıklar yaratabilir.
- Debian/Ubuntu Tabanlı Sistemler İçin:bashCopy code
sudo apt update && sudo apt upgrade -y
- Red Hat/CentOS/Fedora İçin:bashCopy code
sudo yum update -y
b. Otomatik Güncellemeler:
Otomatik güncellemeleri etkinleştirerek, güvenlik güncellemelerinin her zaman zamanında yapılmasını sağlayabilirsiniz.
- Debian/Ubuntu:
unattended-upgrades
paketini kurarak otomatik güncellemeleri etkinleştirebilirsiniz.bashCopy codesudo apt install unattended-upgrades sudo dpkg-reconfigure unattended-upgrades
2. Güçlü Parola Politikaları Uygulayın
Zayıf parolalar, Linux sunucularında sıkça karşılaşılan güvenlik açıklarından biridir. Bu nedenle, güçlü parola politikaları uygulamak önemlidir. Her kullanıcı için güçlü ve benzersiz parolalar belirlemek, sisteminize izinsiz girişleri engellemenin ilk adımıdır.
a. Parola Karmaşası:
Parolalarınız, küçük ve büyük harfler, sayılar ve özel karakterler içermelidir. Ayrıca, parolaların belirli bir uzunlukta olması önerilir (örneğin, en az 12 karakter).
b. Parola Deneme Sınırlaması:
Brute force (kaba kuvvet) saldırılarına karşı korunmak için parola denemelerini sınırlamak önemlidir. Linux’ta bu, fail2ban
gibi araçlarla yapılabilir.
- fail2ban Kurulumu:bashCopy code
sudo apt install fail2ban
Fail2ban, başarısız giriş denemeleri sonrası IP adreslerini engelleyen bir güvenlik aracıdır. Yapılandırma dosyasında, engelleme sürelerini ve deneme limitlerini belirleyebilirsiniz.
c. Parola Değişiklikleri:
Parolaların düzenli aralıklarla değiştirilmesi gerekmektedir. Ayrıca, bir kullanıcının parolasını sıklıkla değiştirmesi, güvenliği artıran bir yöntem olabilir.
3. SSH Erişimini Güvenli Hale Getirin
SSH (Secure Shell), uzak bağlantılar için yaygın olarak kullanılan bir protokoldür. Ancak, bu protokol, doğru yapılandırılmadığında ciddi güvenlik riskleri taşıyabilir.
a. Root Girişi Devre Dışı Bırakma:
Root kullanıcısının doğrudan SSH ile giriş yapabilmesi, güvenlik risklerini artırır. Bu yüzden, root erişimini devre dışı bırakmalısınız.
/etc/ssh/sshd_config
Dosyasını Düzenleyin:bashCopy codePermitRootLogin no
Daha sonra SSH servisini yeniden başlatın:bashCopy codesudo systemctl restart sshd
b. SSH Anahtar Tabanlı Kimlik Doğrulaması:
Şifreler yerine, SSH anahtar tabanlı kimlik doğrulamasını tercih edin. Bu yöntem daha güvenlidir çünkü anahtarlar daha zordur tahmin edilmesi.
- Anahtar Çifti Oluşturma:bashCopy code
ssh-keygen -t rsa -b 4096
Anahtarlarınızı oluşturduktan sonra, public anahtarınızı hedef sunucudaki ~/.ssh/authorized_keys
dosyasına ekleyin.
c. SSH Portunu Değiştirme:
SSH’nin varsayılan 22 numaralı portu, otomatik olarak hedef alınan ilk portlardan biridir. SSH portunu değiştirmek, saldırganların sisteminize erişmesini zorlaştırır.
/etc/ssh/sshd_config
Dosyasını Düzenleyin:bashCopy codePort 2222
Daha sonra SSH servisini yeniden başlatın:bashCopy codesudo systemctl restart sshd
4. Güvenlik Duvarı (Firewall) Kullanımı
Güvenlik duvarı (firewall), ağ trafiğini kontrol etmek ve yalnızca belirli portlara izin vermek için kullanılır. Linux’ta, genellikle iptables
veya firewalld
gibi araçlar kullanılır.
a. Temel Güvenlik Duvarı Kurulumu:
Firewall, sadece gerekli olan portlara erişime izin verir, diğer tüm trafiği engeller.
ufw
(Uncomplicated Firewall) ile Basit Yapılandırma:- UFW’yi kurun ve etkinleştirin:bashCopy code
sudo apt install ufw sudo ufw enable
- Yalnızca HTTP, HTTPS ve SSH portlarına izin verin:bashCopy code
sudo ufw allow 22/tcp # SSH sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS sudo ufw default deny incoming sudo ufw default allow outgoing
- UFW’yi kurun ve etkinleştirin:bashCopy code
b. IP Erişim Kontrolleri:
Bazı durumlarda, belirli IP adreslerine erişim izni verilebilir. Bu, yalnızca belirli kullanıcıların sunucuya bağlanmasına olanak tanır.
- Örneğin, yalnızca belirli bir IP adresine SSH erişimi izni vermek:bashCopy code
sudo ufw allow from 192.168.1.100 to any port 22
5. Sistem Loglarını İzleme ve Güvenlik İhlallerini Tespit Etme
Sunucu logları, sistemdeki olayları ve kullanıcı aktivitelerini kaydeder. Bu logları düzenli olarak izlemek, şüpheli aktiviteleri erken tespit etmenize yardımcı olabilir.
a. Log İzleme:
journalctl
ile sistem loglarını görüntüleyebilirsiniz:bashCopy codesudo journalctl -xe
b. Syslog ve Authlog:
- Login denemelerini izlemek için:bashCopy code
sudo tail -f /var/log/auth.log
- Genel sistem logları için:bashCopy code
sudo tail -f /var/log/syslog
c. AuditD Kullanımı:
AuditD, Linux sistemlerinde güvenlik olaylarını kaydeden bir denetim sistemidir. Bu, kullanıcı aktivitelerini ve sistemde yapılan değişiklikleri takip etmek için kullanılır.
- AuditD kurulumu:bashCopy code
sudo apt install auditd sudo systemctl start auditd
6. SELinux ve AppArmor ile Uygulama Güvenliği
SELinux (Security-Enhanced Linux) ve AppArmor, Linux’ta uygulamaların güvenliğini artıran iki önemli güvenlik modülüdür. Bu modüller, her uygulamanın yalnızca gerekli kaynaklara erişmesine izin verir ve olası güvenlik açıklarının önüne geçer.
- SELinux’un aktif olup olmadığını kontrol edin:bashCopy code
sestatus
- AppArmor’ı etkinleştirmek için:bashCopy code
sudo systemctl enable apparmor sudo systemctl start apparmor
7. Dosya İzinlerini Doğru Yapılandırma
Linux’taki dosya izinleri, hangi kullanıcıların hangi dosyalara erişebileceğini belirler. Bu, sunucunuzun güvenliği için çok önemlidir. Özellikle, root dosyalarına ve sistem dosyalarına yalnızca belirli kullanıcıların erişebilmesini sağlamalısınız.
a. Gereksiz Dosya ve Dizine Erişimi Sınırlandırma:
chmod
komutuyla dosya izinlerini ayarlayarak, yalnızca gerekli kullanıcıların dosyalara erişmesini sağlayın:bashCopy codesudo chmod 700 /path/to/directory
b. Sudo Erişimini Sınırlama:
Sudo erişimini yalnızca güvenilir kullanıcılarla sınırlandırmak önemlidir. /etc/sudoers
dosyasını düzenleyerek, hangi kullanıcıların sudo komutlarını çalıştırabileceğini belirleyebilirsiniz.
bashCopy codesudo visudo
8. Sonuç
Linux sunucularında güvenlik, sadece belirli bir yapılandırma ile sınırlı değildir. Bu, sürekli bir izleme, güncelleme, yapılandırma ve güvenlik önlemleri uygulama sürecidir. Yukarıda bahsedilen temel ipuçları, Linux sunucularınızı kötü niyetli saldırılara karşı korumak için atılacak ilk adımlardır. Güçlü parola politikaları, SSH güvenliği, güvenlik duvarı kullanımı, düzenli log takibi ve SELinux/AppArmor gibi araçlar, sunucunuzun güvenliğini sağlamlaştırmada size yardımcı olacaktır. Unutmayın, güvenlik bir süreçtir ve sisteminizi her zaman güncel tutmak ve denetlemek gereklidir.