Sistem yöneticileri için güvenli bir ağ ortamı oluşturmanın temel taşlarından biri, sunuculara erişimi kontrol altına almaktır. Bu bağlamda, Secure Shell (SSH) protokolü, uzaktan sunucu yönetimi için yaygın olarak kullanılsa da, doğru yapılandırılmadığında ciddi güvenlik açıkları barındırabilir. SSH trafiğini izlemek ve yetkisiz erişimleri engellemek, ağ güvenliğinin kritik bir bileşenidir. Bu rehber, sistem yöneticilerinin SSH güvenlik duvarı ayarlarını optimize ederek sunucularını daha güvenli hale getirmelerine yönelik adım adım bir yaklaşım sunmaktadır.
SSH Erişimini Kısıtlama
SSH varsayılan olarak TCP port 22’yi kullanır. Bu portu değiştirerek bot saldırılarının ve otomatik taramaların birincil hedefinden kaçınmak mümkündür. Ancak, port değişikliği tek başına yeterli bir güvenlik önlemi değildir.
1. Varsayılan Portu Değiştirme
SSH yapılandırma dosyasını düzenleyerek port numarasını değiştirebilirsiniz. Genellikle bu dosya /etc/ssh/sshd_config konumundadır.
- Dosyayı bir metin düzenleyici ile açın (örneğin,
sudo nano /etc/ssh/sshd_config). #Port 22satırını bulun. Eğer başında ‘#’ varsa, bu satırı ‘#’ olmadan aşağıdaki gibi değiştirin veya yeni bir satır ekleyin:Port 2222(Burada 2222, kullanacağınız yeni port numarasıdır. Daha önce kullanılmayan bir port seçtiğinizden emin olun.)- Dosyayı kaydedip kapatın.
- SSH servisini yeniden başlatın:
sudo systemctl restart sshd(veya kullandığınız sisteme göresudo service ssh restart). - Yeni porttan erişim sağlamak için SSH komutunuza port numarasını eklemeyi unutmayın:
ssh -p 2222 kullaniciadi@sunucu_ip.
2. Root Girişini Yasaklama
Doğrudan root kullanıcısı ile SSH erişimi sağlamak, güvenlik açısından risklidir. Bu erişimi yasaklayarak, normal bir kullanıcı ile giriş yapılıp ardından yetki yükseltilmesini sağlamak daha güvenli bir yaklaşımdır.
/etc/ssh/sshd_configdosyasını tekrar açın.#PermitRootLogin yessatırını bulun ve aşağıdaki gibi değiştirin:PermitRootLogin no- Dosyayı kaydedip kapatın ve SSH servisini yeniden başlatın.
3. Sınırlı Kullanıcı Erişimi
Yalnızca belirli kullanıcıların veya grupların SSH ile bağlanmasına izin vermek, yetkisiz erişimleri önemli ölçüde azaltır.
/etc/ssh/sshd_configdosyasına aşağıdaki satırları ekleyin:AllowUsers kullanici1 kullanici2(Burada ‘kullanici1’ ve ‘kullanici2’, SSH erişimine izin verilecek kullanıcı adlarıdır.)- Alternatif olarak, belirli bir grubu dahil etmek için:
AllowGroups sshusers(Bu durumda, ‘sshusers’ grubundaki kullanıcılar erişim sağlayabilir.)- Dosyayı kaydedip kapatın ve SSH servisini yeniden başlatın.
SSH Kimlik Doğrulama Yöntemlerini Güvenli Hale Getirme
Parola tabanlı kimlik doğrulama, kaba kuvvet saldırılarına karşı savunmasızdır. SSH anahtar tabanlı kimlik doğrulama, çok daha güvenli bir alternatiftir.
4. SSH Anahtar Tabanlı Kimlik Doğrulama
Bu yöntem, bir sunucuya erişmek için bir özel (private) ve bir genel (public) anahtar çifti kullanır. Özel anahtarınız sizde kalırken, genel anahtar sunucuya yüklenir.
- Yerel Makinede Anahtar Oluşturma:
- Terminalde şu komutu çalıştırın:
ssh-keygen -t rsa -b 4096 - Anahtarın kaydedileceği konumu belirtin (varsayılan genellikle
~/.ssh/id_rsa). - Güçlü bir parola (passphrase) belirleyin. Bu, özel anahtarınız çalınsa bile erişimi engeller.
- Genel Anahtarı Sunucuya Yükleme:
ssh-copy-id -p 2222 kullaniciadi@sunucu_ipkomutunu kullanarak genel anahtarınızı sunucudaki~/.ssh/authorized_keysdosyasına kopyalayın. (Eğer port 22 kullanmıyorsanız, ‘-p’ parametresini eklemeyi unutmayın.)- Bu işlemden sonra, parola sormadan sunucuya bağlanabilmelisiniz (veya belirlediğiniz parolayı).
- Parola Kimlik Doğrulamasını Devre Dışı Bırakma:
- Anahtar tabanlı kimlik doğrulamanın çalıştığından emin olduktan sonra,
/etc/ssh/sshd_configdosyasında aşağıdaki satırı bulun ve değiştirin: PasswordAuthentication no- Dosyayı kaydedip kapatın ve SSH servisini yeniden başlatın.
Ek Güvenlik Önlemleri
5. Oturum Zaman Aşımı Ayarları
Belirli bir süre işlem yapılmayan SSH oturumlarını otomatik olarak kapatmak, açık kalan oturumlar üzerinden yapılabilecek yetkisiz işlemleri önler.
/etc/ssh/sshd_configdosyasına aşağıdaki satırları ekleyin:ClientAliveInterval 300(Her 300 saniyede bir istemciye canlılık mesajı gönder.)ClientAliveCountMax 2(İstemciden yanıt gelmezse 2 kez daha dener, sonra oturumu kapatır.)- Dosyayı kaydedip kapatın ve SSH servisini yeniden başlatın.
6. Güvenlik Duvarı (Firewall) Kuralları
Sunucunun işletim sistemi seviyesindeki güvenlik duvarını (örneğin, iptables, firewalld, ufw) kullanarak yalnızca belirli IP adreslerinden veya ağlardan SSH portuna erişime izin verebilirsiniz. Bu, en etkili kısıtlama yöntemlerinden biridir.
- Örnek (ufw):
sudo ufw allow from 192.168.1.0/24 to any port 2222 proto tcp(Bu komut, yalnızca 192.168.1.x ağından 2222 portuna TCP erişimine izin verir.)- Eğer tüm IP’lerden erişime izin verip yalnızca belirli IP’leri engellemek isterseniz, öncelikle genel izni verip sonra engelleme kuralı eklemelisiniz.
Bu adımlar, SSH sunucunuzun güvenlik duruşunu önemli ölçüde güçlendirecektir. Güvenlik, sürekli bir süreçtir ve bu tür temel yapılandırmaların düzenli olarak gözden geçirilmesi ve güncellenmesi esastır. Sistemlerinizin güvenliğini sağlamak, yalnızca bir teknik gereklilik değil, aynı zamanda operasyonel sürekliliğin de temel bir şartıdır.
Siz de SSH güvenliği konusunda uyguladığınız veya faydalı bulduğunuz ek yöntemler var mı?

