Brute Force ve Parola Güvenliği
Brute force saldırılarının mantığını anlayın; güçlü parola politikaları, rate limiting, hesap kilitleme, MFA ve log analizi ile sistemlerinizi koruyun.
1. Brute Force Nedir?
Brute force, doğru kullanıcı adı veya parolayı bulmak için çok sayıda kombinasyonun sistematik şekilde denenmesidir.
Bu saldırılar web giriş ekranları, SSH, VPN, e-posta ve diğer kimlik doğrulama servislerini hedefleyebilir.
Parola denetimleri yalnızca size ait yerel laboratuvarlarda veya açıkça izin verilen sistemlerde gerçekleştirilmelidir.
2. Brute Force Türleri
| Tür | Açıklama |
|---|---|
| Classic brute force | Olası karakter kombinasyonlarını sırayla dener. |
| Dictionary attack | Hazır parola listelerindeki adayları dener. |
| Password spraying | Az sayıda yaygın parolayı çok sayıda hesapta dener. |
| Credential stuffing | Başka sızıntılardan elde edilmiş kullanıcı adı/parola çiftlerini dener. |
| Hybrid attack | Sözlük kelimelerine sayı ve sembol varyasyonları ekler. |
3. Neden Başarılı Olabilir?
- Kısa ve tahmin edilebilir parolalar
- Aynı parolanın birden fazla hesapta kullanılması
- MFA bulunmaması
- Hız sınırlaması uygulanmaması
- Hesap kilitleme politikasının olmaması
- Varsayılan kullanıcı adı ve parolalar
- Eski veya unutulmuş servis hesapları
4. Güvenli Laboratuvar Yaklaşımı
Parola güvenliği testleri gerçek servisler yerine yerel ve kontrollü bir uygulama üzerinde yapılmalıdır.
- Yerel sanal makine kullanın.
- Test hesabı oluşturun.
- Gerçek kullanıcı verisi kullanmayın.
- Küçük ve kontrollü parola listesi kullanın.
- Deneme sayısını sınırlayın.
- Snapshot veya yedek alın.
Gerçek SSH, VPN, e-posta veya web hesaplarına yönelik parola denemeleri bu dokümana dahil değildir.
5. Güvenli Laboratuvarda Brute Force Kullanımı
Brute force mantığını öğrenmek için gerçek sistemler yerine yalnızca size ait yerel bir laboratuvar servisi kullanın. Aşağıdaki örnek, 127.0.0.1 üzerinde çalışan test amaçlı bir SSH servisine karşı küçük ve kontrollü bir parola listesinin nasıl denetlendiğini gösterir.
Bu komutları yalnızca kendi bilgisayarınızda oluşturduğunuz test hesabında veya açıkça izin verilen laboratuvar ortamında kullanın.
Hydra Kurulumu
sudo apt update
sudo apt install hydra -y
Kurulumu Kontrol Etme
hydra -h
Laboratuvar Test Hesabı
Kendi Kali/Linux laboratuvarınızda yalnızca test amacıyla bir kullanıcı oluşturabilirsiniz:
sudo adduser labuser
Küçük Test Parola Listesi
Gerçek parola listeleri yerine birkaç tamamen yapay parola içeren dosya oluşturun:
printf "Test123\nLab2026\nGuvenliLab123!\n" > lab-passwords.txt
Yerel SSH Laboratuvar Testi
SSH servisi aynı makinede çalışıyorsa ve
labuser tamamen size ait bir test
hesabıysa:
hydra -l labuser -P lab-passwords.txt -t 1 127.0.0.1 ssh
| Parametre | Açıklama |
|---|---|
| -l labuser | Tek bir laboratuvar kullanıcı adını belirtir. |
| -P lab-passwords.txt | Küçük test parola dosyasını kullanır. |
| -t 1 | Paralel deneme sayısını 1 ile sınırlar. |
| 127.0.0.1 | Yalnızca yerel bilgisayarı hedefler. |
| ssh | Yerel laboratuvar SSH servisini belirtir. |
Test Sonrası Logları İnceleme
Denemelerin sunucuda nasıl kaydedildiğini görmek savunma açısından önemlidir:
sudo journalctl -u ssh --since "10 minutes ago"
Ubuntu sistemlerde başarısız girişleri ayrıca şu şekilde kontrol edebilirsiniz:
sudo grep "Failed password" /var/log/auth.log
Fail2ban ile Savunmayı Gözlemleme
sudo fail2ban-client status sshd
Bu laboratuvarın amacı parola ele geçirmek değil; tekrarlanan başarısız girişlerin loglarda nasıl göründüğünü ve Fail2ban gibi savunma mekanizmalarının nasıl tepki verdiğini gözlemlemektir.
6. Güçlü Parola Özellikleri
- En az 14–16 karakter uzunluk
- Her hesap için benzersiz parola
- Kişisel bilgi içermemesi
- Tahmin edilebilir kalıplardan kaçınma
- Parola yöneticisi kullanımı
- MFA ile destekleme
7. Parola Politikası
| Kontrol | Öneri |
|---|---|
| Minimum uzunluk | En az 14 karakter |
| Yeniden kullanım | Farklı hesaplarda aynı parola kullanılmamalı |
| Sızıntı kontrolü | Bilinen ihlal parolaları engellenmeli |
| MFA | Kritik hesaplarda zorunlu olmalı |
| Parola yöneticisi | Kurumsal olarak desteklenmeli |
| Servis hesapları | Uzun, rastgele ve düzenli döndürülen parola kullanmalı |
8. Rate Limiting
Rate limiting, belirli süre içinde yapılabilecek giriş denemesi sayısını sınırlar.
Örnek politika:
5 başarısız deneme / 10 dakika
Sonraki denemelerde artan gecikme
Şüpheli IP için geçici engelleme
IP tabanlı sınırlama tek başına yeterli değildir; kullanıcı hesabı ve cihaz sinyalleriyle birlikte uygulanmalıdır.
9. Hesap Kilitleme Politikası
Hesap kilitleme brute force denemelerini zorlaştırır, ancak kötü yapılandırılırsa hizmet reddi riskine yol açabilir.
Daha güvenli yaklaşım:
- Kısa süreli geçici kilitleme
- Artan gecikme
- Kullanıcıya güvenli bildirim
- Şüpheli oturumların izlenmesi
- Yönetici hesaplarında ek doğrulama
10. MFA Kullanımı
Çok faktörlü kimlik doğrulama, parola ele geçirilse bile hesabın korunmasına yardımcı olur.
- Kimlik doğrulama uygulaması
- Donanım güvenlik anahtarı
- Passkey
- Push onayı
- Yedek kurtarma kodları
Mümkünse SMS yerine güvenlik anahtarı, passkey veya kimlik doğrulama uygulaması kullanın.
11. Fail2ban ile SSH Savunması
Kendi Linux sunucunuzda başarısız girişleri sınırlamak için Fail2ban kullanılabilir.
Kurulum:
sudo apt update
sudo apt install fail2ban -y
Servis durumunu kontrol edin:
sudo systemctl status fail2ban
12. SSH Güvenliğini Güçlendirme
- Parola girişini kapatıp SSH anahtarı kullanın.
- Root ile doğrudan girişi kapatın.
- UFW ile erişimi belirli IP’lerle sınırlandırın.
- Fail2ban kullanın.
- Günlükleri düzenli takip edin.
SSH yapılandırma değişikliklerinden önce açık bir yedek oturum bırakın.
13. Web Uygulamasında Rate Limit
Web uygulamalarında giriş uç noktası için sunucu tarafı hız sınırlaması uygulanmalıdır.
Node.js örnek yapılandırma mantığı:
const loginLimiter = rateLimit({
windowMs: 10 * 60 * 1000,
max: 5,
standardHeaders: true,
legacyHeaders: false
});
Bu örnek yalnızca savunma yapılandırmasını göstermektedir.
14. CAPTCHA ve Ek Kontroller
CAPTCHA bazı otomatik denemeleri azaltabilir ancak tek başına yeterli değildir.
- Risk tabanlı doğrulama
- Artan gecikme
- Şüpheli cihaz kontrolü
- MFA zorunluluğu
- Bot tespit mekanizmaları
- Davranış analizi
15. Log Analizi
Brute force girişimleri loglarda tekrarlanan başarısız oturumlar olarak görülebilir.
SSH loglarını görüntülemek için:
sudo journalctl -u ssh --since "1 hour ago"
Başarısız girişleri filtrelemek için:
sudo grep "Failed password" /var/log/auth.log
16. Brute Force Belirtileri
- Kısa sürede çok sayıda başarısız giriş
- Aynı hesaba farklı IP adreslerinden denemeler
- Aynı IP’den çok sayıda kullanıcı adı denemesi
- Gece saatlerinde olağandışı giriş trafiği
- Başarısız denemelerin ardından başarılı oturum
- Beklenmeyen MFA bildirimleri
17. Alarm ve İzleme Kuralları
| Kural | Örnek eşik |
|---|---|
| Aynı hesapta başarısız giriş | 10 dakikada 5 deneme |
| Aynı IP’den farklı hesaplar | 10 dakikada 10 kullanıcı adı |
| Başarısız sonrası başarılı giriş | Yüksek öncelikli alarm |
| Yeni ülke veya cihaz | Ek doğrulama |
| MFA reddi | Art arda 3 ret sonrası inceleme |
18. Olay Sonrası Yapılacaklar
- Şüpheli hesabı geçici olarak korumaya alın.
- Aktif oturumları sonlandırın.
- Parolayı güvenli cihazdan değiştirin.
- MFA ayarlarını kontrol edin.
- Logları ve IP adreslerini inceleyin.
- Başarılı giriş olup olmadığını doğrulayın.
- Gerekirse API anahtarlarını ve oturum tokenlarını yenileyin.
- Olayı kayıt altına alın.
19. Servis Hesapları
Servis hesapları sıkça unutulan ancak yüksek risk taşıyan hesaplardır.
- İnsan kullanıcılarından ayrı tutulmalı
- Uzun ve rastgele parola kullanmalı
- Mümkünse parola yerine sertifika veya managed identity kullanılmalı
- Giriş yapılabilen sistemler sınırlandırılmalı
- Düzenli olarak gözden geçirilmeli
20. Parola Yöneticisi
Parola yöneticileri her hesap için uzun ve benzersiz parola üretmeye yardımcı olur.
Faydaları:
- Parola tekrarını azaltır.
- Rastgele parola üretir.
- Alan adı eşleşmesiyle phishing riskini azaltabilir.
- Güvenli paylaşım imkânı sunabilir.
21. Passkey Kullanımı
Passkey, parola yerine cihaz tabanlı güçlü kimlik doğrulama sağlar.
- Phishing’e karşı daha dayanıklıdır.
- Parola tekrarını ortadan kaldırır.
- Brute force denemelerini büyük ölçüde etkisiz hale getirir.
- Cihaz biyometrisi veya PIN ile korunabilir.
22. Geliştirici Kontrol Listesi
- Giriş uç noktasına rate limiting uygulayın.
- MFA ve passkey desteği ekleyin.
- Genel hata mesajı kullanın.
- Kullanıcı adı varlığını ele vermeyin.
- Başarısız girişleri loglayın.
- Şüpheli davranış için alarm üretin.
- Parolaları Argon2id veya bcrypt ile saklayın.
- Oturumları güvenli şekilde yönetin.
23. Yaygın Savunma Hataları
Yalnızca hesap kilitleme kullanmak
Saldırganlar hesapları kilitleyerek hizmet reddine neden olabilir. Artan gecikme ve risk tabanlı yaklaşım daha dengelidir.
Yalnızca IP engellemek
Dağıtık kaynaklar ve proxy ağları IP tabanlı engellemeyi aşabilir.
MFA’yı tüm hesaplarda zorunlu tutmamak
Özellikle yönetici ve uzaktan erişim hesaplarında MFA zorunlu olmalıdır.
Logları izlememek
Kayıt tutmak yeterli değildir; alarm ve düzenli inceleme gerekir.
24. Hızlı Savunma Özeti
| Risk | Savunma |
|---|---|
| Çok sayıda parola denemesi | Rate limiting ve artan gecikme |
| Parola sızıntısı | Benzersiz parola ve MFA |
| Password spraying | Hesap ve IP davranış analizi |
| Credential stuffing | Sızıntı parola kontrolü ve passkey |
| SSH brute force | SSH anahtarı, UFW ve Fail2ban |
| Yönetici hesapları | MFA, IP kısıtlaması ve alarm |
25. Sonuç
Bu dokümanda brute force saldırılarının türleri, güçlü parola politikaları, rate limiting, hesap kilitleme, MFA, Fail2ban ve log analizi ele alındı.
En etkili savunma; benzersiz güçlü parolalar, MFA veya passkey, hız sınırlama ve düzenli olay izleme kontrollerinin birlikte uygulanmasıdır.