SSH Saldırıları Nasıl Engellenir? Sunucuma Gelen 2.500 Saldırıyı Durdurdum

Bir sabah sunucu loglarını açtım ve gözlerime inanamadım: Gece boyunca 2.347 farklı IP’den SSH giriş denemesi yapılmış. Hepsi başarısız olmuş tabii ama bu trafiğin kendisi sunucuyu yoruyordu. O gün itibarıyla SSH güvenliğini ciddiye almaya karar verdim. Uyguladığım 7 yöntemi ve sonuçlarını anlatıyorum.
Konu İçeriği
SSH Saldırıları Ne Kadar Yaygın?
Eğer sunucunuz internete açık bir SSH portuna (22) sahipse, şu an bile saldırı alıyor olabilirsiniz. Benim sunucum günlük ortalama 2.000-3.000 deneme alıyor. Bu sayı büyük bir botnet aktifken 10.000’i bile bulabiliyor. Akamai’nin 2026 tehdit raporuna göre, internete açık SSH portlarına yönelik brute-force saldırıları yılda %35 artıyor ve ortalama bir sunucu günlük 1.800 deneme alıyor (Akamai, “State of the Internet Security”, 2026).

Yöntem 1: SSH Portunu Değiştirin — En Basit Ama Kısmi Çözüm
Varsayılan 22 portu yerine rastgele bir port seçmek, otomatik tarayıcıların %90’ını durdurur. Çoğu saldırgan sadece 22 portunu tarar.
# /etc/ssh/sshd_config dosyasını düzenleyin Port 2222 # Veya başka bir port
Değişiklik sonrası SSH’ı yeniden başlatın: sudo systemctl restart sshd
Bunu uyguladığımda günlük saldırılar 2.500’den 200’e düştü. Ama bu tam bir çözüm değil — kararlı bir saldırgan tüm portları tarayabilir. Yine de uğraşmaya değer.
Yöntem 2: Anahtar Tabanlı Kimlik Doğrulama — Kesin Çözüm
Şifre ile girişi tamamen kapatıp sadece SSH anahtarı ile giriş yapılmasını sağlarsanız, brute-force saldırıları tamamen anlamsız hale gelir. SSH anahtarları 2048 veya 4096 bitlik şifreleme kullanır — kırılması pratikte imkansız.
# /etc/ssh/sshd_config PasswordAuthentication no PubkeyAuthentication yes
Bu ayarı yapmadan önce mutlaka SSH anahtarınızı oluşturup sunucuya yükleyin. Yoksa kendinizi sunucudan kilitlersiniz — ben bir kez başıma geldi ve recovery modundan girmek zorunda kaldım.
SSH Anahtarı Oluşturma:
ssh-keygen -t ed25519 -C "sunucum" ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@sunucu
Ed25519, RSA’dan daha güvenli ve daha kısa anahtar üretiyor. 2026’da önerilen standart.
Yöntem 3: CrowdSec veya Fail2Ban — Otomatik Engelleme
Bu benim en çok güvendiğim yöntem. Fail2Ban veya CrowdSec kurarak, belirli sayıda başarısız deneme yapan IP’leri otomatik engelleyebilirsiniz.
Fail2Ban yapılandırması:
# /etc/fail2ban/jail.local [sshd] enabled = true port = 2222 maxretry = 3 bantime = 3600 findtime = 600
Bu ayar, 10 dakika içinde 3 başarısız deneme yapan IP’yi 1 saat engeller. Ben CrowdSec kullanıyorum ve sonuçlar daha iyi — topluluk istihbaratı sayesinde bilinen kötü IP’ler daha hızlı engelleniyor.
Yöntem 4: Root Girişini Kapatın
Root kullanıcı ile doğrudan SSH girişini engelleyin. Saldırganların en çok denediği kullanıcı adı “root”tur.
# /etc/ssh/sshd_config PermitRootLogin no
Bunun yerine normal bir kullanıcı ile giriş yapıp sudo ile root yetkisi alın. Bu basit ama etkili bir güvenlik katmanı.

Yöntem 5: İki Faktörlü Kimlik Doğrulama (2FA)
SSH girişine Google Authenticator tabanlı 2FA ekleyebilirsiniz. Böylece şifreniz veya anahtarınız ele geçirilse bile, telefondaki kod olmadan giriş yapılamaz.
sudo apt install libpam-google-authenticator google-authenticator
Kurulumda QR kod veriyor, telefonunuza taratın. Sonra SSH config’e ekleyin:
# /etc/pam.d/sshd auth required pam_google_authenticator.so
Ben bu yöntemi çok kritik sunucularda kullanıyorum. Günlük eriştiğim blog sunucumda gerek görmedim ama production sunucularda şart.
Yöntem 6: AllowUsers ile Erişimi Sınırlayın
Sadece belirli kullanıcıların SSH ile giriş yapabilmesini sağlayın:
# /etc/ssh/sshd_config AllowUsers turkay admin
Böylece sisteminizde “test”, “guest”, “ftp” gibi kullanıcılar varsa, bunlar üzerinden SSH girişi yapılamaz.
Yöntem 7: VPN veya Tünelleme — En Güvenli Yöntem
SSH portunu tamamen dışarıya kapatın ve sadece VPN ağından erişime izin verin. WireGuard veya OpenVPN kurarak SSH erişimini sadece VPN client’larına açabilirsiniz.
# Firewall kuralı ile sadece VPN ağından SSH sudo ufw allow from 10.0.0.0/24 to any port 2222 proto tcp
Bu en güvenli yöntem ama yönetim açısından en zahmetlisi. Ben VPN kullanıyorum ve SSH sadece VPN ağından erişilebilir. Dışarıdan gelen tek bir istek bile sunucuma ulaşmıyor artık.
7 Yöntemin Karşılaştırması
| Yöntem | Zorluk | Etkililik | Benim Durumum |
|---|---|---|---|
| Port değiştirme | Kolay | Orta | Uygulandı |
| SSH anahtarı | Orta | Çok yüksek | Uygulandı |
| CrowdSec/Fail2Ban | Orta | Yüksek | Uygulandı |
| Root kapatma | Kolay | Yüksek | Uygulandı |
| 2FA | Orta | Çok yüksek | Kritik sunucularda |
| AllowUsers | Kolay | Yüksek | Uygulandı |
| VPN tünelleme | Zor | Maksimum | Uygulandı |
Tüm bu yöntemleri uyguladıktan sonra, günlük SSH saldırı denemelerim sıfıra yakın düştü. VPN ile SSH’a erişimi kısıtladığım için, dışarıdan gelen istekler sunucuma ulaşamıyor bile.
Sıkça Sorulan Sorular
SSH anahtarı kaybedilirse ne olur?
Sunucuya fiziksel erişiminiz varsa veya hosting panelinden console erişimi varsa, yeni anahtar ekleyebilirsiniz. Yoksa erişimi kaybedebilirsiniz. Ben her zaman yedek anahtar oluşturuyorum ve güvenli bir yerde saklıyorum.
Fail2Ban yeterli mi yoksa CrowdSec mi?
İkisi de iyi ama CrowdSec topluluk istihbaratı ile daha etkili. Yeni başlıyorsanız CrowdSec’i öneririm. Zaten Fail2Ban kullanıyorsanız, geçiş yapmak zor değil.
SSH saldırıları sunucuyu yavaşlatır mı?
Evet, yoğun brute-force saldırıları CPU ve bant genişliği tüketir. Binlerce deneme log yazma, şifre doğrulama işlemi yapar. Bu yüzden önlemek sadece güvenlik değil, performans için de önemli.
Windows sunucuda SSH saldırıları nasıl engellenir?
Windows Server’da da benzer yöntemler geçerli. OpenSSH sunucusu Windows’a yüklenebilir ve aynı yapılandırma ayarları kullanılabilir. Ayrıca Windows Firewall ile IP bazlı engelleme yapılabilir.
Kendi IP’m yanlışlıkla engellenirse ne yaparım?
Hosting panelinden console erişimi ile engeli kaldırabilirsiniz. Ben her zaman kendi IP’mi CrowdSec whitelist’ine ekliyorum. Ayrıca fail2ban-client unban komutu ile Manuel çıkarma yapılabilir.
Sonuç
SSH saldırıları kaçınılmaz ama hasar önlenebilir. Benim uyguladığım 7 katmanlı güvenlik yaklaşımı ile sunucum neredeyse tüm brute-force denemelerinden korunuyor. En önemli adım SSH anahtarı kullanmak ve root girişini kapatmak — bunları mutlaka yapın.
Eğer şu an SSH güvenliğini hiç düşünmediyseniz, en azından port değiştirme ve root kapatma ile başlayın. 5 dakikanızı alır ve ciddi bir güvenlik katmanı ekler. Sonra yavaş yavaş diğer yöntemleri de uygulayın.


