Brute force saldırılarına karşı SSH bağlantısını güvenli hale getirme
Varsayılan SSH portu (22) genellikle otomatik brute force saldırılarının hedefidir. Bu rehber SSH portunu değiştirmeyi ve sunucu güvenliğini artıran ek ayarları açıklar.
📋 Ön koşullar
- root veya sudo erişimli VPS sunucu
- Aktif SSH bağlantısı
- Kurulu ve yapılandırılmış UFW (bkz. UFW kurulumu)
⚠️ ÖNEMLİ: SSH oturumunu açık tutun
Önemli: Başlamadan önce aktif bir SSH oturumu bırakın. Bir şey ters giderse hâlâ bağlanıp sorunu düzeltebilirsiniz.
Paralel olarak iki SSH terminali açın:
- Terminal 1: çalışma oturumu (değişiklikleri yaparsınız)
- Terminal 2: yedek (sorun olursa diye)
🔧 SSH portunu değiştirme
Adım 1: Yeni port seçin
1024–65535 aralığından bir port seçin. Yaygın portlardan kaçının:
- 22 (varsayılan SSH, çok saldırıya uğrar)
- 80, 443 (HTTP/HTTPS)
- 3306, 5432 (veritabanları)
Örnekler: 2222, 2200, 1022, 5000
Adım 2: SSH yapılandırmasını düzenleyin
Bash# sshd yapılandırma dosyasını düzenle sudo nano /etc/ssh/sshd_config
Adım 3: Portu değiştirin
#Port 22 satırını bulun ve değiştirin:
# Önce
#Port 22
# Sonra (2222'yi seçtiğiniz portla değiştirin)
Port 2222
İpucu: nano'da "Port 22" aramak için Ctrl + W kullanın.
Adım 4: Kaydet ve çık
nano'da:
Ctrl + X— çıkışY— onayEnter— kaydet
Adım 5: Sözdizimini kontrol edin
Bash# Yapılandırmanın geçerli olduğunu kontrol et sudo sshd -t
Hata mesajı yoksa yapılandırma doğrudur.
Adım 6: UFW'de yeni porta izin verin
Bash1# Yeni SSH portuna izin ver (2222'yi kendi portunuzla değiştirin) 2sudo ufw allow 2222/tcp 3 4# İsteğe bağlı: kullanmıyorsanız eski 22 portunu kaldırın 5sudo ufw delete allow 22/tcp 6 7# UFW'yi yeniden yükle 8sudo ufw reload 9 10# Kuralı kontrol et 11sudo ufw status | grep 2222
Adım 7: SSH hizmetini yeniden başlatın
Bash1# sshd'yi yeni yapılandırmayla yeniden başlat 2sudo systemctl restart sshd 3 4# Hizmetin çalıştığını kontrol et 5sudo systemctl status sshd
Adım 8: Yeni bağlantıyı test edin
Yeni bir terminalde yeni portla bağlantıyı test edin:
Bash# 2222'yi kendi portunuzla ve user@ip'yi kendi bilgilerinizle değiştirin ssh -p 2222 user@ip-adresiniz
Bağlantı çalışıyorsa 22 numaralı porttaki eski oturumu kapatabilirsiniz.
🔒 Ek güvenlik seçenekleri
Root girişini devre dışı bırakma
Önemli: SSH üzerinden root girişini kapatmak iyi bir uygulamadır. Bu değişiklikten önce sudo'lu bir kullanıcınız olduğundan emin olun.
Bash1sudo nano /etc/ssh/sshd_config 2 3# Bulun ve ayarlayın 4PermitRootLogin no 5 6# Kaydedin ve yeniden başlatın 7sudo sshd -t 8sudo systemctl restart sshd
Giriş denemesi sayısını sınırlama
Bash1sudo nano /etc/ssh/sshd_config 2 3# Bu satırları ekleyin veya değiştirin 4MaxAuthTries 3 # en fazla 3 deneme 5LoginGraceTime 30 # giriş için 30 sn
Parola girişini devre dışı bırakma (yalnızca SSH anahtarları)
Bash1sudo nano /etc/ssh/sshd_config 2 3# Değiştirin 4PasswordAuthentication no 5PubkeyAuthentication yes
Uyarı: Bunu yalnızca SSH anahtarınız yapılandırılmış ve girişi test etmişseniz etkinleştirin!
Yalnızca SSH protokol sürüm 2
Bashsudo nano /etc/ssh/sshd_config # Satır ekleyin (yoksa) Protocol 2
X11 tünellerini devre dışı bırakma (gerekli değilse)
Bashsudo nano /etc/ssh/sshd_config # Ayarlayın X11Forwarding no
Örnek tam yapılandırma
/etc/ssh/sshd_config içinde örnek güvenli blok:
# Özel SSH portu
Port 2222
# Root girişi yok
PermitRootLogin no
# Bağlantı limitleri
MaxAuthTries 3
LoginGraceTime 30
# Parola devre dışı (anahtar kullanırken — bilinçli olarak yorum satırını kaldırın)
# PasswordAuthentication no
# PubkeyAuthentication yes
# Yalnızca SSHv2
Protocol 2
# X11 yönlendirme yok
X11Forwarding no
# TCP yönlendirme yok (dikkat — bazı araçları bozabilir)
AllowTcpForwarding no
# Boşta kalınca bağlantıyı kes
ClientAliveInterval 300
ClientAliveCountMax 2
Her değişiklikten sonra:
Bashsudo sshd -t sudo systemctl restart sshd
🔄 Gerekirse sudo'lu kullanıcı oluşturma
Root girişini kapattıysanız sudo'lu bir kullanıcınız olduğundan emin olun:
Bash1# Yeni kullanıcı 2sudo adduser kullanicim 3 4# sudo grubuna ekle 5sudo usermod -aG sudo kullanicim 6 7# sudo testi 8su - kullanicim 9sudo whoami 10# "root" görünmeli
✅ Son doğrulama
SSH durumu
Bash1sudo systemctl status sshd 2 3# Port dinleme 4sudo netstat -tlnp | grep ssh 5# veya 6sudo ss -tlnp | grep ssh 7 8# Yapılandırmadaki port 9sudo sshd -T | grep port
SSH günlükleri
Bash1# Bağlantı denemeleri 2sudo tail -f /var/log/auth.log 3 4# Başarılı girişler 5sudo grep "Accepted" /var/log/auth.log 6 7# Başarısız denemeler 8sudo grep "Failed" /var/log/auth.log
🛡️ Ek koruma: fail2ban
fail2ban, tekrarlanan başarısız giriş denemelerinde IP adreslerini otomatik engeller.
fail2ban kurulumu
Bashsudo apt update sudo apt install fail2ban -y
Temel yapılandırma
Bashsudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
SSH için örnek:
INI1[sshd] 2enabled = true 3port = 2222 # Yeni SSH portunuz 4maxretry = 3 # Ban öncesi deneme 5bantime = 3600 # Ban süresi saniye (1 sa) 6findtime = 600 # Deneme penceresi (10 dk)
fail2ban'ı başlatma
Bash1sudo systemctl start fail2ban 2sudo systemctl enable fail2ban 3sudo systemctl status fail2ban 4 5# Engellenen IP listesi 6sudo fail2ban-client status sshd
🆘 Sorun giderme
SSH erişimi yok
-
Yedek oturumu kullanın (Terminal 2).
-
Yedek oturum yoksa:
-
erişim bilgilerinizle Infrawire desteğine başvurun
-
müşteri panelinde VNC/KVM konsolunu kullanın
-
yerel bağlanın ve eski yapılandırmayı geri yükleyin:
Bashsudo nano /etc/ssh/sshd_config # Örn. Port 22'yi geri yükleyin sudo systemctl restart sshd
-
SSH portu yanıt vermiyor
Bashsudo netstat -tlnp | grep ssh sudo ufw status | grep 2222 sudo journalctl -u sshd -n 50
Eski port üzerinden geçici bağlantı
Bashsudo ufw allow 22/tcp ssh -p 22 user@ip-adresiniz sudo ufw delete allow 22/tcp
📚 Ek kaynaklar
❓ Sık sorulan sorular
S: SSH için hangi portu seçmeliyim?
C: 1024–65535 aralığından. Yaygın hizmet portlarından (80, 443, 3306 vb.) kaçının. 2222, 2200, 1022 gibi portlar uygundur.
S: Aynı port birden fazla hizmeti sunabilir mi?
C: Hayır — her hizmetin kendi benzersiz portu olmalıdır.
S: SSH portunu gerçekten değiştirmek gerekli mi?
C: Şiddetle önerilir — 22 numaralı porttaki toplu tarama ve brute force saldırılarını büyük ölçüde azaltır.
S: Port değiştirdikten sonra fail2ban gerekli mi?
C: Zorunlu değil, ancak ek bir koruma katmanı sağlar.
S: Yeni portla SSH istemcisinde nasıl bağlanırım?
C: -p seçeneği, örn. ssh -p 2222 user@ip-adresiniz
Güvenli bağlantılar.