yandex metrika
SSH Saldırıları Nasıl Engellenir? Sunucuma Gelen 2.500 Saldırıyı Durdurdum - Tecrübe Güncesi
Genel

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.

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).

SSH brute-force saldırı logları - sunucu terminalinde başarısız giriş denemeleri

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ı.

SSH güvenlik yapılandırması - server config dosyası ve güvenlik ayarları

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.

Türkay

Teknoloji, bilgisayar güvenliği, WordPress ve yapay zeka konularında içerik üreten Tecrübe Güncesi'nin editörü. Linux sistem yönetimi, ağ güvenliği ve web geliştirme alanlarında yılların getirdiği tecrübeye sahip. 2015'ten bu yana Türkçe teknoloji içerikleri üreterek okuyuculara yol göstermeyi hedefliyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


Başa dön tuşu