SSH, uzak sunucu yönetiminin bel kemiğidir; aynı nedenle de saldırganların en çok kaba kuvvet denediği servislerden biridir. İnternete açık bir SSH servisi, saatler içinde otomatik parola denemeleriyle dolar. Bu rehberde SSH'ı adım adım sertleştiriyoruz: anahtar tabanlı kimlik doğrulama, parola girişinin kapatılması, güvenli sunucu yapılandırması ve Fail2ban ile otomatik engelleme. Tüm adımlar kendi sunucunuz içindir.
Konuda Anlatılacaklar
- SSH neden hedeftir, tehdit modeli
- Anahtar çifti oluşturma ve sunucuya kurma
- sshd_config ile güvenli yapılandırma
- Önemli yapılandırma parametreleri referansı
- Fail2ban kurulumu ve sshd jail yapılandırması
- Doğrulama ve ileri ipuçları
- Sonuç, kaynakça ve yasal uyarı
1. SSH Neden Hedeftir?
SSH genelde 22 portunda, internete açık çalışır ve doğrudan kabuk erişimi sağlar. Bu yüzden botnet'ler sürekli olarak yaygın kullanıcı adları (root, admin, ubuntu) ve zayıf parolalarla otomatik deneme yapar. Savunmanın özü iki ilkedir: tahmin edilebilir kimlik doğrulamayı (parola) ortadan kaldırmak ve kötü niyetli deneme trafiğini otomatik engellemek. Anahtar tabanlı giriş birincisini, Fail2ban ikincisini çözer.
2. Anahtar Çifti Oluşturma ve Kurma
İstemci makinenizde modern ve güçlü bir anahtar türü olan ed25519 ile çift oluşturun:
ssh-keygen -t ed25519 -C "kullanici@ismakinesi"Açık anahtarı sunucuya kolayca kurmak için:
ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@sunucu_ipssh kullanici@sunucu_ip3. sshd_config ile Güvenli Yapılandırma
Sunucuda /etc/ssh/sshd_config dosyasını düzenleyin (bir yedek alın):
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_configPermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
MaxAuthTries 3
X11Forwarding no
AllowUsers kullanicisudo sshd -t
sudo systemctl restart ssh4. Önemli Parametreler Referansı
PermitRootLogin no - Root ile doğrudan girişi kapatır; yönetici işleri sudo ile yapılır:
PermitRootLogin noPasswordAuthentication no - Parola girişini tamamen kapatır, yalnızca anahtar kalır:
PasswordAuthentication noMaxAuthTries - Bir bağlantıda izin verilen deneme sayısı:
MaxAuthTries 3AllowUsers / AllowGroups - Yalnızca belirli kullanıcı/grupların girişine izin:
AllowUsers ahmet mehmetPort - Standart dışı port, otomatik tarama gürültüsünü azaltır (güvenlik önlemi değil, sadece gürültü azaltma):
Port 2222ClientAliveInterval / ClientAliveCountMax - Atıl oturumları kapatma:
ClientAliveInterval 300
ClientAliveCountMax 25. Fail2ban ile Otomatik Engelleme
Fail2ban, log dosyalarını izleyip belirli sayıda başarısız girişten sonra kaynak IP'yi güvenlik duvarında geçici olarak engeller.
sudo apt update
sudo apt install fail2bansudo nano /etc/fail2ban/jail.local[sshd]
enabled = true
maxretry = 4
findtime = 10m
bantime = 1hsudo systemctl enable --now fail2bansudo fail2ban-client status sshdStatus for the jail: sshd
|- Filter
| `- Currently failed: 1
`- Actions
|- Currently banned: 2
`- Banned IP list: 203.0.113.10 198.51.100.20Bir IP'yi elle engelden çıkarmak için:
sudo fail2ban-client set sshd unbanip 203.0.113.106. Doğrulama ve İleri İpuçları
- Yapılandırmayı doğrulayın: Yeni bir terminalden anahtarla bağlanın; parola istenmemsini ve root girişinin reddedildiğini kontrol edin.
- 2FA ekleyin: Kritik sunucularda Google Authenticator PAM modülüyle anahtar + TOTP ikili doğrulama kurulabilir.
- Güvenlik duvarı: UFW/nftables ile SSH portunu yalnızca gereken ağlara açın; mümkünse bir VPN arkasına alın.
- Anahtar hijyeni: Özel anahtar dosyası 600 izinli olmalı ve bir passphrase ile korunmalı; eski/yetkisiz anahtarları authorized_keys'ten temizleyin.
- İzleme: Başarılı girişleri de izleyin; beklenmedik bir kaynaktan başarılı giriş, en önemli alarmdır.
6.1. Neden Anahtar Tabanlı Giriş Parolayı Yener?
Anahtar tabanlı kimlik doğrulamanın parolaya üstünlüğünü anlamak, bu sertleştirmenin neden bu kadar etkili olduğunu kavramanın anahtarıdır. Parola, tahmin edilebilen ve tekrar kullanılan bir sırdır; bir botnet saniyede yüzlerce parolayı deneyebilir ve zayıf bir parola er ya da geç bulunur. SSH anahtarı ise asimetrik kriptografiye dayanır: sunucu yalnızca açık anahtarı tutar, özel anahtar hiçbir zaman ağdan geçmez. Bir ed25519 anahtarını kaba kuvvetle bulmak pratikte imkansızdır. Dolayısıyla PasswordAuthentication no yaptığınız anda, saldırganların en sık kullandığı saldırı yüzeyini tamamen ortadan kaldırmış olursunuz; loglardaki başarısız giriş selinin aniden kesilmesi bunun gözle görülür kanıtıdır.
Bu noktada sık sorulan bir soru şudur: "Anahtar giriş zaten bu kadar güçlüyse Fail2ban'a ne gerek var?" Cevap katmanlı savunmadır. Fail2ban yalnızca parola denemelerini değil, portunuzu sürekli yoklayan gürültülü tarayıcıları da engelleyerek log kirliliğini ve kaynak tüketimini azaltır; ayrıca anahtar girişe geçişi henüz tamamlamadığınız veya bir servisin geçici olarak parola kullandığı durumlarda ek bir güvenlik ağı sağlar. Güvenlik tek bir mükemmel önleme değil, birbirini tamamlayan birden çok katmana dayanır.
Son bir pratik tavsiye: standart dışı port kullanımını bir güvenlik önlemi sanmayın. Portu 2222'ye almak otomatik tarama gürültüsünü azaltır, ancak hedefli bir saldırgan birkaç saniyede gerçek portu bulur. Gerçek güvenliği anahtar tabanlı giriş, root erişiminin kapatılması, güvenlik duvarı kısıtlaması ve mümkünse VPN sağlar; port değişikliği yalnızca bunların üstüne eklenen küçük bir konfordur, onların yerine geçmez.
Sonuç
SSH sertleştirmenin özü nettir: parolayı anahtarla değiştir, root ve gereksiz kullanıcı girişini kapat, deneme trafiğini Fail2ban ile otomatik engelle ve servisi güvenlik duvarı/VPN ile sınırla. Bu katmanlar birlikte, internete açık bir SSH'ı kaba kuvvete karşı pratikte işe yaramaz hale getirir. Her değişiklikten önce yedek alın, söz dizimini test edin ve kendinizi kilitlemeyin.
Kaynakça
- OpenSSH Resmi Kılavuzu - https://www.openssh.com/manual.html
- sshd_config(5) Man Sayfası - https://man.openbsd.org/sshd_config.5
- ssh-keygen(1) Man Sayfası - https://man.openbsd.org/ssh-keygen.1
- Fail2ban Resmi Wiki - https://github.com/fail2ban/fail2ban/wiki
- Debian Wiki: Fail2ban - https://wiki.debian.org/fail2ban
Yasal Uyarı
Alıntı:Bu yapılandırmalar yalnızca kendi sunucularınızda veya yönetim yetkiniz olan sistemlerde uygulanmalıdır. Başkasının sistemine izinsiz erişim Türk Ceza Kanunu 243-245. maddeleri kapsamında suçtur.
Yasal uyarı: Bu içerik eğitim amaçlıdır. Yalnızca kendi sistemlerinizde veya yazılı izin aldığınız hedeflerde uygulayın (TCK 243-245).