Ubuntu Server ortamlarında SSH (Secure Shell) protokolü, uzak yönetim için vazgeçilmez bir araçtır.
Ubuntu Server ortamlarında SSH (Secure Shell) protokolü, uzak yönetim için vazgeçilmez bir araçtır. Ancak, internete açık sunucularda brute-force saldırıları yaygın bir tehdit oluşturur. Bu saldırılar, tekrarlanan yanlış kimlik doğrulama denemeleriyle sistem kaynaklarını tüketir ve erişimi engeller. SSH bağlantı hızını sınırlamak, bu tür tehditleri minimize etmek için etkili bir yöntemdir. Rate limiting, belirli bir süre içinde izin verilen bağlantı sayısını kısıtlayarak kötü niyetli trafiği otomatik olarak bloke eder. Bu makalede, Ubuntu Server üzerinde Fail2Ban aracını kullanarak pratik bir rate limiting çözümü ele alacağız. Adım adım kurulum, yapılandırma ve test süreçlerini inceleyerek, sunucunuzu daha güvenli hale getireceğiz.
Fail2Ban, log dosyalarını izleyerek şüpheli aktiviteleri tespit eder ve IP adreslerini firewall kurallarıyla engeller. Ubuntu Server 20.04 veya 22.04 sürümlerinde bu aracı kurmak oldukça basittir. Öncelikle, sisteminizi güncelleyin: sudo apt update && sudo apt upgrade -y komutunu çalıştırın. Ardından Fail2Ban’ı yükleyin: sudo apt install fail2ban -y. Kurulum tamamlandıktan sonra servis otomatik başlar, ancak yapılandırmayı etkinleştirmek için sudo systemctl enable fail2ban ve sudo systemctl start fail2ban komutlarını kullanın. Servis durumunu sudo systemctl status fail2ban ile doğrulayın.
Fail2Ban’ın ana yapılandırma dosyası /etc/fail2ban/jail.local olarak oluşturulmalıdır. Varsayılan jail.conf dosyasını kopyalayın: sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local. Bu dosya, genel ayarları içerir. Örneğin, ban süresini 10 dakikaya ayarlayın (bantime = 600) ve maksimum hata sayısını 5 olarak belirleyin (maxretry = 5). SSH jail’ini etkinleştirmek için [sshd] bölümünü açın ve enabled = true yapın. Değişiklikleri kaydedip Fail2Ban’ı yeniden yükleyin: sudo systemctl reload fail2ban. Bu temel kurulum, SSH loglarındaki başarısız girişimleri izlemeye başlar.
Fail2Ban, SSH loglarını /var/log/auth.log dosyasından okur. Varsayılan sshd filtre, “Failed password” ve “Invalid user” gibi kalıpları yakalar. Özel filtre eklemek için /etc/fail2ban/filter.d/sshd.local oluşturun ve regex kurallarını tanımlayın. Örneğin, failregex = ^%(__prefix_line)sFailed password for .* from <HOST> port \d+: .* \(authinfo=.*\)$ satırını ekleyin. Filtreyi test etmek amacıyla fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf komutunu kullanın; bu, loglardaki eşleşmeleri gösterir. Filtre doğrulandıktan sonra jail.local’a filter = sshd olarak belirtin. Bu ayar, yanlış pozitifleri önleyerek yalnızca gerçek tehditleri yakalar ve sunucu performansını korur.
Ban süresini (bantime) saldırı şiddetine göre ayarlayın; örneğin, 600 saniye (10 dakika) başlangıç için uygundur, ancak tekrarlanan ihlallerde artar. Findtime parametresi, maxretry hatalarının toplanacağı süreyi belirler; varsayılan 600 saniye tutun veya trafiğe göre 300’e indirin. Jail.local’da findtime = 600 ve maxretry = 3 ile agresif koruma sağlayın. Backend’i ‘auto’ olarak bırakın, böylece systemd journal veya log dosyalarını otomatik seçer. Yeniden yükleme sonrası logları izleyin: sudo fail2ban-client status sshd. Bu komut, engellenen IP’leri ve jail durumunu listeler, optimizasyon için veri sağlar.
Rate limiting’i tamamlamak için UFW (Uncomplicated Firewall) ile entegre edin. Fail2Ban varsayılan olarak iptables kullanır, ancak UFW etkinse banaction = ufw olarak ayarlayın. SSH portunu kısıtlayın: sudo ufw allow OpenSSH ve sudo ufw enable. Key-based authentication’ı zorunlu kılın; /etc/ssh/sshd_config‘da PasswordAuthentication no yapın ve sudo systemctl restart ssh ile uygulayın. Bu, rate limiting’in yükünü azaltır.
İzleme için fail2ban-client status ve sudo iptables -L f2b-sshd -n -v komutlarını düzenli kullanın. Engellenen IP’leri manuel kaldırmak için fail2ban-client set sshd unbanip IP_ADRESI uygulayın. Log rotasyonunu sağlayın ki disk alanı dolmasın. Performans testi için birden fazla SSH denemesi yapın ve ban’ı gözlemleyin. Bu bütünleşik yaklaşım, sunucunuzu brute-force’a karşı dayanıklı kılar.
Sonuç olarak, Ubuntu Server’da SSH bağlantı hızını sınırlamak, güvenlik mimarisinin temel bir parçasıdır. Fail2Ban ile hızlı kurulum ve esnek yapılandırma sayesinde, tehditleri proaktif yönetebilirsiniz. Düzenli bakım ve log analiziyle sistemi optimize edin; bu adımlar, kurumsal ortamlar için güvenilir bir koruma sağlar. Uygulamaya hemen başlayarak sunucunuzun bütünlüğünü koruyun.