Fail2Ban ile WordPress Giriş Denemelerini Bloklama

WordPress tabanlı web siteleri, brute force saldırıları karşısında sıklıkla hedef haline gelir.

WordPress tabanlı web siteleri, brute force saldırıları karşısında sıklıkla hedef haline gelir. Saldırganlar, wp-login.php sayfasına yönelik tekrarlı giriş denemeleriyle yönetici hesaplarını ele geçirmeye çalışır. Bu tür tehditleri otomatik olarak engellemek için Fail2Ban gibi güçlü bir araç kullanmak, sunucu güvenliğini önemli ölçüde artırır. Fail2Ban, sistem loglarını izleyerek şüpheli aktiviteleri tespit eder ve ilgili IP adreslerini firewall kurallarıyla bloke eder. Bu makalede, Fail2Ban’ı kurumsal bir yaklaşımla WordPress giriş denemelerine karşı yapılandırarak pratik bir koruma stratejisi oluşturacağız. Adım adım rehberlik ile, sunucunuzu hızlıca güvence altına alabileceksiniz.

Fail2Ban Nedir ve Nasıl Çalışır?

Fail2Ban, açık kaynaklı bir intrusion prevention yazılımıdır ve özellikle Linux tabanlı sunucularda SSH, web sunucuları gibi servisleri korumak için tasarlanmıştır. Temel çalışma prensibi, log dosyalarını gerçek zamanlı olarak taramak ve belirli regex desenlerine uyan hatalı giriş denemelerini yakalamaktır. Örneğin, Apache veya Nginx loglarında tekrarlanan 401 veya 403 hataları tespit edildiğinde, Fail2Ban otomatik olarak iptables veya firewalld gibi araçlarla IP’yi belirlenen süre boyunca engeller. Bu sayede, manuel müdahale gerektirmeden binlerce denemeyi saniyeler içinde bloke edebilirsiniz.

WordPress bağlamında, Fail2Ban’ın gücü, modüler yapısından gelir. “Jail” adı verilen yapılandırma birimleri ile her servis için ayrı filtreler tanımlanır. Filtreler, log satırlarında “Failed password” veya “Invalid username” gibi ifadeleri arar. Bloklama süresi (bantime), maksimum hata sayısı (maxretry) ve izlenecek log yolu gibi parametreler özelleştirilebilir. Kurumsal ortamlarda, bu araç e-posta bildirimleri ve whitelisting ile entegre edilerek tam bir güvenlik katmanı oluşturur. Fail2Ban, kaynak tüketimini minimum tutarken yüksek etkinlik sağlar, böylece performans odaklı siteler için idealdir.

Fail2Ban Kurulumu ve Temel Ayarlar

Ubuntu veya Debian tabanlı bir sunucuda Fail2Ban kurmak oldukça basittir. Öncelikle paketi güncelleyin: sudo apt update && sudo apt install fail2ban -y. Kurulum tamamlandıktan sonra, servis otomatik başlar. Ana yapılandırma dosyası /etc/fail2ban/jail.local olup, varsayılan ayarları buraya kopyalayıp düzenleyin. Örneğin, backend’i “auto” olarak bırakın ve bantime’ı 10 dakika (600 saniye) olarak ayarlayın. Whitelist sekmesinde güvenilir IP’lerinizi ekleyin, böylece kendi erişiminiz kesilmez.

Servisi yönetmek için systemd komutlarını kullanın: sudo systemctl enable fail2ban ile açılışta başlatın ve sudo systemctl status fail2ban ile durumu kontrol edin. Temel jail’leri etkinleştirmek üzere jail.local dosyasında [sshd] gibi bölümleri uncomment edin. Bu adımlar, Fail2Ban’ı hazır hale getirir ve WordPress’e özgü filtreler için zemin hazırlar. Kurulum sonrası logları /var/log/fail2ban.log üzerinden izleyerek her şeyin düzgün çalıştığını doğrulayın.

WordPress wp-login.php için Özel Jail Yapılandırması

Filtre Dosyasını Oluşturma

WordPress giriş denemelerini yakalamak için özel bir filtre oluşturun. /etc/fail2ban/filter.d/wordpress.conf dosyasını oluşturun ve şu regex desenini ekleyin:

[Definition]
failregex = ^<HOST> .* "(GET|POST) /wp-login.php"
           ^<HOST> .* "POST /wp-login.php" 401

Bu desen, wp-login.php’ye yapılan istekleri ve 401 hatalarını yakalar. <HOST> placeholder’ı IP adresini otomatik çeker. Dosyayı kaydedin ve regex’in doğruluğunu fail2ban-regex /var/log/apache2/access.log /etc/fail2ban/filter.d/wordpress.conf ile test edin. Test çıktısında eşleşen satır sayısını göreceksiniz. Nginx kullanıyorsanız, log yolunu /var/log/nginx/access.log olarak uyarlayın. Bu filtre, başarısız giriş denemelerini hassasiyetle tespit eder ve false positive’leri minimize eder.

Jail Dosyasını Tanımlama

/etc/fail2ban/jail.d/wordpress.local dosyasını oluşturun ve şu içeriği ekleyin:

[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/apache2/access.log
maxretry = 5
bantime = 3600
findtime = 600

Burada maxretry=5, 10 dakikada 5 başarısız denemeyi bloke eder; bantime 1 saatlik engelleme sağlar. Port http/https olarak tanımlanır. Kaydetikten sonra sudo fail2ban-client reload ile jail’i yükleyin. Durumu sudo fail2ban-client status wordpress ile sorgulayın; aktif jail’ler ve banned IP’leri listeler. Bu yapılandırma, WordPress’in en zayıf noktası olan login sayfasını korur.

Test Etme ve İzleme

Yapılandırmayı test etmek için başka bir IP’den wp-login.php’ye 5’ten fazla hatalı giriş yapın veya fail2ban-client set wordpress banip TEST_IP ile manuel ban uygulayın. iptables kurallarında (sudo iptables -L f2b-wordpress -n) IP’nin bloklandığını doğrulayın. İzleme için fail2ban-client status ve log tail’ini kullanın: tail -f /var/log/fail2ban.log. E-posta bildirimleri için action.d/mail.conf’u düzenleyin ve destemail parametresini ekleyin.

Gelişmiş kullanımda, findtime’ı kısaltarak agresif saldırıları hızlı bloke edin veya chain’i INPUT olarak değiştirin. Düzenli olarak fail2ban-client unban --all ile eski ban’leri temizleyin. Bu adımlar, Fail2Ban’ı production ortamında güvenilir kılar.

Sonuç olarak, Fail2Ban ile WordPress giriş denemelerini bloklamak, sunucu güvenliğinizi proaktif bir seviyeye taşır. Düzenli log incelemeleri ve yapılandırma güncellemeleriyle, brute force saldırılarını minimum kayıpla savuşturabilirsiniz. Bu entegrasyonu diğer güvenlik önlemleriyle birleştirerek, sitenizi kapsamlı koruma altına alın ve kesintisiz hizmet sunmaya odaklanın.

Kategori: Güvenlik
Yazar: Lorem
çerik: 641 kelime
Okuma Süresi: 5 dakika
Zaman: Bugün
Yayım: 24-02-2026
Güncelleme: 24-02-2026