Konuyu Okuyanlar: 1 Ziyaretçi

SSH Sertleştirme: Anahtar Tabanlı Giriş, Port ve Fail2ban Rehberi

SSH Sertleştirme: Anahtar Tabanlı Giriş, Port ve Fail2ban Rehberi
Selam TurkTeam,

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
  1. SSH neden hedeftir, tehdit modeli
  2. Anahtar çifti oluşturma ve sunucuya kurma
  3. sshd_config ile güvenli yapılandırma
  4. Önemli yapılandırma parametreleri referansı
  5. Fail2ban kurulumu ve sshd jail yapılandırması
  6. Doğrulama ve ileri ipuçları
  7. 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:
Kod:
ssh-keygen -t ed25519 -C "kullanici@ismakinesi"
Varsayılan olarak ~/.ssh/id_ed25519 (özel) ve id_ed25519.pub (açık) dosyaları oluşur. Parola koruması (passphrase) belirlemeniz, anahtar çalınsa bile koruma sağlar.

Açık anahtarı sunucuya kolayca kurmak için:
Kod:
ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@sunucu_ip
Bu komut, açık anahtarı sunucudaki ~/.ssh/authorized_keys dosyasına ekler. Artık anahtarla giriş yapabilmelisiniz:
Kod:
ssh kullanici@sunucu_ip
[Resim: attachment.php?aid=139]

3. sshd_config ile Güvenli Yapılandırma
Sunucuda /etc/ssh/sshd_config dosyasını düzenleyin (bir yedek alın):
Kod:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak sudo nano /etc/ssh/sshd_config
Önerilen ayarlar:
Kod:
PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes PermitEmptyPasswords no MaxAuthTries 3 X11Forwarding no AllowUsers kullanici
Değişiklikten önce söz dizimini test edin, sonra servisi yeniden başlatın:
Kod:
sudo sshd -t sudo systemctl restart ssh
Kritik uyarı: PasswordAuthentication no yapmadan önce anahtarla girebildiğinizden kesinlikle emin olun; aksi halde kendinizi kilitlersiniz. İlk bağlantıyı açık tutarak ikinci bir oturumdan test etmek güvenli bir alışkanlıktır.


4. Önemli Parametreler Referansı
PermitRootLogin no - Root ile doğrudan girişi kapatır; yönetici işleri sudo ile yapılır:
Kod:
PermitRootLogin no

PasswordAuthentication no - Parola girişini tamamen kapatır, yalnızca anahtar kalır:
Kod:
PasswordAuthentication no

MaxAuthTries - Bir bağlantıda izin verilen deneme sayısı:
Kod:
MaxAuthTries 3

AllowUsers / AllowGroups - Yalnızca belirli kullanıcı/grupların girişine izin:
Kod:
AllowUsers ahmet mehmet

Port - Standart dışı port, otomatik tarama gürültüsünü azaltır (güvenlik önlemi değil, sadece gürültü azaltma):
Kod:
Port 2222

ClientAliveInterval / ClientAliveCountMax - Atıl oturumları kapatma:
Kod:
ClientAliveInterval 300 ClientAliveCountMax 2

5. 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.
Kod:
sudo apt update sudo apt install fail2ban
Yerel ayarlarınızı varsayılanı ezmeyecek şekilde jail.local içine yazın:
Kod:
sudo nano /etc/fail2ban/jail.local
Kod:
[sshd] enabled = true maxretry = 4 findtime = 10m bantime = 1h
Burada maxretry izin verilen başarısız deneme sayısını, findtime bu denemelerin sayılacağı pencereyi, bantime engel süresini belirtir. Servisi başlatıp etkinleştirin:
Kod:
sudo systemctl enable --now fail2ban
Durumu ve engellenen IP'leri görün:
Kod:
sudo fail2ban-client status sshd
Çıktı, aktif engelleri ve toplam yakalanan deneme sayısını gösterir:
Kod:
Status for the jail: sshd |- Filter | `- Currently failed: 1 `- Actions |- Currently banned: 2 `- Banned IP list: 203.0.113.10 198.51.100.20


Bir IP'yi elle engelden çıkarmak için:
Kod:
sudo fail2ban-client set sshd unbanip 203.0.113.10

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


Ek DosyalarEkran Görüntüleri
   
Cevapla



Hızlı Menü: